Merran documentation API & integrations
Tidy up many recipes
const url = 'http://localhost:3000/api/recipes/tidy';const options = { method: 'POST', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"ids":["0199e8b0-5a10-7a01-8b00-000000000006","0199e8b0-5a10-7a01-8b00-000000000007"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:3000/api/recipes/tidy \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "ids": [ "0199e8b0-5a10-7a01-8b00-000000000006", "0199e8b0-5a10-7a01-8b00-000000000007" ] }'Tidies recipes in the background, one at a time, with the suggestions left in the Review queue: the ones picked, or every recipe not tidied yet (household admins only), say after moving from another app. It stops if there’s no AI, this month’s limit is reached, a key runs out of credit, or three recipes in a row fail. Follow it at GET /recipes/tidy. With an API key, it needs the recipes: write permission.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
The recipes to tidy. Left out, every recipe not tidied yet, which only household admins can start.
Example
{ "ids": [ "0199e8b0-5a10-7a01-8b00-000000000006", "0199e8b0-5a10-7a01-8b00-000000000007" ]}Responses
Section titled “Responses”Started, or the one already going.
object
Every recipe not tidied yet, rather than ones picked.
Recipes with suggestions waiting in Review.
Recipes with nothing to change.
Why it stopped before the end, when it did: no AI, this month’s limit, no credit, or three failures in a row.
Example
{ "id": "0199e8b0-5a10-7a01-8b00-00000000002a", "status": "running", "library": true, "total": 52, "done": 12, "suggested": 9, "fine": 3, "failed": 0, "stopped": null, "startedAt": "2026-10-01T17:30:00.000Z", "finishedAt": null}Nothing to tidy.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}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." } }}© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.