Patients
Get a patient
GET/api/v1/patients/{id}
One patient with coverage as last verified, and their newest checks, claims (void transactions left out) and payments on any of their claims (up to 25 of each), by ID and state. A patient of another organization or mode is not found. Open charges: the charges of the open claims, plus what the patient owes on the paid, denied and reconciled ones, where the payer's remittance says.
Needs a key with read permission.
Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | A patient ID (pat_...). |
Response
The patient. Status 200.
| Name | Type | Description |
|---|---|---|
| id | string | An ID that starts with pat_. |
| object | string | Always `patient`. |
| first_name | string | As first seen on a check or claim. |
| last_name | string | As first seen on a check or claim. |
| date_of_birth | string (date) | |
| office_id | string or null | Office, primary insurance and member ID are those of the newest completed check or claim. |
| primary_insurance | object or null | The payer of the newest completed check or claim. |
| primary_insurance.id | string | An ID that starts with pyr_. |
| primary_insurance.payer_id | string | The payer's own payer ID. |
| primary_insurance.name | string | |
| member_id | value | The member ID of the newest completed check or claim. |
| coverage | object or null | Coverage as last verified: the result of the newest completed check, in the Eligibility screen's words, with its date. Verified: the payer answered that check in the last 30 days. Inactive: that answer says the coverage is inactive. Null when no check of the patient has completed. |
| coverage.check_id | string | An ID that starts with elg_. |
| coverage.checked_at | string (date-time) | |
| coverage.outcome | string | One of: `answered`, `rejected`, `payer_unavailable`, `error`. |
| coverage.status | string or null | One of: `active`, `inactive`, `unknown`. |
| coverage.label | string | The result in words, as the Eligibility screen says it. |
| coverage.verified | boolean | True when the payer answered this check in the last 30 days. |
| open_claims | integer | Open claims: the patient's claims not paid, denied, reconciled or voided (drafts included; predeterminations and void transactions are not claims here).At least -9007199254740991. |
| open_charges | object | Open charges: the charges of the open claims, plus what the patient owes on the paid, denied and reconciled ones, where the payer's remittance says. |
| open_charges.total | string | An amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`. |
| open_charges.claims | string | The charges of the open claims.Matches `^-?\d+\.\d{2}$`. |
| open_charges.patient_owes | string | What the patient owes on the paid, denied and reconciled claims, where known.Matches `^-?\d+\.\d{2}$`. |
| created_at | string (date-time) | When Claim House first saw the patient. |
| checks | array of object | The newest checks about the patient (up to 25), newest first. |
| checks[].id | string | An ID that starts with elg_. |
| checks[].state | string | One of: `pending`, `completed`. |
| checks[].outcome | string or null | One of: `answered`, `rejected`, `payer_unavailable`, `error`. |
| checks[].status | string or null | One of: `active`, `inactive`, `unknown`. |
| checks[].label | string | |
| checks[].payer_id | string | An ID that starts with pyr_. |
| checks[].created_at | string (date-time) | |
| claims | array of object | The newest claims for the patient, never a void transaction (up to 25), newest first. |
| claims[].id | string | An ID that starts with clm_. |
| claims[].kind | string | One of: `claim`, `predetermination`. |
| claims[].state | string | One of: `draft`, `validated`, `needs_attention`, `queued`, `submitted`, `accepted_clearinghouse`, `accepted_payer`, `rejected`, `voided`, `paid`, `denied`, `reconciled`, `returned`. |
| claims[].charge | string | An amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`. |
| claims[].payer_id | string | An ID that starts with pyr_. |
| claims[].created_at | string (date-time) | |
| claims[].updated_at | string (date-time) | |
| payments | array of object | The newest payments, denials and reversals on any of the patient's claims (never a predetermination's estimate; applied false: replaced by a later remittance) (up to 25), newest first. |
| payments[].id | string | An ID that starts with erc_. |
| payments[].era_id | string | An ID that starts with era_. |
| payments[].claim_id | string | An ID that starts with clm_. |
| payments[].outcome | string | paid, denied or reversal: the remittance rows that moved the claim (never an estimate or a status row).One of: `paid`, `denied`, `reversal`. |
| payments[].paid | string | An amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`. |
| payments[].patient_responsibility | string | An amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`. |
| payments[].payment_date | string (date) or null | |
| payments[].applied | boolean | Whether the payment stands on the claim (a later remittance can replace it). |
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. |
| 404 | NOT_FOUND | Not found. |
| 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/patients/pat_01JM000000E00800000000004K" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY"Example response: 200
{
"id": "pat_01JM000000E00800000000004K",
"object": "patient",
"first_name": "Alex",
"last_name": "Example",
"date_of_birth": "1985-04-12",
"office_id": "off_01JM000000E008000000000003",
"primary_insurance": {
"id": "pyr_01JM000000E008000000000004",
"payer_id": "00000",
"name": "Example Dental Plan"
},
"member_id": "CH-ACTIVE-FULL",
"coverage": {
"check_id": "elg_01JM000000E00800000000000G",
"checked_at": "2026-09-24T20:55:00.430000+00:00",
"outcome": "answered",
"status": "active",
"label": "Active",
"verified": true
},
"open_claims": 0,
"open_charges": {
"total": "205.20",
"claims": "0.00",
"patient_owes": "205.20"
},
"created_at": "2026-03-10T15:30:00.430000+00:00",
"checks": [
{
"id": "elg_01JM000000E00800000000000G",
"state": "completed",
"outcome": "answered",
"status": "active",
"label": "Active",
"payer_id": "pyr_01JM000000E008000000000004",
"created_at": "2026-03-10T15:30:00.250000+00:00"
}
],
"claims": [
{
"id": "clm_01JM000000E00800000000002G",
"kind": "claim",
"state": "paid",
"charge": "1140.00",
"payer_id": "pyr_01JM000000E008000000000004",
"created_at": "2026-09-24T21:00:00.120000+00:00",
"updated_at": "2026-09-24T21:00:00.310000+00:00"
}
],
"payments": [
{
"id": "erc_01JM000000E00800000000003H",
"era_id": "era_01JM000000E00800000000003G",
"claim_id": "clm_01JM000000E00800000000002G",
"outcome": "paid",
"paid": "820.80",
"patient_responsibility": "205.20",
"payment_date": "2026-09-24",
"applied": true
}
]
}A patient of another organization or mode: 404
{
"error": "NOT_FOUND",
"message": "Patient not found",
"errors": [],
"request_id": "req_01JM000000E008000000000010"
}