List versions of a protocol
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/protocols/{protocol_type}/versions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/protocols/{protocol_type}/versions', 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/protocols/{protocol_type}/versions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c6-8b9c-7d01-8e23-4f5a6b7c8d90",
"type": "nutrition",
"version": 2,
"status": "active",
"mode": "full_plan",
"title": "Protein-first nutrition, titration weeks 5-8",
"summary": "Hit 110 g of protein a day and keep meals small while the dose goes up.",
"published_at": "2026-10-25T08:00:00Z",
"published_by": "coach"
},
{
"id": "0190f5c6-7a8b-7c90-8d12-3e4f5a6b7c8d",
"type": "nutrition",
"version": 1,
"status": "superseded",
"mode": "full_plan",
"title": "Protein-first nutrition, weeks 1-4",
"summary": "Build the protein habit while the dose starts low.",
"published_at": "2026-10-23T16:45:00Z",
"published_by": "coach"
}
],
"next_cursor": null
}Protocols and plans
List versions of a protocol
The active version and the superseded ones before it.
Plans: AI + health and fitness coaches (ai_health_fitness), AI only (ai_only).
GET
/
v1
/
patient
/
protocols
/
{protocol_type}
/
versions
List versions of a protocol
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/protocols/{protocol_type}/versions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/protocols/{protocol_type}/versions', 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/protocols/{protocol_type}/versions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c6-8b9c-7d01-8e23-4f5a6b7c8d90",
"type": "nutrition",
"version": 2,
"status": "active",
"mode": "full_plan",
"title": "Protein-first nutrition, titration weeks 5-8",
"summary": "Hit 110 g of protein a day and keep meals small while the dose goes up.",
"published_at": "2026-10-25T08:00:00Z",
"published_by": "coach"
},
{
"id": "0190f5c6-7a8b-7c90-8d12-3e4f5a6b7c8d",
"type": "nutrition",
"version": 1,
"status": "superseded",
"mode": "full_plan",
"title": "Protein-first nutrition, weeks 1-4",
"summary": "Build the protein habit while the dose starts low.",
"published_at": "2026-10-23T16:45:00Z",
"published_by": "coach"
}
],
"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
Available options:
nutrition, fitness, sleep, stress, lifestyle, supplements Example:
"nutrition"
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
