Merran documentation API & integrations
Put something on the list
const url = 'http://localhost:3000/api/list/items';const options = { method: 'POST', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"text":"2 lb ground beef"}'};
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/list/items \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "text": "2 lb ground beef" }'As typed: “2 lb ground beef” is ground beef, 2 lb; “paper towels” is just that. It goes in the aisle and on the list the household last put the food in, else a first guess and the list for that aisle. With an API key, it needs the list: write permission.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
“2 lb ground beef”, or just “paper towels”.
An aisle’s id; the food’s usual aisle when left out.
A list’s id; the food’s usual list when left out.
Example
{ "text": "2 lb ground beef"}Responses
Section titled “Responses”On the list.
object
The list it’s on.
How much, as it shows: “1 ½ cups”, “half a bag”, or empty.
A unit id, like “cup” or “pound”; null for a count.
An amount in words (“half a bag”), when it isn’t a number.
Its aisle’s id.
How it got on the list: from the plan, typed in, every week, a usual buy, or the assistant.
The planned meals it’s for.
object
Example
{ "id": "0199e8b0-5a10-7a01-8b00-00000000001d", "list": "0199e8b0-5a10-7a01-8b00-00000000001c", "name": "chicken thighs", "amount": "3 lb", "quantity": 3, "unit": "pound", "amountText": null, "aisle": "0199e8b0-5a10-7a01-8b00-000000000021", "checked": false, "source": "plan", "meals": [ { "id": "0199e8b0-5a10-7a01-8b00-00000000001b", "name": "Lemon Chicken" } ], "createdAt": "2026-10-15T18:30:00.000Z"}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 aisle or list.
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.