List patient messages
/patient-messagesLists 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.
Query parameters
afterstringOnly messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization’s time zone.
beforestringOnly messages sent before this time. Same format as after.
group_bymessage, conversationmessage (the default) lists messages one by one across conversations. conversation lists every message in the range from one conversation, then the next.
orderdesc, ascdesc 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_idUUIDOnly conversations with this patient, on any phone number.
conversation_idUUIDOnly messages in this conversation.
qstringWords 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]integerNumber of records to return. Defaults to 50, maximum 100.
page[after]stringCursor 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:
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request is malformed, such as invalid JSON. |
| 400 | invalid_query | The q query can’t be parsed. See Search. |
| 400 | range_required | An API key must pass after, patient_id, or conversation_id, so every read is bounded. |
| 401 | invalid_token | The API key or access token is missing, expired, or revoked. |
| 403 | insufficient_scope | The credential doesn’t have the scope this endpoint needs. |
| 429 | rate_limited | Too many requests. Retry after Retry-After seconds. |