Appearance
Filtering and search
The list resources endpoint (and export) supports filtering and text search to narrow down results.
Filtering
Use the filter query parameter to apply conditions on resource fields. Filters are passed as nested query parameters:
GET /v2/resources/posts?filter[field][operator]=valueYou can filter on any field of the blueprint (by slug), plus published, published_at, created_at and updated_at. On a blueprint with variants, conditions apply to the values of the requested variant.
An unknown field or operator returns 422 with the code INVALID_FILTER; the message lists the fields you can filter on.
Simple equality
GET /v2/resources/posts?filter[category]=newsThis is the same as filter[category][eq]=news.
Operators
| Operator | Description | Example |
|---|---|---|
eq (alias equals) | Equals | filter[title][eq]=Hello |
ne (alias not_equals) | Not equals | filter[category][ne]=archive |
gt | Greater than | filter[price][gt]=100 |
gte | Greater than or equal | filter[price][gte]=100 |
lt | Less than | filter[price][lt]=50 |
lte | Less than or equal | filter[price][lte]=50 |
in | In list | filter[category][in]=news,blog |
not_in | Not in list | filter[category][not_in]=archive |
contains | Contains substring | filter[title][contains]=hello |
not_contains | Does not contain | filter[title][not_contains]=draft |
starts_with | Starts with | filter[slug][starts_with]=post- |
ends_with | Ends with | filter[slug][ends_with]=-2026 |
between | Between two values, inclusive | filter[price][between]=10,100 |
null | Is null (true/1) or is not null (false/0) | filter[image][null]=true |
Several operators on the same field are combined: filter[price][gte]=10&filter[price][lt]=100.
gt,gte,lt,lteandbetweenconvert numeric values to numbers, sofilter[price][gt]=100compares numerically. Non-numeric values (e.g.2026-01-01) are compared as strings.eqandnecompare the value as given.inandnot_inmatch fields holding a single value. They do not look inside array values such asmulti-enumfields.
Special filters
Published status
Filter by publication status using the published filter:
GET /v2/resources/posts?filter[published]=true
GET /v2/resources/posts?filter[published]=falsetrue (or 1) matches resources whose published_at falls on or before today; false (or 0) matches drafts and resources scheduled after today. The comparison is by calendar day. Other values are ignored. See Publishing.
Date fields
published_at, created_at and updated_at accept a reduced set of operators: eq, ne, gt, gte, lt, lte, between and null (plus the equals/not_equals aliases). Any other operator returns INVALID_FILTER.
GET /v2/resources/posts?filter[created_at][gte]=2026-01-01
GET /v2/resources/posts?filter[published_at]=2026-01-15
GET /v2/resources/posts?filter[published_at][null]=true
GET /v2/resources/posts?filter[updated_at][between]=2026-01-01,2026-02-01Equality and gt/gte/lt/lte compare by calendar day, ignoring the time. between compares full timestamps, so a bare date means midnight: 2026-01-01,2026-02-01 stops at the very start of February 1st.
Combining filters
Multiple filters can be combined. All conditions are applied with AND logic:
GET /v2/resources/posts?filter[published]=true&filter[category][eq]=news&filter[created_at][gte]=2026-01-01Search
Use the search query parameter to search across the blueprint's text and rich-text fields:
GET /v2/resources/posts?search=hello+worldThe search is a single substring match: a resource matches if any text or rich-text field contains the whole search string. It is not split into words: hello world does not match "world, hello". If the blueprint has no text or rich-text field, search is ignored.
Search can be combined with filters:
GET /v2/resources/posts?search=hello&filter[published]=true