Merran documentation API & integrations
The server's settings
const url = 'http://localhost:3000/api/settings/server';const options = { method: 'GET', headers: {cookie: 'merran.session_token=<merran.session_token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:3000/api/settings/server \ --cookie merran.session_token=<merran.session_token>Server admins only. Every server setting that can be seen here, with where its value comes from, and a little about the server.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The settings.
object
object
object
Its value, or null for a secret or a setting that isn’t set.
The environment variable that sets it, which means it can’t be changed here.
object
Its last four characters, when it’s long enough.
Sealed with another master key, so it needs entering again.
Video import’s tools, by their versions, or null when they aren’t there; and whether there’s a cookies.txt for sites that want a signed-in session.
object
The recipe sites Merran reads, the recipes it has from them, how many of the starter collections’ classics open, and when a site was last read.
object
object
The redirect address to give the Kroger developer app: null without a public address set, when it’s this server’s address and /api/stores/kroger/callback.
object
Example
{ "about": { "version": "0.1.0", "installMethod": "docker", "database": "sqlite", "publicUrl": "https://merran.example.com" }, "settings": [ { "key": "errorTracking.environment", "kind": "text", "value": "home", "default": "production", "source": "saved", "lockedBy": null }, { "key": "errorTracking.dsn", "kind": "secret", "value": null, "default": null, "source": "environment", "lockedBy": "MERRAN_SENTRY_DSN", "secret": { "set": true, "hint": "4f2a", "unreadable": false } } ], "video": { "ytDlp": "2026.08.19", "ffmpeg": "8.0", "cookies": false }, "sites": { "sites": 12, "recipes": 214, "classics": { "working": 71, "all": 73 }, "readAt": "2026-10-15T18:30:00.000Z" }, "kroger": { "redirectUri": "https://merran.example.com/api/stores/kroger/callback" }}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.