Skip to the page
Chapters

Patients

List patients

GET/api/v1/patients

The patients of your organization in the key's mode, newest first (by when Claim House first saw them), with coverage as last verified, open claims and open charges. Filter by office or coverage. To find a patient by name, date of birth or member ID use Search patients: patient details never go in an address. A patient record ties the eligibility checks, claims and payments of one person together. Claim House makes it from the checks and claims you send; your practice management system stays the system of record, so there is no adding or importing patients here. One person is one record per organization and mode: the same family name, given name and date of birth, compared with case, spacing, punctuation, accents and a suffix such as Jr or III left out. A different member ID never splits a person (coverage changes).

Needs a key with read permission.

Request

Query parameters

Query parameters
NameTypeRequiredDescription
limitintegeroptionalHow many items to return, from 1 to 100. Default 25.At least 1.At most 100.
cursorstringoptionalThe next_cursor of the previous page, to get the page after it. Opaque: pass it back unchanged.
office_idstringoptionalOnly the patients last seen at this office (off_...).
coveragestringoptionalverified: the newest completed check was answered by the payer in the last 30 days; unverified: not that; inactive: that answer says the coverage is inactive.One of: `verified`, `unverified`, `inactive`.

Response

A page of patients. Status 200.

Response fields
NameTypeDescription
dataarray of object
data[].idstringAn ID that starts with pat_.
data[].objectstringAlways `patient`.
data[].first_namestringAs first seen on a check or claim.
data[].last_namestringAs first seen on a check or claim.
data[].date_of_birthstring (date)
data[].office_idstring or nullOffice, primary insurance and member ID are those of the newest completed check or claim.
data[].primary_insuranceobject or nullThe payer of the newest completed check or claim.
data[].primary_insurance.idstringAn ID that starts with pyr_.
data[].primary_insurance.payer_idstringThe payer's own payer ID.
data[].primary_insurance.namestring
data[].member_idvalueThe member ID of the newest completed check or claim.
data[].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.
data[].coverage.check_idstringAn ID that starts with elg_.
data[].coverage.checked_atstring (date-time)
data[].coverage.outcomestringOne of: `answered`, `rejected`, `payer_unavailable`, `error`.
data[].coverage.statusstring or nullOne of: `active`, `inactive`, `unknown`.
data[].coverage.labelstringThe result in words, as the Eligibility screen says it.
data[].coverage.verifiedbooleanTrue when the payer answered this check in the last 30 days.
data[].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.
data[].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.
data[].open_charges.totalstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
data[].open_charges.claimsstringThe charges of the open claims.Matches `^-?\d+\.\d{2}$`.
data[].open_charges.patient_owesstringWhat the patient owes on the paid, denied and reconciled claims, where known.Matches `^-?\d+\.\d{2}$`.
data[].created_atstring (date-time)When Claim House first saw the patient.
next_cursorvaluePass as cursor to get the next page; null when there is no next page.

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.
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?coverage=verified&limit=25" \
  -H "Authorization: Bearer $CLAIMHOUSE_KEY"

Example response: 200

JSON
{
  "data": [
    {
      "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"
    }
  ],
  "next_cursor": null
}