openapi: 3.2.0 info: title: ClickFunnels Page API termsOfService: https://www.clickfunnels.com/terms-of-service contact: name: ClickFunnels API Team url: https://developers.myclickfunnels.com x-logo: url: https://statics.myclickfunnels.com/image/1126065/file/31edf05760fafe41a82f16a668ab251f.png description: 'The ClickFunnels REST API that powers webhooks, native integrations, and Zapier lets you manage your ClickFunnels data, automate your workflows, and recreate ClickFunnels functionality in your own apps. ' license: name: MIT url: https://opensource.org/licenses/MIT version: 2.0.0 servers: - url: https://{subdomain}.myclickfunnels.com/api/v2 description: ClickFunnels API variables: subdomain: default: myworkspace security: - BearerAuth: [] tags: - name: Page description: '> Page offers extra information about ClickFunnels pages, like those that are part of funnels. It''s the main element that the user modifies when editing a Page in the ClickFunnels editor. You can also learn how to source Page name and public ID from your ClickFunnels UI [here](https://developers.myclickfunnels.com/docs/filtering-by-page). See the [Pages Skill](https://accounts.myclickfunnels.com/.well-known/pages/skill.md) for [building a page](https://accounts.myclickfunnels.com/.well-known/pages/skill.md#building-a-page) and [positioning it within a funnel](https://accounts.myclickfunnels.com/.well-known/pages/skill.md#positioning-a-page-within-a-funnel); the page body is authored in PML — see the [Page Markup Skill](https://accounts.myclickfunnels.com/.well-known/page-markup/skill.md). For pages you host yourself, see [Create an External Page](https://accounts.myclickfunnels.com/.well-known/sdk/create-external-page/skill.md) and [Add Checkout to an External Page](https://accounts.myclickfunnels.com/.well-known/sdk/add-checkout/skill.md). To move those externally-hosted pages to a new domain, see [Migrate an External Page Domain](https://accounts.myclickfunnels.com/.well-known/sdk/migrate-external-page-domain/skill.md). ' paths: /workspaces/{workspace_id}/pages: get: tags: - Page summary: List Pages description: Page offers extra information about ClickFunnels pages, like those that are part of funnels. operationId: listPages parameters: - name: workspace_id in: path required: true schema: type: string - $ref: '#/components/parameters/after' - $ref: '#/components/parameters/sort_order' - $ref: '#/components/parameters/sort_property' - name: filter in: query description: 'Filter by available properties in query params, like this: `api/v2/resources?filter[id]=value&filter[another_property]=value1,value2`. Check our Filtering guide for examples and all about filtering [here](https://developers.myclickfunnels.com/docs/filtering). ' required: false schema: type: object properties: id: type: string description: A comma-separated list of page IDs to filter by. example: 1,42 theme_id: type: string description: A comma-separated list of theme IDs to filter by. example: 1,42 funnel_pages: type: boolean description: Only show pages that belong to a funnel as opposed to standalone landing or site pages. example: true funnel_ids: type: string description: A comma-separated list of funnel IDs to filter pages by. Returns only pages belonging to the specified funnels. example: 123,456 style: deepObject explode: true - $ref: '#/components/parameters/ExpandPageFields' responses: '200': description: OK headers: Pagination-Next: $ref: '#/components/headers/PaginationNext' Link: $ref: '#/components/headers/Link' content: application/json: schema: type: array items: $ref: '#/components/schemas/PageAttributes' example: - id: 61 public_id: eldUyN workspace_id: 42000 name: Great Page theme_id: null created_at: '2025-01-01T00:00:00.000Z' updated_at: '2025-01-01T00:00:00.000Z' type: funnel_page current_path: /great-page url: https://myteam.myclickfunnels.com/funnel-great-page show_page_step: id: 100 public_id: xYz123 name: Great Page Step current_path: /funnel-great-page sort_order: 0 products: [] funnel: id: 50 public_id: AbC789 name: Sales Funnel sdk: null description: null seo_description: null seo_index: false seo_title: null - id: 62 public_id: AtcUVH workspace_id: 42000 name: Landing Page theme_id: null created_at: '2025-01-01T00:00:00.000Z' updated_at: '2025-01-01T00:00:00.000Z' type: landing_page current_path: /landing-page url: https://myteam.myclickfunnels.com/landing-page show_page_step: null funnel: null sdk: null description: null seo_description: null seo_index: false seo_title: null '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: error: API key missing or invalid '404': description: Not Found content: application/json: schema: type: object properties: error: type: string description: Not found - This usually happens when you try to access a record that does not exist in your account. It can also happen when the provided parent record is missing, e.g. you have put in a non-existent Workspaces parent ID. example: error: 'Not found: Record missing' post: tags: - Page summary: Create Page description: 'Create a new internal page in the workspace. By default, creating a page without references to a funnel or show page step will create a standalone landing page. You can optionally attach the page to a funnel by providing either: - `funnel.funnel_id`: Creates a new show page step in the specified funnel. When provided without `show_page_step_id`, the page is added as the last step of the funnel, positioned after the currently last page. - `funnel.show_page_step_id`: Swaps the referenced step to point at this newly created page. The page previously linked to that step becomes an orphan (kept in the workspace, no longer linked to any step). **`sort_order`** (optional, top-level): Controls the zero-based position within the funnel when creating with `funnel.funnel_id`. `0` inserts before the first existing step; omit to append at the end. Out-of-bounds values (negative or greater than the current step count) return 422. `sort_order` is ignored when `funnel.show_page_step_id` is used — the swap target''s current position is preserved. **`funnel.after_show_page_step_id`** (optional, with `funnel.funnel_id`): Insert the new step right after the referenced show page step — also places the page inside a split branch. Alternative to `sort_order`. An id that does not resolve to a step in the funnel returns 400. To also attach products to the page''s checkout step in the same call, pass `show_page_step.product_ids: [...]` (sibling of `funnel`). This is the only way to set products at create time — the legacy `funnel.products` shape is rejected with a 400. Products attachment is **additive** and **all-or-nothing**: any unresolved id fails the whole request and the page is not created. **Order bumps**: pass `show_page_step.bumps: [{product_id, preheadline}]` (same semantics as `product_ids`) to attach products as order bumps instead of main products, each with its own optional `preheadline` — the line of copy shown above that bump''s offer. A product may appear in only one of the two blocks per request; naming it in both returns a 400. **`external_url` is rejected** — to create an externally-hosted (SDK) page use `POST /api/v2/workspaces/:workspace_id/pages/external`. ' operationId: createPage externalDocs: description: Pages Skill - building a page (PML body) url: https://accounts.myclickfunnels.com/.well-known/pages/skill.md#building-a-page parameters: - name: workspace_id in: path required: true schema: type: string - $ref: '#/components/parameters/ExpandPageFields' requestBody: description: Information about the Page to create required: true content: application/json: schema: type: object properties: page: type: object $ref: '#/components/schemas/PageParameters' example: page: name: My New Page current_path: /my-new-page theme_id: 12345 description: A landing page for our new product launch seo_title: New Product Launch - My Brand seo_description: Discover our latest product offering seo_index: true funnel: funnel_id: xyz789 show_page_step: product_ids: - PrdAbc head_code: head_code_mode: append markup: "
\n \n \n Welcome to our page\n Start your journey here\n \n \n
\n" responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PageAttributes' example: id: 70 public_id: NewPgX workspace_id: 42000 name: My New Page theme_id: 12345 created_at: '2025-01-01T00:00:00.000Z' updated_at: '2025-01-01T00:00:00.000Z' type: funnel_page current_path: /my-new-page-xyz123 url: https://myteam.myclickfunnels.com/my-new-page show_page_step: id: 200 public_id: StpNew name: My New Page current_path: /my-new-page sort_order: 0 products: [] funnel: id: 100 public_id: xyz789 name: Target Funnel sdk: null description: null seo_description: null seo_index: false seo_title: null '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string examples: invalid_funnel_id: summary: Invalid funnel_id value: error: 'Bad request: The funnel with the provided ID cannot be found.' invalid_show_page_step_id: summary: Invalid show_page_step_id value: error: 'Bad request: The step with the provided ID cannot be found.' invalid_code_mode: summary: Invalid code mode value: error: 'Bad request: Invalid code mode ''invalid''. Must be ''append'' or ''replace''.' invalid_markup: summary: Invalid PML markup value: error: 'Bad request: Markup is not valid PML: unknown top-level element(s) . Top-level elements must be one of:
, , , , , , , , ,