curl --request POST \
--url https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "0190f5e4-5d6e-7f80-9a1b-c2d3e4f5a6b7",
"status": "scheduled",
"scheduled_for": "2026-10-27T15:00:00Z",
"sent_at": null
}Ask the AI Coach to reach out
The AI Coach starts a short check-in chat with the patient, for example after patient.disengaged. It goes out
within minutes, outside the patient’s quiet hours; you get message.created when it does, and send your push
then. At most one request every 3 days per enrollment. Error codes: outreach_too_soon (409),
outreach_off (409) when the patient turned AI Coach outreach off, ai_paused (409),
enrollment_not_active (409).
Scope: enrollments:write.
curl --request POST \
--url https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox.rx.tera.health/v1/enrollments/{enrollment_id}/ai-coach-outreach"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "0190f5e4-5d6e-7f80-9a1b-c2d3e4f5a6b7",
"status": "scheduled",
"scheduled_for": "2026-10-27T15:00:00Z",
"sent_at": null
}Authorizations
A brand's server, one OAuth client per brand and environment. Get a token with the
client_credentials grant and send it as Authorization: Bearer <token>. Tokens last 1 hour.
A brand server reads status and ids only; it never reads clinical content. A platform partner holds one
client for all its brands and gets one token per brand, naming it with tenant_id.
Headers
Optional on this action. When sent, it works as on creating requests (24 hours, same body).
8 - 255Path Parameters
Response
Scheduled.

