Skip to content
merran
GitHubInstall

Merran documentation API & integrations

Put a meal on the plan

POST
/api/plan/entries
curl --request POST \
--url http://localhost:3000/api/plan/entries \
--header 'Content-Type: application/json' \
--cookie merran.session_token=<merran.session_token> \
--data '{ "date": "2026-10-15", "meal": "dinner", "recipe": "lemon-chicken", "withRecipe": "garlic-rice" }'

A recipe or a note, on a day’s meal, after any dishes already there. With anyDay, it goes in the pool of the week the date is in. With an API key, it needs the plan: write permission.

Media typeapplication/json
object
date
required
string
/^\d{4}-\d{2}-\d{2}$/

Example

2026-10-15
meal
required
string
Allowed values: breakfast lunch dinner snack
anyDay

For the week’s pool: any day of the week date is in.

boolean
recipe

The recipe, by id or address. Or give a note instead.

string | null
withRecipe

A side or sauce it’s made with, by id or address.

string | null
note
string | null
>= 1 characters <= 200 characters
servings
number | null
> 0 <= 1000
why

Why it was picked, as Fill the week said.

Array | null
<= 5 items
One of:
object
kind
required
string
Allowed values: theme
label
required
string
<= 60 characters

Example

{
"date": "2026-10-15",
"meal": "dinner",
"recipe": "lemon-chicken",
"withRecipe": "garlic-rice"
}

On the plan.

Media typeapplication/json
object
id
required
string
date
required

Its day, or for the week’s pool, the week’s first day.

string
/^\d{4}-\d{2}-\d{2}$/
anyDay
required

In the week’s pool: for any day of the week.

boolean
meal
required
string
Allowed values: breakfast lunch dinner snack
position
required

Its place among the meal’s dishes.

integer
status
required
string
Allowed values: planned cooked skipped
recipe
required

Null for a note.

object
id
required
string
slug
required
string
name
required
string
photo
required
string | null
servings
required
number | null
totalMinutes
required
integer | null
calories
required

In a serving, when its nutrition is known.

number | null
withRecipe
required

What it’s made with: “with peanut sauce”.

object
id
required
string
slug
required
string
name
required
string
calories
required
number | null
note
required

A meal that isn’t a recipe: “leftovers”.

string | null
servings
required

Null for the recipe’s own servings.

number | null
why
required

Why it was picked, when Fill the week picked it: none otherwise.

Array
<= 5 items
One of:
object
kind
required
string
Allowed values: theme
label
required
string
<= 60 characters
createdAt
required
string format: date-time

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.

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 recipe.

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.