Merran documentation API & integrations
A search
GET
/api/discover/{discoveryId}
const url = 'http://localhost:3000/api/discover/0199e8b0-5a10-7a01-8b00-00000000002d';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/discover/0199e8b0-5a10-7a01-8b00-00000000002d \ --cookie merran.session_token=<merran.session_token>With an API key, it needs the recipes: read permission.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”discoveryId
required
string
Example
0199e8b0-5a10-7a01-8b00-00000000002dResponses
Section titled “Responses”The search, as far as it’s got.
Media typeapplication/json
object
id
required
string
theme
required
string
collection
required
The starter collection it found more for (POST /collections/{collection}/find), or null.
string | null
status
required
Still searching, done, or failed (error says why).
string
error
required
string | null
recipes
required
Up to eight, each a page Merran opened and can import, no more than two from a site unless there aren’t others.
Array<object>
object
url
required
The recipe’s page, to import at POST /recipes/import.
string
name
required
string
site
required
string
minutes
required
number | null
photo
required
string | null
why
required
Why it’s a good pick.
string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{ "id": "0199e8b0-5a10-7a01-8b00-00000000002d", "theme": "cozy fall soups", "collection": null, "status": "done", "error": null, "recipes": [ { "url": "https://cooking.example/butternut-squash-soup", "name": "Roasted Butternut Squash Soup", "site": "cooking.example", "minutes": 60, "photo": "https://cooking.example/images/squash-soup.jpg", "why": "Vegetarian and freezes well, with the squash roasted for depth." } ], "createdAt": "2026-10-01T17:30:00.000Z", "updatedAt": "2026-10-01T17: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 search.
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.