Filters

Target participants using typed slug filters with structured operators.

Filters let you target participants by demographics, geography, profession, and participation history. Each filter is a single-key object where the key is a typed slug and the value contains operators.

Typed Slug Format

Filters use the format {type}--{attribute}. For example: integer--age, multi_select--country.

Why typed slugs?

The {type}--{slug} format encodes the filter's data type in the slug itself. This is intentional:

  • Self-describing payloads. You can validate operators client-side without fetching the catalog first. An integer-- filter takes $gte/$lte, a multi_select-- filter takes $in/$eq.
  • Future cross-platform portability. The typed slug format is designed to enable mapping filters from other panel providers in the future.

Operators

OperatorMeaningApplies to
$eqEqualssingle_select, multi_select
$inAny ofsingle_select, multi_select
$gteGreater than or equalinteger
$lteLess than or equalinteger
$allMust have all ofmulti_select
$ninNone ofsingle_select, multi_select

Example

[
  { "integer--age": { "$gte": 25, "$lte": 45 } },
  { "multi_select--country": { "$in": ["US", "CA"] } },
  { "multi_select--job_function": { "$eq": "software-engineer" } }
]

Supported Filters

This API is in beta. Only filters listed in the filter catalog are supported. Unrecognized slugs will return a BAD_REQUEST error. Support for additional custom filters and cross-platform filter mapping is on the roadmap.