Skip to the page
Chapters

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

Path parameters
NameTypeRequiredDescription
idstringrequiredA patient ID (pat_...).

Response

The patient. Status 200.

Response fields
NameTypeDescription
idstringAn ID that starts with pat_.
objectstringAlways `patient`.
first_namestringAs first seen on a check or claim.
last_namestringAs first seen on a check or claim.
date_of_birthstring (date)
office_idstring or nullOffice, primary insurance and member ID are those of the newest completed check or claim.
primary_insuranceobject or nullThe payer of the newest completed check or claim.
primary_insurance.idstringAn ID that starts with pyr_.
primary_insurance.payer_idstringThe payer's own payer ID.
primary_insurance.namestring
member_idvalueThe member ID of the newest completed check or claim.
coverageobject or nullCoverage 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_idstringAn ID that starts with elg_.
coverage.checked_atstring (date-time)
coverage.outcomestringOne of: `answered`, `rejected`, `payer_unavailable`, `error`.
coverage.statusstring or nullOne of: `active`, `inactive`, `unknown`.
coverage.labelstringThe result in words, as the Eligibility screen says it.
coverage.verifiedbooleanTrue when the payer answered this check in the last 30 days.
open_claimsintegerOpen 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_chargesobjectOpen 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.totalstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
open_charges.claimsstringThe charges of the open claims.Matches `^-?\d+\.\d{2}$`.
open_charges.patient_owesstringWhat the patient owes on the paid, denied and reconciled claims, where known.Matches `^-?\d+\.\d{2}$`.
created_atstring (date-time)When Claim House first saw the patient.
checksarray of objectThe newest checks about the patient (up to 25), newest first.
checks[].idstringAn ID that starts with elg_.
checks[].statestringOne of: `pending`, `completed`.
checks[].outcomestring or nullOne of: `answered`, `rejected`, `payer_unavailable`, `error`.
checks[].statusstring or nullOne of: `active`, `inactive`, `unknown`.
checks[].labelstring
checks[].payer_idstringAn ID that starts with pyr_.
checks[].created_atstring (date-time)
claimsarray of objectThe newest claims for the patient, never a void transaction (up to 25), newest first.
claims[].idstringAn ID that starts with clm_.
claims[].kindstringOne of: `claim`, `predetermination`.
claims[].statestringOne of: `draft`, `validated`, `needs_attention`, `queued`, `submitted`, `accepted_clearinghouse`, `accepted_payer`, `rejected`, `voided`, `paid`, `denied`, `reconciled`, `returned`.
claims[].chargestringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].payer_idstringAn ID that starts with pyr_.
claims[].created_atstring (date-time)
claims[].updated_atstring (date-time)
paymentsarray of objectThe 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[].idstringAn ID that starts with erc_.
payments[].era_idstringAn ID that starts with era_.
payments[].claim_idstringAn ID that starts with clm_.
payments[].outcomestringpaid, denied or reversal: the remittance rows that moved the claim (never an estimate or a status row).One of: `paid`, `denied`, `reversal`.
payments[].paidstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
payments[].patient_responsibilitystringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
payments[].payment_datestring (date) or null
payments[].appliedbooleanWhether the payment stands on the claim (a later remittance can replace it).

Errors

Errors
HTTP statusCodeWhat it means
401UNAUTHORIZEDA valid API key is required. Send it as "Authorization: Bearer <key>".
403PERMISSION_DENIEDThis API key is not allowed to do that.
404NOT_FOUNDNot found.
422INVALID_REQUESTThe request is not valid.
504TIMEOUTThe 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).
500INTERNALSomething went wrong on our side. Quote the request ID if you contact us.

Example

Example request

Shell
curl "https://sandbox.myclaimhouse.com/api/v1/patients/pat_01JM000000E00800000000004K" \
  -H "Authorization: Bearer $CLAIMHOUSE_KEY"

Example response: 200

JSON
{
  "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

JSON
{
  "error": "NOT_FOUND",
  "message": "Patient not found",
  "errors": [],
  "request_id": "req_01JM000000E008000000000010"
}