Skip to main content
POST
Every plan can use this endpoint. A view is the same saved filter the Contacts page uses, so it shows up in the dashboard too. A view made with an API key shows the account owner as its creator. If the account has no owner, creating a view returns a 409.

Body

string
required
The workspace. Required.
string
required
The view name, 1 to 100 characters after trimming.
object[]
default:"[]"
Up to 50 filters. See Filters.
object
How the view sorts contacts: { "key", "direction" }, where direction is asc or desc. Send null or leave it out for the default order.

Filters

Each filter is { "id", "fieldKey", "operator", "value" }, the same shape the Contacts page saves. Every filter is checked when you save the view: an unknown fieldKey, an operator the field doesn’t support, or a missing or badly formatted value gets a 400 that lists each problem. That matters because a view is a campaign’s audience, and a filter that doesn’t apply would match every contact. Values by type:
  • Yes/no (dnd and yes/no custom fields): Yes or No. true and false also work, in any case. The view stores Yes or No, the same as the dashboard, so reading a view back shows Yes or No. { "fieldKey": "dnd", "operator": "equals", "value": "Yes" } matches contacts on Do Not Disturb.
  • Date: a day as YYYY-MM-DD, for example 2026-01-31. is_between takes two days joined by .., start first: 2026-01-01..2026-01-31. Both days count. in_past_days takes a whole number of days, for example 30.
  • Number: a number, for example 10 or -2.5.
  • is_empty and is_not_empty need no value.
For a custom field, FieldName is its name with the spaces removed, for example custom:{{LeadSource}} for Lead Source. value is at most 1,000 characters and id at most 64.
creatorName is null here. List contact views shows the creator’s name.

Errors