Rate a recipe
curl --request PUT \
--url https://sandbox.rx.tera.health/v1/patient/library/{library_item_id}/rating \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rating": 2,
"comment": "Too sweet for me."
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({rating: 2, comment: 'Too sweet for me.'})
};
fetch('https://sandbox.rx.tera.health/v1/patient/library/{library_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/library/{library_item_id}/rating"
payload = {
"rating": 2,
"comment": "Too sweet for me."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"rating": 2,
"comment": "Too sweet for me.",
"updated_at": "2026-10-27T12:40:00Z"
}Library
Rate a recipe
1 to 5 stars with an optional comment; rating again replaces it. New meal plans, swaps and the AI Coach avoid
recipes rated 1 or 2, and coaches see the ratings. After a low rating the app can offer to add a food dislike with
PATCH /v1/patient. Error code: not_a_recipe (422) for an exercise.
Plans: AI + health and fitness coaches (ai_health_fitness), AI only (ai_only).
PUT
/
v1
/
patient
/
library
/
{library_item_id}
/
rating
Rate a recipe
curl --request PUT \
--url https://sandbox.rx.tera.health/v1/patient/library/{library_item_id}/rating \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rating": 2,
"comment": "Too sweet for me."
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({rating: 2, comment: 'Too sweet for me.'})
};
fetch('https://sandbox.rx.tera.health/v1/patient/library/{library_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/library/{library_item_id}/rating"
payload = {
"rating": 2,
"comment": "Too sweet for me."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"rating": 2,
"comment": "Too sweet for me.",
"updated_at": "2026-10-27T12:40: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

