v1

latestOpenAPI 3.1.0MIT2026-07-243952451019.0 KB
Page

Create Page

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.

external_url is rejected — to create an externally-hosted (SDK) page use POST /api/v2/workspaces/:workspace_id/pages/external.

post/workspaces/{workspace_id}/pages

Path parameters

workspace_idinteger required

Query parameters

expand[]string[]

Expand additional data in the response. Use expand[]=field_name to include optional fields (e.g., expand[]=head_code&expand[]=footer_code&expand[]=custom_css&expand[]=markup). Markup is opt-in on every endpoint (show, list, create, update) because PML serialization runs per page. custom_css is available on internal pages only. See the Expanding guide for available fields and examples.

Request body

Example request

{
  "page": {
    "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": "<script>console.log('hello');</script>",
      "head_code_mode": "append",
      "markup": "<section>\n  <row cols=\"1\">\n    <column>\n      <headline>Welcome to our page</headline>\n      <subheadline>Start your journey here</subheadline>\n    </column>\n  </row>\n</section>\n"
    }
  }
}

Response

Created

idinteger

Page ID

public_idstring

The public identifier of the page

workspace_idinteger

Workspace ID that the page belongs to.

namestring

Page name of the editable page element. Want to filter by it? See our <i><u><a href="https://developers.myclickfunnels.com/docs/filtering-by-page" target="_blank">help guide on that topic</a><u><i>.

descriptionstring nullable

A short description of the page (max 1000 characters).

theme_idinteger nullable

Theme

created_atstring date-time

Created at

seo_titlestring nullable

Custom title for search engine results. Falls back to the site's SEO title if not set.

seo_descriptionstring nullable

Custom meta description for search engine results. Falls back to the site's SEO description if not set.

seo_indexboolean

Whether search engines should index this page. Defaults to false.

updated_atstring date-time

Updated at

type'landing_page' | 'site_page' | 'funnel_page' | 'theme_page' | 'null' nullable

The type of page. Can be one of landing_page, site_page, funnel_page or theme_page. May be null for a page that matches none of these categories.

current_pathstring nullable

The current URL path for the page resource. This is the canonical URL for landing and site pages. null for externally-hosted (SDK) pages. For funnel pages this is NOT the customer-facing URL — that's url (or show_page_step.current_path for the path component). The page-level current_path on a funnel page does not route the visitor through the workflow step, so a <checkout/> element on it will not see the step's attached products.

urlstring nullable

The customer-facing URL for the page on the live site. For funnel pages this routes through the workflow step (which feeds <checkout/> its IncludedProducts). Always prefer this over current_path when constructing links.

head_codestring nullable

Expandable Custom HTML/JavaScript code injected into the page head section. Only returned when expand[]=head_code is provided. Note: expanding may add latency, especially on list endpoints. Use sparingly.

footer_codestring nullable

Expandable Custom HTML/JavaScript code injected before the closing body tag. Only returned when expand[]=footer_code is provided. Note: expanding may add latency, especially on list endpoints. Use sparingly.

custom_cssstring nullable

Expandable Raw CSS applied at the page level (no <style> wrapper). Maps to the CSS tab in the page editor's Code Editor panel. Internal pages only. Only returned when expand[]=custom_css is provided. Note: expanding may add latency, especially on list endpoints. Use sparingly.

markupstring

Expandable The PML (Page Markup Language) representation of the page's visual tree. Only returned when expand[]=markup is provided. Note: expanding may add latency, especially on list endpoints. Empty string when the page has no visual content yet. See the Page Markup Skill for the full DSL reference.

Example response

{
  "id": 9,
  "public_id": "kJzvQi",
  "workspace_id": 42000,
  "name": "Great Page",
  "description": "A high-converting sales page",
  "theme_id": null,
  "seo_title": "Great Page - My Brand",
  "seo_description": "Learn more about our amazing offer",
  "seo_index": true,
  "created_at": "2025-01-01T00:00:00.000Z",
  "updated_at": "2025-01-01T00:00:00.000Z",
  "type": "funnel_page",
  "current_path": "/my-page-canonical",
  "url": "https://myteam.myclickfunnels.com/my-funnel-page",
  "show_page_step": {
    "id": 42,
    "public_id": "aBcDeF",
    "name": "Best Page Step",
    "current_path": "/my-funnel-page",
    "sort_order": 0,
    "products": []
  },
  "funnel": {
    "id": 123,
    "public_id": "xYzAbC",
    "name": "My Sales Funnel"
  },
  "sdk": null,
  "markup": "<section>\n  <row cols=\"1\">\n    <column>\n      <headline>Great Page</headline>\n      <subheadline>Start your journey here</subheadline>\n    </column>\n  </row>\n</section>\n"
}