Skip to Content
API access is available to organizations with a signed BAA. Request API access →
API referenceList patient messages

List patient messages

GET/patient-messages

Lists messages in patient conversations in a time range, newest first, with a cursor. group_by=message (the default) returns them one by one; group_by=conversation returns every message in the range from one conversation before moving to the next. Narrow to one patient or conversation, or search with q. Messages include everyone’s in each conversation: the patient, staff, and API keys. With an API key, pass after, patient_id, or conversation_id.

Scope
messages.read

Query parameters

afterstring

Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization’s time zone.

beforestring

Only messages sent before this time. Same format as after.

group_bymessage, conversation

message (the default) lists messages one by one across conversations. conversation lists every message in the range from one conversation, then the next.

orderdesc, asc

desc for newest first (the default) or asc for oldest first. With group_by=conversation, it orders the conversations by their latest message and the messages within each.

patient_idUUID

Only conversations with this patient, on any phone number.

conversation_idUUID

Only messages in this conversation.

qstring

Words and operators to search for, like refill from:patient is:unread. Supports free text, "exact phrases", from:, patient:, mrn:, phone:, is:unread, is:failed, - to negate, and OR. Use after and before for time ranges. See Search.

page[limit]integer

Number of records to return. Defaults to 50, maximum 100.

page[after]string

Cursor from the previous page’s pagination.next_cursor.

Returns

Returns 200 OK with a data array of Message objects and a pagination object. See pagination.

Errors

Failed requests return application/problem+json problem details. The errors specific to this endpoint:

StatusCodeMeaning
400invalid_requestThe request is malformed, such as invalid JSON.
400invalid_queryThe q query can’t be parsed. See Search.
400range_requiredAn API key must pass after, patient_id, or conversation_id, so every read is bounded.
401invalid_tokenThe API key or access token is missing, expired, or revoked.
403insufficient_scopeThe credential doesn’t have the scope this endpoint needs.
429rate_limitedToo many requests. Retry after Retry-After seconds.
Last updated on