Merran documentation API & integrations
Change a meal
const url = 'http://localhost:3000/api/plan/entries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"date":"2026-10-16","status":"planned"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url http://localhost:3000/api/plan/entries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "date": "2026-10-16", "status": "planned" }'Move it (it goes after any dishes in its new slot), swap its recipe, give it a side, change its servings, or mark it planned, cooked or skipped. Cooked sets when its recipe and side were last made. With an API key, it needs the plan: write permission.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Example
2026-10-15Another recipe (Something else): it’s planned afresh, its side kept.
Why a new recipe was picked, as Something else said.
object
object
object
object
One is the lowest it’s been in a while.
object
object
object
object
object
object
Example
{ "date": "2026-10-16", "status": "planned"}Responses
Section titled “Responses”Changed.
object
Its day, or for the week’s pool, the week’s first day.
In the week’s pool: for any day of the week.
Its place among the meal’s dishes.
Null for a note.
object
In a serving, when its nutrition is known.
What it’s made with: “with peanut sauce”.
object
A meal that isn’t a recipe: “leftovers”.
Null for the recipe’s own servings.
Why it was picked, when Fill the week picked it: none otherwise.
object
object
object
object
One is the lowest it’s been in a while.
object
object
object
object
object
object
Example
{ "id": "0199e8b0-5a10-7a01-8b00-00000000001b", "date": "2026-10-15", "anyDay": false, "meal": "dinner", "position": 0, "status": "planned", "recipe": { "id": "0199e8b0-5a10-7a01-8b00-000000000006", "slug": "lemon-chicken", "name": "Lemon Chicken", "photo": null, "servings": 4, "totalMinutes": 50, "calories": 412 }, "withRecipe": { "id": "0199e8b0-5a10-7a01-8b00-000000000007", "slug": "garlic-rice", "name": "Garlic Rice", "calories": 210 }, "note": null, "servings": null, "why": [ { "kind": "theme", "label": "Taco night" } ], "createdAt": "2026-10-15T18:30:00.000Z"}Not signed in.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}Not allowed.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}No such meal on the plan, or no such recipe.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.