List my forms
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/forms \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/forms', 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/forms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c3-7e21-7a40-9b11-5d6e7f8091a2",
"form": {
"code": "glp1_onboarding",
"version": 1,
"purpose": "onboarding",
"title": "Coaching Onboarding"
},
"status": "sent",
"blocks_onboarding": true,
"due_at": "2026-10-24T15:00:00Z",
"sent_at": "2026-10-21T15:00:00Z",
"completed_at": null
}
],
"next_cursor": null
}Forms
List my forms
Forms sent to the patient, newest first. By default only open ones (sent, in_progress).
Plans: AI + health and fitness coaches (ai_health_fitness), AI only (ai_only).
GET
/
v1
/
patient
/
forms
List my forms
curl --request GET \
--url https://sandbox.rx.tera.health/v1/patient/forms \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/patient/forms', 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/forms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "0190f5c3-7e21-7a40-9b11-5d6e7f8091a2",
"form": {
"code": "glp1_onboarding",
"version": 1,
"purpose": "onboarding",
"title": "Coaching Onboarding"
},
"status": "sent",
"blocks_onboarding": true,
"due_at": "2026-10-24T15:00:00Z",
"sent_at": "2026-10-21T15:00:00Z",
"completed_at": 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.
Query Parameters
Filter by one or more statuses, comma-separated.
Available options:
pending, sent, in_progress, completed, expired, cancelled Page size.
Required range:
1 <= x <= 100The next_cursor from the previous page. Omit it for the first page.
Maximum string length:
512
