---
title: "Get a Contact Filter"
method: GET
path: "/contacts/filters/{id}"
tags: ["Contacts::Filter"]
---

# Get a Contact Filter

`GET /contacts/filters/{id}`

Fetches a previously saved contact filter by id. This route is shallow — the workspace is resolved from
the filter itself, so no `workspace_id` is required in the path. Use the `id` (or `public_id`) returned by
`POST /api/v2/workspaces/{workspace_id}/contacts/filters` with `save: true`.

Returns the same resource shape as the generate endpoint, with the identity fields populated. The
`stable_id` is re-derived from the saved filter, so it can be passed straight to
`GET /api/v2/workspaces/{workspace_id}/contacts?stable_id=…`.

## Path parameters

- `id` string, required

## Response `200`

OK

- object
  - `id` integer, required — Saved filter ID.
  - `public_id` string, required — Obfuscated saved filter ID.
  - `workspace_id` integer, required — Workspace the filter belongs to.
  - `name` string, nullable, required — Name of the saved filter, or `null` when it has no name.
  - `stable_id` string, required — URL-encoded Refine `stable_id` token in the standard gzip+base64 full-state format — interoperable with the server-rendered filter UI. Pass as `?stable_id=…` to the contacts index (`GET /api/v2/workspaces/{workspace_id}/contacts`) to apply this filter to the results.
  - `filter` object, required — The structured filter.
    - `conjunction` 'and' | 'or', required — How the criteria are joined — `and` (all must match) or `or` (any must match).
    - `criteria` RefineFilterCriterion[], required — Ordered list of filter criteria.
      - `attribute` string — The contact attribute to filter on (e.g. `tags.id`, `created_at`, `email_address`). The public API restricts attributes to a [safe whitelist](https://accounts.myclickfunnels.com/.well-known/refine-filters/skill.md#safe-condition-whitelist) — see the [Refine Filters Skill](https://accounts.myclickfunnels.com/.well-known/refine-filters/skill.md) for the full reference.
      - `clause` string — The comparison operator for this criterion (e.g. `in`, `eq`, `gte`, `lte`, `st`, `nst`). Allowed clauses depend on the attribute. Text attributes (`email_address`, `first_name`, `last_name`) only accept `eq` and `sw` on the public API; see the [Refine Filters Skill](https://accounts.myclickfunnels.com/.well-known/refine-filters/skill.md#safe-condition-whitelist).
      - `value` union — The comparison value. Type depends on the attribute and clause: - **Option conditions** (tags, products, etc.): a single opaque public id string, or an array of public id strings. - **Date/datetime conditions**: an ISO 8601 date string (`"2026-01-01"`) or datetime string (`"2026-01-01T00:00:00Z"`). For `between`/`not_between` clauses supply an array of exactly two date strings. - **Text/numeric conditions**: a plain string or number. - **Set/not-set clauses**: omit `value` entirely.
        - string
        - string[]

## Other responses

- `401` — Unauthorized
- `404` — Not Found — no such filter, or it belongs to a workspace you cannot access

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) · [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/myclickfunnels/clickfunnels-api/revisions/ae6313eaa176/schema)
