Skip to main content
GET
List patients

Authorizations

Authorization
string
header
required

Marketplace API key

Headers

X-Organization-Id
string
required

Target clinic organization ID

Query Parameters

Search by patient name or MRN

updatedSince
string

Only return patients whose record was created or modified at/after this timestamp (ISO 8601). When set, results are ordered by updatedAt ascending with id as tiebreaker. 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. This tracks the patient row's own columns only: include=contact and include=identity data live in other tables and changing them does not move updatedAt. A change feed also cannot report a deletion, so a consumer that prunes still needs a full walk.

Example:

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

updatedUntil
string

Only return patients 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:

"pat_8de030393a9e417ab2b3a8b8df183631"

include
enum<string>[]

Comma-separated expansions. address adds the patient's mailing address; contact adds preferredLanguage, typed phoneNumbers and the emergency contact; identity adds masterPatientId and duplicatePatientIds. address and contact additionally require the read:patient_pii scope and 403 without it; identity needs only read:patients.

Available options:
address,
contact,
identity
Example:

"address"

Response

Success

code
string
required

Response code

Example:

"success"

data
object
required