Skip to main content
Add filter, sort, limit, and offset query parameters to any Omneo list endpoint to narrow and order the records it returns. Every endpoint that supports them has a Filtering section on its API Reference page listing the attributes it accepts.

Filter syntax

A filter is an attribute, an optional operator, and a value.
Omit the operator to match exactly. These two requests are the same:

Operators

Omneo ignores attribute filters it does not recognise. An attribute that is not listed on the endpoint page, or an operator that is not in the table above, is dropped from the query rather than returning an error, so a typo returns unfiltered results. The same is true of an unrecognised sort key.
Two of the shared filters below behave differently: filter[search_with] and filter[json_contains] pass the attribute you name straight to the query, so a typo there fails the request rather than being ignored.

Combining filters

Filters combine with AND. A record must satisfy every filter to appear in the response.
Two operators on the same attribute also combine with AND, which is how you express a range.
Attributes containing a dot filter on a related record instead of the record itself. The endpoint page lists these separately under Related attributes.
That request returns Profiles that have at least one tag with a handle of vip or member. Use not_has for the inverse.
not_has applies only to related attributes. On an attribute of the record itself it is ignored.

Sorting

Pass sort with an attribute name. Prefix it with - for descending order, and separate multiple keys with commas.
Sorting accepts the same attributes as filtering, so use the Filter attributes table on the endpoint page. Related attributes are filter only. An unrecognised sort key is ignored.

Paging

On paginated endpoints, page[size] and page[number] set the window. limit and offset apply to endpoints that return the full list in one response.

Shared filters

Four filters are not attribute lookups. They take their own value shape and are available on the same endpoints.

filter[search]

Pass a single term. Omneo runs a partial match against the endpoint’s search attributes and returns records where any one of them contains the term. Search attributes are a separate, shorter list than filter attributes: each record type declares which of its attributes are searchable, and filter[search] reads only that list. The endpoint page shows it under Search attributes. An attribute you can filter on is not searchable unless it appears there.
That request returns Profiles whose first_name, last_name, email, mobile_phone, or profile_type contains chen.
filter[search] has no effect on endpoints with no Search attributes section. Use filter[search_with] there instead.

filter[search_with]

Pass attribute and term pairs. Each pair is a partial match, and the pairs are combined with OR, so a record matches when any one pair matches.
That request returns Profiles whose first_name contains alex or whose email contains example.com. Dot notation searches a related record.
filter[search_with] is not limited to the search attributes, and it is not checked against a whitelist either. Whatever attribute you name goes to the query as written, so an attribute the record does not have fails the request instead of being ignored. Stick to the attributes in the endpoint’s Filter attributes and Related attributes tables.
Use filter[search] for a single search box over the attributes the record type marks searchable, and filter[search_with] when the caller chooses which attribute each term applies to.

filter[custom_field]

Key the filter with the custom field’s namespace and handle, separated by a colon, and pass the value you want to match. The operators in the table above apply here too.
The match runs against the custom field’s stored value. A record matches when it has a custom field with that namespace and handle whose value satisfies the operator. Endpoints whose records carry custom fields show a Custom field filters section on their API Reference page.

filter[json_contains]

Pass a column name and a value separated by a colon to match inside a JSON column such as meta. Everything after the first colon is the value. Omneo parses it as JSON when it is valid JSON, and treats it as a plain string otherwise. Match a key and value inside a JSON object:
Match an element of a JSON array:
The value has to match the shape of the column. A bare string matches an element of an array, and an object matches a member of an object. URL encode the value when it contains characters that are not safe in a query string.

Worked example

Find non-void Transactions over $100 in January 2026, at either of two locations, tagged online, newest first, 50 per page.