Merran documentation API & integrations
Change several things on the list at once
POST
/api/list/items/bulk
const url = 'http://localhost:3000/api/list/items/bulk';const options = { method: 'POST', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"ids":["0199e8b0-5a10-7a01-8b00-00000000001d","0199e8b0-5a10-7a01-8b00-00000000001e"],"action":"check"}'};
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/bulk \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "ids": [ "0199e8b0-5a10-7a01-8b00-00000000001d", "0199e8b0-5a10-7a01-8b00-00000000001e" ], "action": "check" }'Take them off, check them off or not, move them to an aisle or another list (remembered for each food), or buy them every week: all or none. The answer says what they were before, for Undo with /list/restore. Ids not on the list are passed over. With an API key, it needs the list: write permission.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
ids
required
Array<string>
action
required
string
aisle
For aisle: the aisle’s id, or null for none.
string | null
list
For move: the list’s id.
string
Example
{ "ids": [ "0199e8b0-5a10-7a01-8b00-00000000001d", "0199e8b0-5a10-7a01-8b00-00000000001e" ], "action": "check"}Responses
Section titled “Responses”Done.
Media typeapplication/json
object
changed
required
integer
before
required
Array<object>
An item as it was, to put it back (Undo).
object
id
required
string
list
required
string
name
required
string
foodKey
required
string | null
quantity
required
number | null
unit
required
string | null
amountText
required
string | null
aisle
required
string | null
checked
required
boolean
source
required
How it got on the list: from the plan, typed in, every week, a usual buy, or the assistant.
string
forMeals
required
Array<object> | null
object
meal
required
string
quantity
required
number | null
unit
required
string | null
createdAt
required
string format: date-time
Example
{ "changed": 1, "before": [ { "id": "0199e8b0-5a10-7a01-8b00-00000000001d", "list": "0199e8b0-5a10-7a01-8b00-00000000001c", "name": "chicken thighs", "foodKey": "chicken thigh", "quantity": 3, "unit": "pound", "amountText": null, "aisle": "0199e8b0-5a10-7a01-8b00-000000000021", "checked": false, "source": "plan", "forMeals": [ { "meal": "0199e8b0-5a10-7a01-8b00-00000000001b", "quantity": 3, "unit": "pound" } ], "createdAt": "2026-10-15T18:30:00.000Z" } ]}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." } }}No such aisle or list.
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.