POST /api/ifixit/guides
Price: 10 credits
Get one iFixit repair guide with its full step-by-step instructions
Use this when you already have a guide id or a guide page URL and need the actual repair instructions: every step with its text lines, photos and reader comments, plus the tools and parts the guide calls for. The slug inside a guide URL is decorative — the trailing number decides which guide comes back, so a URL whose slug names a different device still resolves to the number. Translations are separate revisions: pass language to get the translated steps, and read available_languages to learn which translations exist. To find a guide from a keyword or a device name, search first. A guide can genuinely own no steps of its own when its whole procedure lives in a chain of other guides it depends on: for that case steps carries the combined chain's steps (note their ids then belong to those other guides) instead of an empty list, and prerequisites lists which guides those are.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)guide string required — Guide id, or the URL of a guide page (examples: "145948", "https://www.ifixit.com/Guide/iPhone+13+Battery+Replacement/145948"; minLength: 1)language string nullable — Return the translation written in this language instead of the original (one of: "en", "de", "es", "fr", "it", "jp", "ko", "nl", "pt", "ru", "tr", "zh")@type string (default: "IfixitGuide")id string requiredname string requiredurl string nullablesummary string nullablesubject string nullablecategory string nullableguide_type string nullabledifficulty string nullabletime_required string nullabletime_required_min_seconds integer nullabletime_required_max_seconds integer nullableintroduction string nullableintroduction_html string nullableconclusion string nullableconclusion_html string nullablelanguage string nullableavailable_languages array (default: [])is_public boolean nullableis_machine_translated boolean nullablecreated_at integer nullablepublished_at integer nullablemodified_at integer nullableprerequisites_modified_at integer nullablerevision_id string nullableimage string nullableintro_video_url string nullablefeatured_document_id string nullablefeatured_document_embed_url string nullablefeatured_document_thumbnail_url string nullableauthor object nullable@type string (default: "IfixitAuthor")id string requiredname string nullablealias string nullableurl string nullableimage string nullablereputation integer nullablejoined_at integer nullablecontribution_percent number nullableteam_ids array (default: [])steps array (default: [])@type string (default: "IfixitGuideStep")id string requiredorder integer nullablename string nullablerevision_id string nullablemedia_type string nullablelines array (default: [])@type string (default: "IfixitGuideStepLine")text string nullabletext_html string nullablebullet string nullablelevel integer nullableimages array (default: [])video object nullable@type string (default: "IfixitStepVideo")id string requiredfilename string nullableduration_seconds number nullablewidth integer nullableheight integer nullableimage string nullablesources array (default: [])comments array (default: [])@type string (default: "IfixitComment")id string requiredtext string nullabletext_html string nullableheading string nullablerating integer nullablestatus string nullablecontext string nullablecontext_id string nullableparent_id string nullablelocale string nullablecreated_at integer nullablemodified_at integer nullableauthor object nullable (see schema IfixitAuthor)replies array (default: [])tools array (default: [])@type string (default: "IfixitGuideItem")name string nullableurl string nullablewiki_name string nullablewiki_url string nullableimage string nullablequantity integer nullablenotes string nullableitem_type string nullableis_optional boolean nullableis_featured boolean nullableparts array (default: [])@type string (default: "IfixitGuideItem")name string nullableurl string nullablewiki_name string nullablewiki_url string nullableimage string nullablequantity integer nullablenotes string nullableitem_type string nullableis_optional boolean nullableis_featured boolean nullabledocuments array (default: [])@type string (default: "IfixitDocument")id string requiredname string nullablefilename string nullableurl string nullabledownload_url string nullableextension string nullablepage_count integer nullablesize integer nullablecreated_at integer nullableimage string nullableprerequisites array (default: [])@type string (default: "IfixitGuidePreview")id string requiredname string nullableurl string nullablesummary string nullablesubject string nullablecategory string nullableguide_type string nullabledifficulty string nullabletime_required_max integer nullablelocale string nullableis_public boolean nullableimage string nullableflags array (default: [])author_id string nullableauthor_name string nullablemodified_at integer nullablerevision_id string nullablecomments array (default: [])@type string (default: "IfixitComment")id string requiredtext string nullabletext_html string nullableheading string nullablerating integer nullablestatus string nullablecontext string nullablecontext_id string nullableparent_id string nullablelocale string nullablecreated_at integer nullablemodified_at integer nullableauthor object nullable@type string (default: "IfixitAuthor")id string requiredname string nullablealias string nullableurl string nullableimage string nullablereputation integer nullablejoined_at integer nullablecontribution_percent number nullableteam_ids array (default: [])replies array (default: [])flags array (default: [])@type string (default: "IfixitFlag")code string requiredname string nullabletext string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — No guide exists with that id. Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.