List messages in a care thread
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c4-2e3f-7a41-9b56-7c8d9e0f1a23",
"conversation_id": "0190f5c4-1d2e-7f30-8a45-6b7c8d9e0f12",
"sender": {
"type": "coach",
"display_name": "Maya C.",
"care_role": "health_coach"
},
"body": "Great job on your protein yesterday. How is the nausea today?",
"created_at": "2026-10-26T13:40:00Z",
"edited_at": null,
"deleted": false,
"seen_by_other_side": false,
"attachment": null,
"reactions": [],
"feedback": null
}
],
"next_cursor": "eyJpZCI6IjAxOTBmNWM0In0"
}Care messaging
List messages in a care thread
Newest first. New messages are announced by message.created; fetch them here.
Plans: AI + health and fitness coaches (ai_health_fitness).
GET
/
v1
/
patient
/
care
/
conversations
/
{conversation_id}
/
messages
List messages in a care thread
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox.rx.tera.health/v1/patient/care/conversations/{conversation_id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c4-2e3f-7a41-9b56-7c8d9e0f1a23",
"conversation_id": "0190f5c4-1d2e-7f30-8a45-6b7c8d9e0f12",
"sender": {
"type": "coach",
"display_name": "Maya C.",
"care_role": "health_coach"
},
"body": "Great job on your protein yesterday. How is the nausea today?",
"created_at": "2026-10-26T13:40:00Z",
"edited_at": null,
"deleted": false,
"seen_by_other_side": false,
"attachment": null,
"reactions": [],
"feedback": null
}
],
"next_cursor": "eyJpZCI6IjAxOTBmNWM0In0"
}Authorizations
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.
Path Parameters
Query Parameters
Page size.
Required range:
1 <= x <= 100The next_cursor from the previous page. Omit it for the first page.
Maximum string length:
512
