Skip to main content
POST
Log a symptom

Authorizations

Authorization
string
header
default:Bearer sandbox_any_token_works
required

A 15-minute token bound to one patient and one enrollment, issued by POST /v1/oauth/token with the token-exchange grant. Treat it as opaque. When it expires, exchange a fresh assertion; there is no refresh token.

Headers

Idempotency-Key
string
required

A unique key per logical request, for example a UUID. Retrying with the same key and the same body within 24 hours returns the first response (with Idempotent-Replayed: true) instead of creating a duplicate. The same key with a different body is refused with 422 idempotency_key_reused.

Required string length: 8 - 255

Body

application/json
occurred_at
string<date-time>
required

ISO 8601 in UTC.

Example:

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

symptom
string
required

A symptom code, for example nausea, vomiting, diarrhea, constipation, reflux, fatigue, abdominal_pain. These codes are red flags at any severity: chest_pain, difficulty_breathing, fainting, severe_abdominal_pain, persistent_vomiting, blood_in_vomit, blood_in_stool, yellow_skin_or_eyes, severe_dehydration, allergic_reaction, swelling_face_or_throat, vision_changes, suicidal_thoughts, self_harm. Any symptom at severity 5 is one too. A brand's own alert rules can add codes.

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

"nausea"

severity
integer
required
Required range: 1 <= x <= 5
Example:

2

note
string

The patient's own words. Read by the care team and, on a clinical flag, the prescriber.

Maximum string length: 1000
Example:

"Mild, after dinner"

external_id
string

Your own identifier, printable ASCII without spaces.

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

"sym-20931"

Response

Logged.

occurred_at
string<date-time>
required

ISO 8601 in UTC.

Example:

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

symptom
string
required

A symptom code, for example nausea, vomiting, diarrhea, constipation, reflux, fatigue, abdominal_pain. These codes are red flags at any severity: chest_pain, difficulty_breathing, fainting, severe_abdominal_pain, persistent_vomiting, blood_in_vomit, blood_in_stool, yellow_skin_or_eyes, severe_dehydration, allergic_reaction, swelling_face_or_throat, vision_changes, suicidal_thoughts, self_harm. Any symptom at severity 5 is one too. A brand's own alert rules can add codes.

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

"nausea"

severity
integer
required
Required range: 1 <= x <= 5
Example:

2

id
string<uuid>
required
Example:

"0190f5c9-7f80-7192-8cb4-3d4e5f607182"

log_date
string<date>
required

A calendar date in the patient's time zone.

Example:

"2026-10-26"

is_red_flag
boolean
required
read-only

Set by TeraRx from the symptom and severity (see symptom). When true, show the emergency guidance (911, 988) right away; the clinical flag to the care team or prescriber follows.

Example:

false

source
enum<string>
required
read-only

Set by the API from the caller. brand_api for brand servers, brand_app for patient tokens issued to a brand.

Available options:
app,
brand_app,
brand_api,
wearable,
coach,
ai,
system
Example:

"brand_app"

created_at
string<date-time>
required

ISO 8601 in UTC.

Example:

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

updated_at
string<date-time>
required

When the log was last corrected; the same as created_at until then.

Example:

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

note
string

The patient's own words. Read by the care team and, on a clinical flag, the prescriber.

Maximum string length: 1000
Example:

"Mild, after dinner"

external_id
string

Your own identifier, printable ASCII without spaces.

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

"sym-20931"

days_since_injection
integer | null
read-only
Example:

2