Merran documentation API & integrations
Take a meal off the plan
DELETE
/api/plan/entries/{entryId}
const url = 'http://localhost:3000/api/plan/entries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'DELETE', headers: {cookie: 'merran.session_token=<merran.session_token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request DELETE \ --url http://localhost:3000/api/plan/entries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --cookie merran.session_token=<merran.session_token>The answer is the meal as it was, to put back with /plan/restore (Undo). With an API key, it needs the plan: write permission.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”entryId
required
string format: uuid
Responses
Section titled “Responses”Taken off.
Media typeapplication/json
A meal as it was, to put back with /plan/restore: what taking it off or changing it answers with.
object
id
required
string format: uuid
date
required
string
anyDay
required
boolean
meal
required
string
position
required
integer
status
required
string
recipe
required
string | null
withRecipe
required
string | null
note
required
string | null
servings
required
number | null
listedAt
required
string | null format: date-time
why
Array | null
One of:
object
kind
required
string
label
required
string
object
kind
required
string
label
required
string
object
kind
required
string
foods
required
Array<string>
object
kind
required
string
foods
required
Array<string>
lowest
required
One is the lowest it’s been in a while.
boolean
object
kind
required
string
object
kind
required
string
weeks
required
integer
object
kind
required
string
stars
required
integer
object
kind
required
string
minutes
required
integer
object
kind
required
string
foods
required
Array<object>
object
food
required
string
who
required
string | null
cookedAt
When it was marked cooked: put back cooked, its recipe and side were made then.
string | null format: date-time
Example
{ "id": "0199e8b0-5a10-7a01-8b00-00000000001b", "date": "2026-10-15", "anyDay": false, "meal": "dinner", "position": 0, "status": "planned", "recipe": "0199e8b0-5a10-7a01-8b00-000000000006", "withRecipe": "0199e8b0-5a10-7a01-8b00-000000000007", "note": null, "servings": null, "listedAt": null, "why": null, "cookedAt": null}Not signed in.
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}Not allowed.
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}No such meal on the plan.
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string
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.