Look up an author or book
Resolves an author or book name to the catalog IDs that search filters take. Returns up to five candidates with the author’s death year (AH) and a match score.
/catalog/lookupAuthorizationBearer token · headerrequiredAn API key from qaf.ai Settings › API keys.
typestringrequiredWhether the name is an author or a book.
authorbookquerystringrequiredThe name to resolve, in Arabic or English.
localestringLanguage of the candidate labels; no other is returned.
arenThe candidates for the name.
candidatesobject[]requiredUp to five candidates.
Show propertiesHide properties
objecttypestringrequiredidintegerrequiredAuthor ID, for filters.authorIds.
labelstringrequiredThe author's name in the requested locale.
deathYearAHinteger | nullrequiredThe author's death year in AH, when known.
Show propertiesHide properties
integernulldeathInexactLabelstring | nullrequiredA label for an approximate or unknown death year, when deathYearAH is missing or inexact.
Show propertiesHide properties
stringnullmatchScorenumberrequiredHow closely the name matches the query, from 0 to 1; higher is closer.
typestringrequiredidstring<uuid>requiredBook ID, for filters.bookIds.
labelstringrequiredThe book's title in the requested locale.
authorIdintegerrequiredThe author's ID, for filters.authorIds.
authorLabelstringrequiredThe author's name in the requested locale.
deathYearAHinteger | nullrequiredThe author's death year in AH, when known.
Show propertiesHide properties
integernulldeathInexactLabelstring | nullrequiredA label for an approximate or unknown death year, when deathYearAH is missing or inexact.
Show propertiesHide properties
stringnullcategoryIdintegerrequiredThe book's genre ID. Search filters take the genre's slug.
matchScorenumberrequiredHow closely the name matches the query, from 0 to 1; higher is closer.
The API key is missing, invalid or revoked.
codestringrequiredUNAUTHORIZEDstatusintegerrequiredmessagestringrequiredThe key's account can't use the API.
codestringrequiredFORBIDDENstatusintegerrequiredmessagestringrequiredA 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