Read a passage
Returns a passage by ID, with up to radius neighbouring passages on each side, in reading order. Neighbours carry their own IDs, so you can keep reading from either end.
/passages/{id}AuthorizationBearer token · headerrequiredAn API key from qaf.ai Settings › API keys.
idstring<uuid>requiredA passage ID from search results or from another passage's neighbours.
radiusintegerNeighbouring passages to include on each side.
localestringLanguage for book and author names; Arabic names are always included.
arenThe passage and its neighbours.
idstring<uuid>requiredStable passage ID. Read it with GET /passages/{id}, or skip it in a later search with excludeIds.
titlestringrequiredBook, author and printed page.
urlstring<uri>requiredOpens the printed page in the Turath reader; cite it.
textstringrequiredThe passage's Arabic text as printed in the edition, with vowel marks where the edition has them.
footnotesstringpagesobject[]requiredPrinted volume and page numbers the passage spans.
Show propertiesHide properties
objectvolstring | nullrequiredShow propertiesHide properties
stringnullpagenumber | nullrequiredShow propertiesHide properties
numbernullbookobjectrequiredShow propertiesHide properties
idstring<uuid>requiredtitlestringrequiredtitleArabicstringrequiredauthorobjectrequiredShow propertiesHide properties
idintegerrequirednamestringrequirednameArabicstringrequiredversionIdintegerrequiredThe printed edition the passage comes from.
sequenceNumberintegerrequiredPosition within the edition.
beforeobject[]requiredPreceding passages, in reading order.
Show propertiesHide properties
objectidstring<uuid>requiredStable passage ID. Read it with GET /passages/{id}, or skip it in a later search with excludeIds.
titlestringrequiredBook, author and printed page.
urlstring<uri>requiredOpens the printed page in the Turath reader; cite it.
textstringrequiredThe passage's Arabic text as printed in the edition, with vowel marks where the edition has them.
footnotesstringpagesobject[]requiredPrinted volume and page numbers the passage spans.
Show propertiesHide properties
objectvolstring | nullrequiredShow propertiesHide properties
stringnullpagenumber | nullrequiredShow propertiesHide properties
numbernullbookobjectrequiredShow propertiesHide properties
idstring<uuid>requiredtitlestringrequiredtitleArabicstringrequiredauthorobjectrequiredShow propertiesHide properties
idintegerrequirednamestringrequirednameArabicstringrequiredversionIdintegerrequiredThe printed edition the passage comes from.
sequenceNumberintegerrequiredPosition within the edition.
afterobject[]requiredFollowing passages, in reading order.
Show propertiesHide properties
objectidstring<uuid>requiredStable passage ID. Read it with GET /passages/{id}, or skip it in a later search with excludeIds.
titlestringrequiredBook, author and printed page.
urlstring<uri>requiredOpens the printed page in the Turath reader; cite it.
textstringrequiredThe passage's Arabic text as printed in the edition, with vowel marks where the edition has them.
footnotesstringpagesobject[]requiredPrinted volume and page numbers the passage spans.
Show propertiesHide properties
objectvolstring | nullrequiredShow propertiesHide properties
stringnullpagenumber | nullrequiredShow propertiesHide properties
numbernullbookobjectrequiredShow propertiesHide properties
idstring<uuid>requiredtitlestringrequiredtitleArabicstringrequiredauthorobjectrequiredShow propertiesHide properties
idintegerrequirednamestringrequirednameArabicstringrequiredversionIdintegerrequiredThe printed edition the passage comes from.
sequenceNumberintegerrequiredPosition within the edition.
The API key is missing, invalid or revoked.
codestringrequiredUNAUTHORIZEDstatusintegerrequiredmessagestringrequiredThe key's account can't use the API.
codestringrequiredFORBIDDENstatusintegerrequiredmessagestringrequiredNo passage has this ID.
codestringrequiredNOT_FOUNDstatusintegerrequiredmessagestringrequiredA field is invalid. data.fieldErrors lists the problems by field.
codestringrequiredINPUT_VALIDATION_FAILEDstatusintegerrequiredmessagestringrequireddataobjectShow propertiesHide properties
formErrorsstring[]requiredfieldErrorsobjectrequiredToo many requests; data.reason says which limit was reached. For minute, the account's requests per minute, retry after Retry-After seconds. For day, the account's daily search cap, Retry-After is the time until the cap resets. For invalid_keys, the key doesn't exist or was revoked and this address has sent too many such keys, so fix the key rather than retrying. The X-RateLimit headers describe the account's minute window, so an invalid_keys refusal, which comes before any key is known, has none.
codestringrequiredRATE_LIMITEDstatusintegerrequiredmessagestringrequireddataobjectShow propertiesHide properties
retryAfterintegerrequiredSeconds to wait.
reasonstringrequiredWhich limit was reached: minute, the account's requests per minute; day, its searches per day; or invalid_keys, a key that doesn't exist or was revoked, from an address that has sent too many such keys.
minutedayinvalid_keysSomething went wrong on our side.
codestringrequiredINTERNAL_SERVER_ERRORstatusintegerrequiredmessagestringrequiredQaf could not complete the request in time, or a service it relies on is unavailable. Retry shortly.
codestringrequiredSERVICE_UNAVAILABLEstatusintegerrequiredmessagestringrequired