Skip to main content
GET
List insurance policies

Authorizations

Authorization
string
header
required

Marketplace API key

Headers

X-Organization-Id
string
required

Target clinic organization ID

Query Parameters

patientId
string

Filter by patient ID (UUID)

Example:

"8de03039-3a9e-417a-b2b3-a8b8df183631"

includeTerminated
boolean
default:false

Include terminated (archived) policies. Defaults to false.

Example:

false

eligibilityStatus
enum<string>

Filter by eligibility status

Available options:
ACTIVE,
INACTIVE,
PENDING,
UNKNOWN,
TERMINATED,
UNAVAILABLE
Example:

"ACTIVE"

updatedSince
string

Only return policies whose record was created or modified at/after this timestamp (ISO 8601). When set, results are ordered by updatedAt ascending with id as tiebreaker, overriding sortBy/sortOrder. Must carry an explicit UTC offset (...Z or ...+02:00) — a zone-less instant would be resolved against the database session timezone on some resources and the API process timezone on others, so the same string would mean two different moments. Pair with cursorId to walk safely — see that parameter; page/offset paging of this feed can drop rows. The bound is inclusive without cursorId, so boundary rows re-deliver — dedupe on id. A termination is visible as a change (terminatedAt is set), but pair with includeTerminated=true or the terminated row is filtered out of the delta entirely. One fidelity limit remains, which is why this feed is not a full substitute for a periodic full walk. payerName, planName, policyType and payerPhone are joined from the payer/plan tables, so a change to the payer or plan itself does not move the policy's updatedAt and is invisible here. The policy's own columns are covered: the EHR insurance sync compares values before writing, so a sync pass that changes nothing leaves updatedAt alone, and corrections made through the billing screens do move it. A hard delete cannot appear in a change feed either; a consumer that prunes still needs a full walk.

Example:

"2026-08-01T00:00:00.000Z"

updatedUntil
string

Only return policies whose record was last modified at/before this timestamp (ISO 8601). Pin this to the instant the walk started to freeze the window. Must carry an explicit UTC offset.

Example:

"2026-08-31T23:59:59.999Z"

cursorId
string

Id of the last row you already consumed, for a keyset walk. Pass it together with updatedSince set to that same row's updatedAt, always requesting page 1; the next page is everything ordered after (updatedAt, id). Use this rather than page/offset for any walk that must not drop rows. Paging a delta feed with page/offset is unsafe because the sort column is exactly what the sync workers rewrite: a row on an earlier page that changes mid-walk moves to the tail, every later row shifts one position toward the front, and the offset for the next page steps over whichever row moved into that slot. That row is never returned and its stamp is below the cursor the walk finishes on, so it is missed permanently while the walk still looks successful. On a cursor page pagination.totalCount counts the window starting at your cursor, so it shrinks as you walk — stop on a short page rather than on the count.

Example:

"pol_a1b2c3d456784abc9def0123456789ab"

sortBy
enum<string>

Sort field. Ignored when updatedSince/updatedUntil is set — see updatedSince.

Available options:
createdAt,
updatedAt,
coverageOrder
Example:

"coverageOrder"

sortOrder
enum<string>

Sort direction

Available options:
asc,
desc
Example:

"asc"

Response

Success

code
string
required

Response code

Example:

"success"

data
object
required