Get a check's result
GET /v4/eligibility-checks/{id}: statuses, eligible_responses, other_responses and policy_authority.
GET /v4/eligibility-checks/{id} returns the check, its status and, once finished, every payer
answer. Poll every 5 to 10 seconds and stop at a final status.
status | Meaning | Final? |
|---|---|---|
IN_QUEUE | Accepted, waiting to start | No |
NAVIGATING_WEBSITE, CHECKING_ELIGIBILITY, EXTRACTING_DATA, PROCESSING | Running at the payer | No |
COMPLETE | Finished. Read eligible_responses and other_responses | Yes |
FAILED | Could not get an answer from the payer | Yes |
CANCELLED | Cancelled at the payer | Yes |
Response: 200
{
"id": "3f6c2a9e-...",
"status": "COMPLETE",
"created_at": "2026-10-17T09:12:03",
"updated_at": "2026-10-17T09:12:41",
"request": { "tpa_name": "INS026", "id_type": "EMIRATESID", "visit_type": "OUTPATIENT" },
"eligible_responses": [
{
"id": "3f6c2a9e-...:INS026",
"tpa_id": "INS026",
"tpa_name": "Daman- National Health Insurance Company - INS026",
"status": "found",
"is_eligible": true,
"message": null,
"screenshot_url": "https://...",
"completed_at": "2026-10-17T09:12:41",
"data": { "...": "the parsed payer answer" }
}
],
"other_responses": [],
"policy_authority": "DHA"
}- Every payer answer is in exactly one of the two lists:
eligible_responseswhen the payer said the patient is eligible,other_responsesotherwise (not eligible, member not found, or the payer could not be checked). Join the two for every answer. A single-payer check has one row, a search-all check has one row per payer, and a check that ran under several visit types has one row per visit type. - Both lists are empty while the check runs.
- A payer failure is still a finished check. For example an
invalid_credentialsanswer comes back as aCOMPLETEcheck with that row inother_responses, andpolicy_authorityisnull. Read the row'sstatus; an emptyeligible_responsesis not, by itself, a not-eligible answer. requestis your request as it was stored.- There is no
resultand noresponsesfield in v4. - A check that belongs to another clinic returns 404
CHECK_NOT_FOUND, the same as an id that does not exist.
Each row has the same fields, whatever kind of check it came from:
| Field | Notes |
|---|---|
id | The answer's own id. null on a search-all row. |
tpa_id | The payer code, e.g. TPA002. Branch on this one. |
tpa_name | The payer's display label, e.g. NEXTCARE ARAB GULF HEALTH SERVICES - TPA002. It is not the code you sent. |
status | The payer's outcome: found, member_not_found, invalid_credentials and the others on Result status. A search-all row can also read tpa_not_configured or delegated_to_search_all_pool. |
is_eligible | true only when the payer said eligible |
message | What the payer or the check reported, or null |
screenshot_url | A link to the screenshot of the payer's page, or null |
completed_at | When this payer answered |
data | The parsed payer answer: the same object as v3's eligibility_result.data_dump.data (or aggregated_results[].data on a search-all), without copay_analysis. Your parsing of that object carries over. |
matched_identifier, identifier_attempts | Only on a check with several IDs; see Several IDs for one patient |
policy_authorityis the health regulator the patient's policy falls under:DHA(Dubai),DOH(Abu Dhabi),MOH(Northern Emirates) orNot Mentionedwhen the payer does not state it. It is the same value asdata.policy_network.policy_authorityon the payer's row, lifted to the top so you do not have to dig for it. It isnullwhile the check runs, when the answer has no authority, and on a search-all check, where each payer's value stays in its own row'sdata.