Skip to content
merran
GitHubInstall

Merran documentation API & integrations

Find recipes

GET
/api/recipes
curl --request GET \
--url 'http://localhost:3000/api/recipes?sort=newest&limit=48&offset=0' \
--cookie merran.session_token=<merran.session_token>

The household’s recipes, a page at a time: searched, filtered by tags, and sorted. With an API key, it needs the recipes: read permission.

q

Words in the name, description or ingredients.

string
<= 200 characters

Words in the name, description or ingredients.

tag
Any of:
string

Only recipes with this tag. Repeat it for all of several.

diet
Any of:
string
Allowed values: vegetarian vegan gluten-free dairy-free egg-free nut-free

Only recipes with this diet label. Repeat it for all of several.

maxMinutes

Only recipes ready in this many minutes or fewer.

integer
>= 1 <= 100000

Only recipes ready in this many minutes or fewer.

new

Only recipes not made yet (true), or only ones made (false).

string

Only recipes not made yet (true), or only ones made (false).

onSale

Only recipes that use a real deal at the household’s store (true), from GET /stores/deals.

string

Only recipes that use a real deal at the household’s store (true), from GET /stores/deals.

sort

Newest added, name, recently changed, top rated, or recently made.

string
default: newest
Allowed values: newest name updated rating made

Newest added, name, recently changed, top rated, or recently made.

limit
integer
default: 48 >= 1 <= 100
offset
integer | null
0

The recipes that match.

Media typeapplication/json
object
recipes
required
Array<object>
object
id
required
string
slug
required
string
name
required
string
description
required
string | null
servings
required
number | null
totalMinutes
required

As given, or prep and cook added up.

number | null
rating
required
number | null
tags
required
Array<string>
diets
required

Diet labels worked out from the ingredients, with the household’s corrections.

Array<string>
Allowed values: vegetarian vegan gluten-free dairy-free egg-free nut-free
photo
required

Where its photo is, in each size, or null. The links change with the photo, so they can be kept.

object
full
required

For the recipe page.

string
card
required

Cropped, for recipe cards.

string
lastMadeAt
required
string | null format: date-time
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
total
required

How many match, in all.

number

Example

{
"recipes": [
{
"id": "0199e8b0-5a10-7a01-8b00-000000000006",
"slug": "lemon-chicken",
"name": "Lemon Chicken",
"description": "Crisp chicken thighs roasted with lemon, garlic and thyme.",
"servings": 4,
"totalMinutes": 50,
"rating": 5,
"tags": [
"chicken",
"dinner"
],
"diets": [
"gluten-free",
"dairy-free",
"egg-free",
"nut-free"
],
"photo": {
"full": "/api/recipes/0199e8b0-5a10-7a01-8b00-000000000006/photo?size=full&v=4b1c2d3e",
"card": "/api/recipes/0199e8b0-5a10-7a01-8b00-000000000006/photo?size=card&v=4b1c2d3e"
},
"lastMadeAt": "2026-10-09T01:15:00.000Z",
"createdAt": "2026-10-01T17:30:00.000Z",
"updatedAt": "2026-10-15T18:30:00.000Z"
}
],
"total": 1
}

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."
}
}
}

© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.