Merran documentation API & integrations
Change the household's lists
PUT
/api/list/lists
const url = 'http://localhost:3000/api/list/lists';const options = { method: 'PUT', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"lists":[{"id":"0199e8b0-5a10-7a01-8b00-00000000001c","name":"Groceries","aisles":[]},{"name":"Costco","aisles":["0199e8b0-5a10-7a01-8b00-000000000021"]}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url http://localhost:3000/api/list/lists \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "lists": [ { "id": "0199e8b0-5a10-7a01-8b00-00000000001c", "name": "Groceries", "aisles": [] }, { "name": "Costco", "aisles": [ "0199e8b0-5a10-7a01-8b00-000000000021" ] } ] }'Household admins only. The lists as a whole, in order: one with no id is new, and one left out goes, with what’s on it moving to the main list, which has to stay. Each store has one list, and each aisle goes on one. Then what’s waiting on the main list moves to the list its food or aisle goes on now.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
lists
required
Array<object>
object
id
An existing list’s id; none for a new one.
string | null
name
required
string
aisles
required
Array<string>
Example
{ "lists": [ { "id": "0199e8b0-5a10-7a01-8b00-00000000001c", "name": "Groceries", "aisles": [] }, { "name": "Costco", "aisles": [ "0199e8b0-5a10-7a01-8b00-000000000021" ] } ]}Responses
Section titled “Responses”Saved.
Media typeapplication/json
object
lists
required
Array<object>
object
id
required
string
name
required
string
main
required
The main list, which takes what no other list does.
boolean
aisles
required
The ids of the aisles that go on it.
Array<string>
Example
{ "lists": [ { "id": "0199e8b0-5a10-7a01-8b00-00000000001c", "name": "Shopping list", "main": true, "aisles": [] }, { "id": "0199e8b0-5a10-7a01-8b00-000000000025", "name": "Costco", "main": false, "aisles": [ "0199e8b0-5a10-7a01-8b00-000000000021" ] } ]}The main list left out, too many lists, a store twice or an aisle on two lists.
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 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 list or aisle.
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.