---
title: "Fetch Conditional Split Step"
method: GET
path: "/funnels/{funnel_id}/conditional_split_steps/{id}"
tags: ["Funnels::ConditionalSplitStep"]
---

# Fetch Conditional Split Step

`GET /funnels/{funnel_id}/conditional_split_steps/{id}`

Fetch a single conditional split step with its branches and condition.

## Path parameters

- `funnel_id` integer, required
- `id` integer, required

## Response `200`

OK

- ConditionalSplitStepAttributes — A conditional split step routes contacts down one of two branches based on whether they match a contact filter (`condition`). Each branch carries the `show_page_step` + `page` attached to that branch (both `null` when the branch is empty). The first branch (`branches[0]`) is the **matched** branch; the second (`branches[1]`) is the **unmatched** branch. See the [Funnels Skill](https://accounts.myclickfunnels.com/.well-known/funnels/skill.md#conditional-split-steps) for the full conditional-split surface (positioning, multi-page branches, attaching filters). The `condition.filter_id` is the public id of a RefineFilter scoped to the same workspace. Pass it on PATCH to attach or replace the filter. Create filters first via `POST /api/v2/workspaces/{workspace_id}/refine_filters` — see [Attaching a filter](https://accounts.myclickfunnels.com/.well-known/funnels/skill.md#attaching-a-filter) and the cross-link to [Applying filters to conditional split steps](https://accounts.myclickfunnels.com/.well-known/refine-filters/skill.md#applying-filters-to-conditional-split-steps). On `GET /funnels/{funnel_id}/conditional_split_steps/{id}` (show), `condition.filter` is always included as a full RefineFilter object. On the list endpoint it is included only when `expand[]=filter` is passed.
  - `id` integer — Conditional split step ID
  - `public_id` string — Obfuscated conditional split step ID
  - `funnel_id` integer — ID of the funnel containing this conditional split
  - `funnel_public_id` string — Obfuscated funnel ID
  - `condition` object
    - `filter_id` string, nullable — Public id of the attached RefineFilter. `null` when no filter has been set up.
    - `is_setup` boolean — True when a filter has been attached and the conditional split is ready to evaluate.
    - `filter` RefineFilterAttributes — A reusable workspace-scoped audience filter composed of one or more criteria joined by a single conjunction. Public API requests are validated against a [safe-condition whitelist](https://accounts.myclickfunnels.com/.well-known/refine-filters/skill.md#safe-condition-whitelist); criteria outside the whitelist return 422 with a pointer to the developer community.
      - `id` integer — Refine Filter ID
      - `public_id` string — Obfuscated Refine Filter ID
      - `workspace_id` integer — ID of the workspace this filter belongs to
      - `name` string, nullable — Optional human-readable name for the filter. Must be unique within the workspace when set.
      - `filter_class` string — The filter class. Currently always `ContactsFilter`.
      - `conjunction` 'and' | 'or' — How the criteria are joined — `and` (all must match) or `or` (any must match).
      - `criteria` RefineFilterCriterion[] — 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[]
      - `created_at` string, date-time — Created at
      - `updated_at` string, date-time — Updated at
  - `branches` object[] — Ordered branches — `[matched, unmatched]`.
    - `show_page_step` object, nullable — The ShowPageStep function attached to this branch, or null if empty.
      - `id` integer
      - `public_id` string
      - `name` string
      - `current_path` string
    - `page` object, nullable — The page attached to this branch, or null if empty.
      - `id` integer
      - `public_id` string
      - `name` string
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `401` — Unauthorized
- `404` — Not Found

---

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