Skip to main content
PATCH
Update the patient's details

Authorizations

Authorization
string
header
default:Bearer sandbox_any_token_works
required

A brand's server, one OAuth client per brand and environment. Get a token with the client_credentials grant and send it as Authorization: Bearer <token>. Tokens last 1 hour. A brand server reads status and ids only; it never reads clinical content. A platform partner holds one client for all its brands and gets one token per brand, naming it with tenant_id.

Path Parameters

enrollment_id
string<uuid>
required

Body

application/merge-patch+json

JSON Merge Patch (RFC 7396) of the patient's details. Send only the fields that changed: the patient edits some of them too (height, units, the health profile), and the last write wins. health_profile merges key by key.

first_name
string
Maximum string length: 100
Example:

"Jordan"

last_name
string
Maximum string length: 100
Example:

"Rivera"

email
string<email>
Maximum string length: 254
Example:

"jordan.rivera@example.com"

phone
string

E.164.

Pattern: ^\+[1-9][0-9]{7,14}$
Example:

"+12025550143"

date_of_birth
string<date>
Example:

"1986-04-12"

sex
enum<string>
Available options:
female,
male,
intersex
Example:

"female"

height_cm
number
Required range: 50 <= x <= 260
Example:

165.1

state_code
string

US state of residence (USPS code). Decides which licensed coaches can be assigned.

Pattern: ^[A-Z]{2}$
Example:

"NY"

timezone
string
default:America/New_York

IANA time zone. Log dates and reminders follow it.

Example:

"America/New_York"

language
string
default:en

BCP 47 language tag.

Example:

"en"

units
enum<string>

Display preference only. The API always takes and returns metric values.

Available options:
metric,
imperial
Example:

"imperial"

conditions
string[]

Condition codes the brand's rule matrix keys on, for example type_2_diabetes.

Pattern: ^[a-z][a-z0-9_]*$
Example:
health_profile
object

What plans and the AI Coach are built around. Every field is optional. In a PATCH, send only what changes; null clears a value and [] clears a list.

Response

The enrollment's status after the change.

The brand server's view of an enrollment. Status and ids only, never clinical content.

id
string<uuid>
required
Example:

"0190f5c2-3a1b-7c4d-8e9f-a0b1c2d3e4f5"

external_patient_id
string
required

Your own identifier, printable ASCII without spaces.

Required string length: 1 - 128
Pattern: ^[\x21-\x7E]+$
Example:

"brand-pt-48213"

plan_code
enum<string>
required
  • ai_only: the AI Coach only. Escalations go to the brand's prescriber as clinical flags.
  • ai_health_fitness: the AI Coach plus a health coach (nutrition) and a fitness coach.
Available options:
ai_only,
ai_health_fitness
Example:

"ai_health_fitness"

status
enum<string>
required
Available options:
pending_screening,
ineligible,
active,
paused,
cancelled,
completed
Example:

"active"

stage
enum<string>
required
Available options:
created,
awaiting_assignment,
assigned,
onboarding_pending,
onboarding_completed,
protocols_active
Example:

"onboarding_pending"

risk_level
enum<string>
required

Raised by clinical flags. Only a prescriber's resolve lowers it.

Available options:
normal,
elevated,
high
Example:

"normal"

data_sharing
boolean
required
Example:

true

created_at
string<date-time>
required

ISO 8601 in UTC.

Example:

"2026-10-26T14:05:00Z"

care_team
object[]
required

Empty on ai_only.

forms
object[]
required
protocols
object[]
required

Active protocols.

external_order_id
string | null
Example:

"ord-2026-10-000123"

purchased_at
string<date-time> | null
Example:

"2026-10-21T14:58:00Z"

assigned_at
string<date-time> | null

When the last care role was filled.

Example:

"2026-10-21T15:12:00Z"

onboarding_completed_at
string<date-time> | null
Example:

null

first_protocol_published_at
string<date-time> | null
Example:

null

last_activity_at
string<date-time> | null

Last patient activity, updated about hourly.

Example:

"2026-10-26T13:40:00Z"

ended_at
string<date-time> | null
Example:

null