Merran documentation API & integrations
Import a Merran export as a new household
const url = 'http://localhost:3000/api/households/import';const options = { method: 'POST', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/zip' }, body: 'binary'};
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/households/import \ --header 'Content-Type: application/zip' \ --cookie merran.session_token=<merran.session_token> \ --data binaryServer admins only, as for starting any household. The body is the export’s zip. A household is made with the export’s name and details, you become its owner, and it becomes the one in use on this device; its recipes are imported in the background: follow the job at /households/current/jobs/{jobId}.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Responses
Section titled “Responses”Made, and importing.
object
object
The meals filled for it (by Fill the week and Plan each week), in a day’s order: every meal until it opts out of some. Any meal can be planned by hand.
object
What it does, like “household.import”.
Whether it comes round on a schedule, like the nightly purge.
How far it’s got, once it says.
object
What it did, once it’s done. A job followed item by item, like importing several links, says what it’s done so far as it goes.
Why it last failed.
Not before then.
Example
{ "household": { "id": "0199e8b0-5a10-7a01-8b00-000000000003", "name": "The Riveras", "country": "US", "currency": "USD", "timeZone": "America/Phoenix", "weekStartsOn": 0, "meals": [ "dinner" ], "role": "owner" }, "job": { "id": "0199e8b0-5a10-7a01-8b00-00000000000b", "kind": "household.import", "status": "queued", "scheduled": false, "householdId": "0199e8b0-5a10-7a01-8b00-000000000003", "progress": null, "result": null, "error": null, "attempts": 0, "maxAttempts": 3, "runAt": "2026-10-15T18:30:00.000Z", "startedAt": null, "finishedAt": null, "createdAt": "2026-10-15T18:30:00.000Z" }}That isn’t a Merran export this Merran can read.
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." } }}The file is too big.
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.