List messages in an AI Coach chat
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/ai-coach/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/ai-coach/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/ai-coach/conversations/{conversation_id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5cc-5e6f-7071-9283-9c0d1e2f3a45",
"conversation_id": "0190f5cc-3c4d-7e5f-8061-7a8b9c0d1e23",
"sender": {
"type": "ai",
"display_name": "AI Coach",
"care_role": null
},
"body": "Try a chicken and quinoa bowl tonight. It keeps you near 38 g of protein.",
"created_at": "2026-10-26T11:01:30Z",
"edited_at": null,
"deleted": false,
"seen_by_other_side": true,
"attachment": null,
"reactions": [],
"feedback": {
"rating": "up",
"note": null
}
}
],
"next_cursor": null
}AI Coach
List messages in an AI Coach chat
Newest first, the patient’s messages and the AI Coach’s replies.
Plans: AI + health and fitness coaches (ai_health_fitness), AI only (ai_only).
GET
/
v1
/
patient
/
ai-coach
/
conversations
/
{conversation_id}
/
messages
List messages in an AI Coach chat
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/ai-coach/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/ai-coach/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/ai-coach/conversations/{conversation_id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5cc-5e6f-7071-9283-9c0d1e2f3a45",
"conversation_id": "0190f5cc-3c4d-7e5f-8061-7a8b9c0d1e23",
"sender": {
"type": "ai",
"display_name": "AI Coach",
"care_role": null
},
"body": "Try a chicken and quinoa bowl tonight. It keeps you near 38 g of protein.",
"created_at": "2026-10-26T11:01:30Z",
"edited_at": null,
"deleted": false,
"seen_by_other_side": true,
"attachment": null,
"reactions": [],
"feedback": {
"rating": "up",
"note": null
}
}
],
"next_cursor": null
}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
