Eligibility
List eligibility checks
GET/api/v1/eligibility
The checks of the key's organization in the key's mode, newest first, as summaries (without the request and the benefits; read one check for those). Filter by office, coverage status, outcome, creation time, the request or Idempotency-Key that made a check, your own tenant_reference, or the check it corrects.
Needs a key with read permission.
Request
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | How many items to return, from 1 to 100. Default 25.At least 1.At most 100. |
| cursor | string | optional | The next_cursor of the previous page, to get the page after it. Opaque: pass it back unchanged. |
| office_id | string | optional | Only checks made for this office. |
| status | string | optional | Only checks with this coverage status.One of: `active`, `inactive`, `unknown`. |
| outcome | string | optional | Only checks that ended this way.One of: `answered`, `rejected`, `payer_unavailable`, `error`. |
| created_after | string (date-time) | optional | Only checks created after this instant (ISO 8601 with an offset, such as 2026-10-01T00:00:00Z). |
| request_id | string | optional | Only the check made by this API request (the x-request-id of its response, req_...). |
| idempotency_key | string | optional | Only the checks made with this Idempotency-Key. |
| parent_id | string | optional | Only the checks that correct this one (elg_...). |
| tenant_reference | string | optional | Only the checks sent with this tenant_reference (your own reference for the check).At most 255 characters. |
Response
A page of check summaries. Status 200.
| Name | Type | Description |
|---|---|---|
| data | array of object | |
| data[].id | string | An ID that starts with elg_. |
| data[].object | string | Always `eligibility_check`. |
| data[].office_id | string | An ID that starts with off_. |
| data[].patient_id | string or null | The patient this is about (pat_...) in the patient directory: the dependent when there is one, else the subscriber. Set by Claim House when a check completes or a claim's patient is written; null while a check is pending, and when the patient has no date of birth or a name with no letters or digits to compare. |
| data[].payer | object | |
| data[].payer.id | string | An ID that starts with pyr_. |
| data[].payer.payer_id | string | The payer's own payer ID. |
| data[].payer.name | string | |
| data[].state | string | One of: `pending`, `completed`. |
| data[].outcome | string or null | How the check ended; null while pending.One of: `answered`, `rejected`, `payer_unavailable`, `error`. |
| data[].status | string or null | The coverage status: active, inactive or unknown; null when there is no answer.One of: `active`, `inactive`, `unknown`. |
| data[].billing | object or null | Null while the check is pending: it has no usage record yet. |
| data[].billing.charged | boolean | |
| data[].billing.state | string | One of: `billable`, `not_billable`. |
| data[].billing.reason | string | One of: `test_mode`, `answered`, `payer_rejected`, `payer_side_rejection`, `payer_unavailable`, `network_error`, `internal_error`, `cache_hit`. |
| data[].billing.label | string | Why the check was or was not charged, in a sentence. |
| data[].cache | object | |
| data[].cache.state | string | One of: `fresh`, `hit`. |
| data[].cache.source_id | string or null | An ID that starts with elg_. |
| data[].parent_id | string or null | The rejected check this one corrects. |
| data[].request_id | string or null | The API request that made the check (the x-request-id of its response); null for a check made in the dashboard. |
| data[].idempotency_key | value | The Idempotency-Key the check was sent with. |
| data[].source | object or null | |
| data[].source.network | value | |
| data[].source.latency_ms | integer or null | At least -9007199254740991. |
| data[].source.completed_at | string (date-time) | |
| data[].tenant_reference | value | Your own reference, sent with the check. |
| data[].created_at | string (date-time) | |
| next_cursor | value | Pass as cursor to get the next page; null when there is no next page. |
Errors
| HTTP status | Code | What it means |
|---|---|---|
| 401 | UNAUTHORIZED | A valid API key is required. Send it as "Authorization: Bearer <key>". |
| 403 | PERMISSION_DENIED | This API key is not allowed to do that. |
| 422 | INVALID_REQUEST | The request is not valid. |
| 504 | TIMEOUT | The request took too long to finish. It may still have taken effect: look it up before sending it again with a new Idempotency-Key. What it made is found with GET /api/v1/eligibility?request_id=<this request_id>, and the same filter on /api/v1/claims and /api/v1/attachments (a key with read permission). |
| 500 | INTERNAL | Something went wrong on our side. Quote the request ID if you contact us. |
Example
Example request
curl "https://sandbox.myclaimhouse.com/api/v1/eligibility?status=active&limit=10" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY"Example response: 200
{
"data": [
{
"id": "elg_01JM000000E00800000000000G",
"object": "eligibility_check",
"office_id": "off_01JM000000E008000000000003",
"patient_id": "pat_01JM000000E00800000000004K",
"payer": {
"id": "pyr_01JM000000E008000000000004",
"payer_id": "00000",
"name": "Example Dental Plan"
},
"state": "completed",
"outcome": "answered",
"status": "active",
"billing": {
"charged": false,
"state": "not_billable",
"reason": "test_mode",
"label": "Not billed: test mode"
},
"cache": {
"state": "fresh",
"source_id": null
},
"parent_id": null,
"request_id": "req_01JM000000E008000000000010",
"idempotency_key": "visit-1042-attempt-1",
"source": {
"network": "sandbox",
"latency_ms": 180,
"completed_at": "2026-03-10T15:30:00.430000+00:00"
},
"tenant_reference": "visit-1042",
"created_at": "2026-03-10T15:30:00.250000+00:00"
}
],
"next_cursor": null
}