Skip to main content
GET
cURL

Authorizations

Authorization
string
header
required

Project-scoped API key, e.g. nohead_sk_k7fz0a9c3m2q_<secret>, or nohead_pk_… for a published-only key. Used by servers, CI, the CLI and coding agents.

Path Parameters

collection_id
string
required

Collection ID, or the collection slug when authenticating with an API key.

Query Parameters

rich_text
enum<string>
default:document

How rich text fields read in the records and drafts returned (and in records they embed with expand): document, the stored ProseMirror JSON document; html, an HTML fragment of known elements with every text and attribute escaped, to put in a page as it is; or markdown (GitHub Flavored), which reads back as the same document when written. Images render with their URLs, so they need no expand: in HTML a WebP rendition at most 1600 pixels wide with its width and height (an SVG as itself), in Markdown the asset's image_url. An image whose asset was deleted is left out of HTML, and written as its asset ID in Markdown. Record history keeps documents.

Available options:
document,
html,
markdown
q
string

The words to search for; empty matches everything.

limit
integer
default:20

Page size.

Required range: 1 <= x <= 100
cursor
string

The next_cursor from the previous page.

filter
object

filter[<key>]=value (equal), or filter[<key>][<operator>]=value; filters combine with AND. Keys are field keys, published_at, deleted (true lists soft-deleted records instead) and, in record lists and counts, created_at and updated_at.

  • eq, ne: equal, not equal. For fields with several values, "contains" and "does not contain". ne matches records with no value.
  • gt, gte, lt, lte: integer, decimal and date fields with one value, and the timestamps.
  • in: any of up to 100 comma-separated values (\, is a comma inside a value, \\ a backslash); for fields with several values, "contains any of".
  • exists: true for records with a value, false for those without (and published_at: published or not).

Values are parsed per field type ("5" is not the integer 5), but not held to the field's limits or format (price[lt]=10 works when max is 5; a slug filter that isn't a slug matches nothing). Dates take today, and dates with a time now too. A day (YYYY-MM-DD) given for a date with a time, or a timestamp, covers that day in the field's time_zone (UTC without one): gte from its start, lte to its end, eq within it. A date with a time matches the same moment written with any offset.

sort
string
expand
string

Comma-separated relation, asset or rich text field keys whose records or assets to embed under expanded (at most 5); for a rich text field, the assets its images show. Embedding needs permission to read what is embedded: records:read for relations, assets:read for assets and rich text (403 otherwise).

Response

A page of matching records.

data
object[]
required
meta
object
required