Merran documentation API & integrations
A starter collection
const url = 'http://localhost:3000/api/collections/weeknight';const options = { method: 'GET', 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 GET \ --url http://localhost:3000/api/collections/weeknight \ --cookie merran.session_token=<merran.session_token>Its recipes that suit the household, and what Find more found for it last. With an API key, it needs the recipes: read permission.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
weeknightResponses
Section titled “Responses”The collection.
object
What Find more looks for.
How many aren’t in the library yet.
Up to four, for its card.
Up to 24 that suit the household, those not in its library first: the sites’ newest that fit, its hand-picked classics, then the rest.
object
The recipe’s page, to import at POST /recipes/import.
The recipe’s own short description, when the site gives one.
What its site says it is, in Merran’s words; empty when it doesn’t say.
A small copy of its photo, through Merran.
The household’s recipe from it, if it has one.
object
False when it has a food the household avoids, or is off its diets.
object
The starter collection it found more for (POST /collections/{collection}/find), or null.
Still searching, done, or failed (error says why).
Up to eight, each a page Merran opened and can import, no more than two from a site unless there aren’t others.
object
The recipe’s page, to import at POST /recipes/import.
Why it’s a good pick.
Example
{ "id": "weeknight", "title": "Weeknight wins", "description": "Dinners on the table in 40 minutes or less.", "theme": "Weeknight dinners on the table in 40 minutes or less", "count": 2, "toImport": 1, "photos": [ "/api/sites/recipes/0199e8b0-5a10-7a01-8b00-000000000031/photo" ], "recipes": [ { "id": "0199e8b0-5a10-7a01-8b00-000000000031", "url": "https://www.recipetineats.com/honey-garlic-chicken/", "name": "Honey Garlic Chicken", "site": "RecipeTin Eats", "description": "Juicy chicken in a sticky honey garlic sauce, in 12 minutes.", "minutes": 12, "courses": [ "main" ], "photo": "/api/sites/recipes/0199e8b0-5a10-7a01-8b00-000000000031/photo", "publishedAt": "2026-10-01T17:30:00.000Z", "inLibrary": null, "suits": true }, { "id": "0199e8b0-5a10-7a01-8b00-000000000032", "url": "https://www.recipetineats.com/lemon-chicken/", "name": "Lemon Chicken", "site": "RecipeTin Eats", "description": null, "minutes": 35, "courses": [ "main" ], "photo": "/api/sites/recipes/0199e8b0-5a10-7a01-8b00-000000000031/photo", "publishedAt": "2026-10-01T17:30:00.000Z", "inLibrary": { "slug": "lemon-chicken", "name": "Lemon Chicken" }, "suits": true } ], "found": null}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 collection.
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.