Rate a meal on my plan
curl --request PUT \
--url https://sandbox.rx.tera.health/v1/patient/meal-plan/items/{item_id}/rating \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"rating": 4,
"comment": "Filling, but I'd like it less spicy."
}
EOFconst options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({rating: 4, comment: 'Filling, but I\'d like it less spicy.'})
};
fetch('https://sandbox.rx.tera.health/v1/patient/meal-plan/items/{item_id}/rating', 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/meal-plan/items/{item_id}/rating"
payload = {
"rating": 4,
"comment": "Filling, but I'd like it less spicy."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"rating": 4,
"comment": "Filling, but I'd like it less spicy.",
"updated_at": "2026-10-27T13:05:00Z"
}Protocols and plans
Rate a meal on my plan
1 to 5 stars with an optional comment, shown on the plan as my_rating; rating again replaces it. Coaches see
it, and new plans, swaps and the AI Coach avoid meals rated 1 or 2. To rate the recipe itself wherever it
appears, use PUT /v1/patient/library/{library_item_id}/rating.
Plans: AI + health and fitness coaches (ai_health_fitness), AI only (ai_only).
PUT
/
v1
/
patient
/
meal-plan
/
items
/
{item_id}
/
rating
Rate a meal on my plan
curl --request PUT \
--url https://sandbox.rx.tera.health/v1/patient/meal-plan/items/{item_id}/rating \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"rating": 4,
"comment": "Filling, but I'd like it less spicy."
}
EOFconst options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({rating: 4, comment: 'Filling, but I\'d like it less spicy.'})
};
fetch('https://sandbox.rx.tera.health/v1/patient/meal-plan/items/{item_id}/rating', 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/meal-plan/items/{item_id}/rating"
payload = {
"rating": 4,
"comment": "Filling, but I'd like it less spicy."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"rating": 4,
"comment": "Filling, but I'd like it less spicy.",
"updated_at": "2026-10-27T13:05:00Z"
}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
Body
application/json

