Skip to main content

Patients

Search for patients by email address, view patient profiles, and check patient intent status.

Create or Resolve Patient

Create a patient profile for a shop customer, or return the existing profile if the shop_uid and shop_customer_id pair already exists. This is step 1 for Patient Pass issuance (POST /wallet-passes needs that shop-customer link) and the supported create flow for Scheduling.
Required permission: patient:write
string
required
UID of the shop the customer belongs to
string
required
The shop’s identifier for the customer
string
Optional patient email stored on the shop-patient mapping and used for patient lookup/search.
array
Optional patient profile fields to set for the shop customer. Each entry is { "field": "<field_key>", "value": <value>, "source": "shop" | "questionnaire" | "user" }. source defaults to shop and must match the field’s configured source in Settings → Profile Fields. A mismatch or unknown field key returns 404.

Search Patient by Email

Find a patient by their email address. Returns the most recently created patient whose shop-patient email or order email matches the given email.
string
required
The email address to search for
Required permission: patient:read

Example Request

Response

Error Responses

Get Patient Profile

Retrieve a patient profile by UID.
string
required
The patient UID
Required permission: patient:read

Example Request

Response

Check Patient Intent

Check the intent return code for a patient. Returns a code indicating when the last signed submission for this intent was made.
string
required
The patient UID
string
required
The intent identifier
Required permission: patient:read

Example Request

Response

Return Code Values

Delete Patient Profile Field

Delete a patient’s value for a single profile field.
string
required
The patient UID
string
required
Key of the profile field to delete the patient’s value for
string
Source of the field (shop, questionnaire, or user). Must match the profile field’s configured source and the source used when writing the value via Create or Resolve Patient. Defaults to shop.
The field key is the same value you send in fields[].field when setting a value via Create or Resolve Patient — for example first_name. Pass the same source you used when writing the value. Deleting a value therefore uses exactly the identifier you used to set it; no separate lookup is needed. Required permission: patient_profile_field:delete
This is a hard delete. The field value is removed from the patient’s profile, not archived or soft-deleted. An internal audit log entry recording the deletion (naming the API key that performed it) is written as part of the same call — afterwards, that log entry is the only remaining record that the value ever existed.

Example Request

Response (200 OK)

Error Responses