Skip to main content
POST
Match Suggestion (no-write)

Authorizations

X-API-Key
string
header
required

Body

application/json

Identifiers the matcher will resolve to a patient.

Forgiving on the wire — same parse_*_safe normalizers the upsert endpoint runs, so a partly-formatted phone or a free-text DOB still matches. Pass raw values from extracted document data, form fields, or eligibility payloads — the service normalizes before calling the matcher. Empty/missing fields are skipped (matcher tiers gate on presence, so unsupplied identifiers just narrow the tier set).

external_id
ExternalIdInput · object | null

External-id pair. Tier 1 of the matcher when supplied.

first_name
string | null
last_name
string | null
date_of_birth
string | null

DOB in any of: YYYY-MM-DD, YYYYMMDD, MM/DD/YYYY, MM-DD-YYYY, MM/DD/YY. Unparseable values are ignored.

phone_number
string | null
email
string | null

Response

Successful Response

Matcher verdict + optional slim patient. Never includes side-effect data.

kind
enum<string>
required

How the caller should render the picker: hard = lock to the matched patient (DB-enforced uniqueness leaves exactly one valid choice); medium = pre-fill with override (contact-channel heuristic); soft = pre-fill with override (name-only suggestion, confirm before use); none = free.

Available options:
hard,
medium,
soft,
none
reason

Which matcher tier resolved the patient (external_id, demographics, phone_fuzzy_name, email_fuzzy_name, name_only). Null when kind is none.

Available options:
external_id,
demographics,
phone_fuzzy_name,
email_fuzzy_name
patient
MatchSuggestionPatient · object | null

The matched patient when kind is hard, medium, or soft; null otherwise.