Stable message id (also the idempotency key you'll see in webhooks).
Who wrote it.
The message text, in the patient's language. For system notices this is the localized copy — exactly what our own surfaces show.
OptionalemergencyTrue when this is the deterministic EMERGENCY safety response (the "call 911/988" line) rather than ordinary clinical advice. It is produced by rule, not by the model, and it is the highest-stakes message the platform sends — render it prominently and never collapse it.
OptionalasyncThe async consult this message belongs to, when it belongs to one — the
same id you pass to GET /v1/async-consults/{id}. In the agent
conversation its presence is the signal that a HUMAN clinician, not the
agent, owns this stretch of the conversation.
OptionalclassificationSemantic tag for lifecycle-generated messages, so you can render your own chip instead of the localized body text. Absent on ordinary turns.
OptionalclientEcho of the messageId you were given when you submitted this turn, on
author: 'patient' messages you sent through the API. Use it to match a
message you rendered optimistically against the one that came back, so
the patient never sees their own message twice.
OptionalsignatureThe physician's display signature at the time of the reply (e.g.
"Dr. Jane Doe, MD"), frozen per message. Present only on
author: 'physician' messages — render it as the sender line the same
way our own surfaces do.
OptionalattachmentsAttachments, if any.
When the message was recorded.
ONE message — the single message shape this API uses everywhere.
The same object is returned by the agent conversation (
GET /v1/agent/messages), by an async consult transcript (GET /v1/async-consults/{id}/messages), and inside message webhooks. A client writes ONE renderer and reuses it for chat, consult threads, and event replay.What differs between those surfaces is only which fields can appear:
author: 'agent'asyncConsultIdclassificationTranscripts are COMPLETE: patient turns, agent turns, physician replies and every system-generated lifecycle notice appear in order, so rendering the list verbatim always produces an honest history.