Skip to main content
Filters are supported on every POST .../search endpoint:

Filter shape

Each filter is an object with field, operator, and value.
{
  "filters": [
    { "field": "customer_tier", "operator": "eq", "value": "enterprise" },
    { "field": "amount", "operator": "gte", "value": 50000 }
  ]
}
Multiple filters in the array combine with AND.

Supported operators

OperatorUse
eqEqual
neqNot equal
containsString contains substring
not_containsString does not contain substring
starts_withString starts with
ends_withString ends with
inValue is in array
not_inValue is not in array
gtGreater than
gteGreater than or equal
ltLess than
lteLess than or equal
betweenBetween two values (inclusive). Pass value as [min, max]
emptyField has no value
not_emptyField has any value
contains_allArray field contains all of the given values
contains_noneArray field contains none of the given values

Operator aliases

These read more naturally and resolve to the same operator under the hood.
AliasResolves to
iseq
is_notneq
containcontains
not_containnot_contains
is_any_ofin
greater_thangt
less_thanlt
beforelt
aftergt
include_allcontains_all
exclude_allcontains_none

Custom field filters

Custom fields are filtered by their slug (the same key returned in custom_fields).
{
  "filters": [
    { "field": "customer_tier", "operator": "eq", "value": "enterprise" }
  ]
}
Look up slugs in the custom_field_definitions block of any response.

Examples

Range filter

{ "field": "amount", "operator": "between", "value": [10000, 50000] }

Array membership

{ "field": "industry", "operator": "in", "value": ["Software", "Fintech"] }

Date after

{ "field": "close_date", "operator": "after", "value": "2026-06-01" }

Empty check

{ "field": "next_action_date", "operator": "empty" }