Translates a natural-language audience description into a ClickFunnels contact filter using an AI model.
The response always includes the same key set: a stable_id token, a structured filter object, and the
identity fields id, public_id, workspace_id, and name. When save: true is supplied the filter is
persisted as a reusable Refine::StoredFilter and those identity fields are populated; otherwise they are
null. A saved filter can be fetched later via GET /api/v2/contacts/filters/{id}.
Pass the returned stable_id to GET /api/v2/workspaces/{workspace_id}/contacts as the value of the
stable_id query parameter. Keep it opaque and let the HTTP client encode the complete parameter value;
with curl, use -G --data-urlencode "stable_id=$STABLE_ID". Do not decode it or interpolate it directly
into a raw URL. Alternatively, pass the returned id as stored_filter_id (requires save: true).
The stable_id token uses the standard gzip+base64 Refine full-state format — the same format the
server-rendered filter UI produces and consumes — making tokens fully interoperable between the API
and the HTML filter UI.
Although this is a POST, generating a filter persists nothing, so a token with read-only access to
the Contacts category may call it (the stable_id it returns is usable against read endpoints like
the contacts index). Passing save: true persists a stored filter and requires write access.
Because this endpoint selects from the full condition catalog, it can produce text criteria that no
index can serve. On a text attribute eq and sw resolve against an index, while cont (contains)
and ew (ends with) force a scan of every value stored for that attribute - the cost tracks how many
values the attribute holds rather than how many contacts the filter selects, so adding further
criteria may not reduce it. This is most visible on free-text contact custom attributes, which only
this endpoint can select on, and on a workspace with millions of contacts it is what makes evaluating
the filter exceed the request limit. Where the description allows it, ask for an exact value or a
prefix rather than a substring.
See Generate a contact filter from plain English in the Refine Filters Skill for a worked request and for managing a saved filter afterwards.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||