Skip to content

List recipes

GET
/api/v1/recipes
curl --request GET \
--url 'http://127.0.0.1:8080/api/v1/recipes?limit=50&offset=0&state=active&sort=relevance' \
--header 'Authorization: Bearer <token>'
limit

Maximum number of entries to return

integer format: int64
default: 50 >= 1 <= 200

Maximum number of entries to return

offset

Number of entries to skip

integer format: int64
0

Number of entries to skip

q

Recipe text with bounded title/author typo matching and structured filters. author: requires full author-name membership with Unicode case, NFC, and whitespace normalization; accents and punctuation are preserved. ingredient: requires literal word-prefix matches within one ingredient name, including optional and alternative names, with original-line fallback only when that name is absent

string
<= 200 characters

Recipe text with bounded title/author typo matching and structured filters. author: requires full author-name membership with Unicode case, NFC, and whitespace normalization; accents and punctuation are preserved. ingredient: requires literal word-prefix matches within one ingredient name, including optional and alternative names, with original-line fallback only when that name is absent

state

Library state to list

string
default: active
Allowed values: active trash

Library state to list

sort

Recipe list ordering

string
default: relevance
Allowed values: relevance updated-desc title-asc rating-desc

Recipe list ordering

group_translations

Present each set of translated recipes once, as the rendition the preferred languages choose among those that match

boolean

Present each set of translated recipes once, as the rendition the preferred languages choose among those that match

languages

Comma-separated BCP 47 content languages in order of preference, used when grouping translations

string
<= 1000 characters

Comma-separated BCP 47 content languages in order of preference, used when grouping translations

OK

Media typeapplication/json
object
items
required
Array<object> | null
object
active_time

Derived time this recipe needs the cook

string
authors
required
Array<string> | null
books
required

Books this recipe was deliberately placed in

Array<object> | null
object
id
required
string
kind
required
string
Allowed values: personal publication
title
required
string
key
additional properties
any
created_at
required
string format: date-time
deleted_at
string format: date-time
description
string
favorite
required
boolean
id
required

Identifier of this entry in the local Savorum library

string
language

The recipe’s primary language as a BCP 47 tag

string
last_cooked

Most recent cooking record

string format: date
primary_image
object
alt
string
asset_id
required
string
/^sha256:[a-f0-9]{64}$/
caption
string
local_asset_id
required
string
media_type
required
string
url

Immutable asset URL

string
key
additional properties
any
recipe_id
required

Portable recipe document identifier

string
revision
required
integer format: int64
>= 1
source_books
required

Publication books this recipe was taken from

Array<object> | null
object
id
required
string
kind
required
string
Allowed values: personal publication
title
required
string
key
additional properties
any
tags
required
Array<object> | null
object
color
string
id
required
string
name
required
string
key
additional properties
any
times_cooked
required

Imported baseline plus this reader’s cooking records

integer format: int64
title
required
string
total_time

Derived time from starting to being able to eat

string
translations

Other renditions of a result grouped by translation; present only when grouping was requested

Array<object> | null
object
id
required

Library entry identifier

string
language
required

The rendition’s primary language as a BCP 47 tag

string
matched
required

The rendition also matched the search; false when the request had no search

boolean
title
required
string
key
additional properties
any
updated_at
required
string format: date-time
key
additional properties
any
limit
required
integer format: int64
offset
required
integer format: int64
total
required
integer format: int64
key
additional properties
any
Example
{
"items": [
{
"books": [
{
"kind": "personal"
}
],
"source_books": [
{
"kind": "personal"
}
]
}
]
}

No valid session or API token (authentication-required), or the credential sent is invalid (invalid-credentials).

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer format: int64
title
required
string
type
required
string
key
additional properties
any
Examplegenerated
{
"code": "example",
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Unprocessable Entity

Media typeapplication/problem+json
object
code

Stable application error code; clients may also use the problem type suffix.

string
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

key
additional properties
any
instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
params

Structured context for the stable error code.

object
key
additional properties
any
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
violations
Array<object>
object
code
required
string
location
required
string
params
object
key
additional properties
any
key
additional properties
any
Example
{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Internal Server Error

Media typeapplication/problem+json
object
code

Stable application error code; clients may also use the problem type suffix.

string
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

key
additional properties
any
instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
params

Structured context for the stable error code.

object
key
additional properties
any
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
violations
Array<object>
object
code
required
string
location
required
string
params
object
key
additional properties
any
key
additional properties
any
Example
{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}