Thanks for being patient while we implement your feedback to improve the developer experience.

Pages V3

Overview

A page appears on a site that is associated with a channel.

Some pages, such as blog pages, contact forms, and plain-text or HTML pages, are web pages in the traditional sense. They contain markup (a body) and load at a relative page location on the site itself (the url). Other pages, such as link and feed pages, make external or non-visual content available from the menu of a parent page or by direct link.

Bulk operations

All endpoints without a pageId path parameter support bulk operations.

Page types

The following table describes the types of pages that the Pages API can manage:

Page TypeDescriptionBody
pageA user-defined plain-text page.text
contact_formA user-customizable page that contains a contact form.HTML
rawA user-defined page that contains HTML markup or other stringified code.HTML, other code
blogA page that contains blog posts. Use caution; blog-type pages can only be created in the store control panel, but you may be able to change the type of a blog page to something else with this API. Use the Store Content API to work with blog posts and tags.empty string
feedMakes RSS-syndicated content feeds available in the menu of other pages that contain markup.
linkA link to an external absolute URL. Displays in the menu of other pages that contain markup.

Get Pages

GET /content/pages

Request

Returns one or more content pages. This endpoint supports bulk operations.

Authentication

  • X-Auth-Token in header - required

Parameters

  • store_hash in path - string
  • channel_id in query - integer

    Return only pages associated with the specified channel.

  • id:in in query - string

    A comma-separated string of page IDs to fetch. Supports bulk operations. If none of the page IDs passed exist, the query will return an empty data array.

  • name in query - string

    Name of the page.

  • name:like in query - string

    Return only pages whose name or body contain the supplied string.

  • limit in query - integer

    The number of results to return per request. See meta.pagination.per_page in the response body.

  • page in query - integer

    The ordered grouping of results to return. See meta.pagination.current_page in the response body.

  • include in query - string

    Include the requested property in the response. The body property returns the page’s markup, text, or raw content.

example

curl --request GET \ --url 'https://api.bigcommerce.com/stores/[store_hash]/v3/content/pages' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'X-Auth-Token: xxxxxxxxxxxxxxxxx'

Response

Body

object | application/json

Response payload for the BigCommerce API.

  • data
    array[]

  • meta
    object

    Data about the response, including pagination and collection totals.

example

{ "data": [ { "name": "About Our Company", "is_visible": true, "parent_id": 0, "sort_order": 0, "type": "page", "is_homepage": false, "is_customers_only": false, "url": "/my-store-page", "meta_title": "string", "meta_keywords": "\"\"", "meta_description": "\"\"", "search_keywords": "trousers,pockets,luxury" } ], "meta": { "pagination": { "total": 0, "count": 0, "per_page": 0, "current_page": 0, "total_pages": 0, "links": { "previous": "string", "current": "string", "next": "string" } } } }

Create Pages

POST /content/pages

Request

Creates one or more content pages. This endpoint supports bulk operations.

Authentication

  • X-Auth-Token in header - required

Parameters

  • store_hash in path - string
  • include in query - string

    Include the requested property in the response. The body property returns the page’s markup, text, or raw content.

  • Content-Type in header with default of application/json - string - required

Body

application/json
  • email
    string

    Applicable when the page type is contact_form: contact email address that receives messages sent via the form. Must be unique.

    <= 255 characters

    Default:

  • meta_title
    string

  • body
    string

    HTML or variable that populates this page’s element, in default/desktop view. Required in a POST request if the page type is raw.

    Example: <div>Hello World!</div>

  • feed
    string

    The URL of the RSS feed. Required in a POST request if the page type is rss_feed.

  • link
    string

    Required in a POST request to create a link if the page type is link.

  • contact_fields
    string

    Applicable when the page type is contact_form: comma-separated list of keywords representing the fields enabled in the control panel for storefront display. Possible fields include:

    FieldDescription
    fullnameFull name of the customer submitting the form
    phoneCustomer’s phone number, as submitted on the form
    companynameCustomer’s submitted company name
    ordernoCustomer’s submitted order number
    rmaCustomer’s submitted RMA (Return Merchandise Authorization) number

    Example: fullname,orderno,rma

    Default:

  • meta_keywords
    string

    Comma-separated list of SEO-relevant keywords to include in the page’s element.

    Default:

  • meta_description
    string

    Description contained within this page’s element.

  • search_keywords
    string

    Comma-separated list of keywords that shoppers can use to locate this page when searching the store.

    Example: trousers,pockets,luxury

  • url
    string

    Relative URL on the storefront for this page.

    Example: /my-store-page

  • channel_id
    integer

    The Id of the channel where this page should be shown.

    Example: 12

    Default: 1

  • name
    string
    required

    The name of the page. Must be unique.

    >= 1 characters<= 100 characters

    Example: My Store Page

  • is_visible
    boolean

    Determines the visibility of the page in the storefront’s navigation menu.

    Boolean value that specifies the visibility of the page in the storefront’s navigation menu.

    Indicates whether the page is available to users and visible in any menus.

  • parent_id
    integer

    ID of any parent Web page.

    Example: 0

    Default: 0

  • sort_order
    integer

    Determines the order in which the page is displayed on the storefront. (Lower integers specify earlier display.)

    Example: 0

    Default: 0

  • type
    string
    required

    Determines the type of the page.

    ValueDescription
    blogblog page. Read-only; blog pages can only be created in the store control panel.
    contact_formhosts the store's contact form
    linklink to another absolute URL
    pageuser-defined plain-text page
    rawpage that contains markup, such as HTML.
    rss_feedcontains syndicated content from an RSS feed

    Allowed: page | raw | contact_form | feed | link | blog

    Example: page

  • is_homepage
    boolean

    Determines whether this page is the storefront’s home page.

  • is_customers_only
    boolean

    If true, this page will only be visible to customers that are logged in to the store.

    example-1

    { "channel_id": 1, "name": "Content Page", "is_visible": false, "parent_id": 0, "sort_order": 0, "type": "page", "body": "<div>Hello World!</div>", "is_homepage": false, "meta_title": "My Content page", "meta_keywords": "string", "meta_description": "string", "search_keywords": "string", "url": "/my-content-page" }

    Response

    Created.

    Response.data will inherit the datatype of the request. A single entry passed as an object will return an object for the data property. Any number of entries passed in an array will return an array for the data property.

    Properties associated with a page type that are not required to create an entry will be created with default values.

    When you make bulk requests, an invalid input in any one entry will return 422. The entries that are valid will still be created.

    Body

    object | application/json
    • data

      Any of:
      • id
        integer

      • channel_id
        integer

      • name
        string
        required

        The name of the page. Must be unique.

        >= 1 characters<= 100 characters

        Example: About Our Company

      • is_visible
        boolean

        A boolean value that controls whether the page is available to users or visible in any navigation menus.

        Example: true

        Default: true

      • parent_id
        integer

        ID of the parent page, if any.

        Example: 0

        Default: 0

      • sort_order
        integer

        Determines the order in which the page is displayed in the parent page’s menu. Pages with lower integers display earlier.

        Example: 0

      • type
        string
        required

        Determines the type of page. See Pages v3 page types for more about the differences.

        Allowed: page | raw | contact_form | feed | link | blog

        Example: page

      • is_homepage
        boolean

        Determines whether this page loads at the siteʼs root route. For example, at https://example.com/.

        Default: false

      • is_customers_only
        boolean

        When true, this page is not visible to merchant users who are signed in to the store control panel.

        Default: false

      • url
        string

        Relative URL on the storefront for this page.

        Example: /my-store-page

      • meta_title
        string

      • meta_keywords
        string

        Comma-separated list of SEO-relevant keywords to include in the element of this page.

        Default: ""

      • meta_description
        string

        Description contained within the element of this page.

        Default: ""

      • search_keywords
        string

        Comma-separated list of keywords that shoppers can use to locate this page when searching the store.

        Example: trousers,pockets,luxury

        Default: ""

    • meta
      object

      Data about the response, including pagination and collection totals.

    example

    { "data": { "name": "About Our Company", "is_visible": true, "parent_id": 0, "sort_order": 0, "type": "page", "is_homepage": false, "is_customers_only": false, "url": "/my-store-page", "meta_title": "string", "meta_keywords": "\"\"", "meta_description": "\"\"", "search_keywords": "trousers,pockets,luxury" }, "meta": { "pagination": { "total": 0, "count": 0, "per_page": 0, "current_page": 0, "total_pages": 0, "links": { "previous": "string", "current": "string", "next": "string" } } } }

    Update Pages

    PUT /content/pages

    Request

    Updates one or more content pages. This endpoint supports bulk operations.

    Authentication

    • X-Auth-Token in header - required

    Parameters

    • store_hash in path - string
    • include in query - string

      Include the requested property in the response. The body property returns the page’s markup, text, or raw content.

    • Content-Type in header with default of application/json - string - required

    Body

    application/json
    One of:
    • name
      string

      The name of the page. Must be unique.

      >= 1 characters<= 100 characters

      Example: My Store Page

    • is_visible
      boolean

      Boolean value that specifies the visibility of the page in the storefront’s navigation menu.

      Indicates whether the page is available to users and visible in any menus.

    • parent_id
      integer

      ID of any parent Web page.

      Example: 0

      Default: 0

    • sort_order
      integer

      Specifies the order in which the page is displayed on the storefront. (Lower integers specify earlier display.)

      Example: 0

      Default: 0

    • type
      string

      Specifies the type of the page. The following values are possible;

      ValueDescription
      blogblog page. Read-only; blog pages can only be created in the store control panel.
      contact_formhosts the store's contact form
      linklink to another absolute URL
      pageuser-defined plain-text page
      rawpage that contains markup, such as HTML.
      rss_feedcontains syndicated content from an RSS feed

      Allowed: page | raw | contact_form | feed | link | blog

      Example: page

    • is_homepage
      boolean

      Boolean value that specifies whether this page is the storefront’s home page.

    • is_customers_only
      boolean

      Boolean value. If this value is set to true, this page will not be visible when the user is logged in to the store control panel.

    • id
      integer
      required

      The ID of the target page.

    • email
      string

      Applicable when the page type is contact_form: contact email address that receives messages sent via the form. Must be unique.

      <= 255 characters
    • meta_title
      string

    • body
      string

      HTML or variable that populates the element of this page, in default/desktop view. Required in a POST request if the page type is raw.

      Example: <div>Hello World!</div>

    • feed
      string

      The URL of the RSS feed. Required in a POST request if the page type is rss_feed.

    • link
      string

      Required in a POST request to create a link if the page type is link.

    • contact_fields
      string

      Applicable when the page type is contact_form: comma-separated list of keywords representing the fields enabled in the control panel for storefront display. Possible fields include:

      FieldDescription
      fullnameFull name of the customer submitting the form
      phoneCustomer’s phone number, as submitted on the form
      companynameCustomer’s submitted company name
      ordernoCustomer’s submitted order number
      rmaCustomer’s submitted RMA (Return Merchandise Authorization) number

      Example: fullname,companyname,phone,orderno,rma

    • meta_keywords
      string

      Comma-separated list of SEO-relevant keywords to include in the element of this page.

      Default:

    • meta_description
      string

      Description contained within the element of this page.

    • search_keywords
      string

      Comma-separated list of keywords that shoppers can use to locate this page when searching the store.

      Example: trousers,pockets,luxury

    • url
      string

      Relative URL on the storefront for this page.

      Example: /my-store-page

    • channel_id
      integer

      The ID of the channel where this page should be shown.

      Example: 12

      Default: 0

      example

      { "name": "My Store Page", "is_visible": true, "parent_id": 0, "sort_order": 0, "type": "page", "is_homepage": true, "is_customers_only": true, "id": 0, "email": "string", "meta_title": "string", "body": "<div>Hello World!</div>", "feed": "string", "link": "string", "contact_fields": "fullname,companyname,phone,orderno,rma", "meta_keywords": "", "meta_description": "string", "search_keywords": "trousers,pockets,luxury", "url": "/my-store-page", "channel_id": 12 }

      Response

      Updated.

      Body

      object | application/json

      Response payload for the BigCommerce API.

      • data
        array[]

      • meta
        object

        Data about the response, including pagination and collection totals.

      update meta descriptions for two pages

      { "data": [ { "id": 20, "channel_id": 1, "name": "all about powder detergents", "meta_title": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "type": "page", "meta_description": "cornpone", "is_homepage": false, "is_customers_only": false, "search_keywords": "" }, { "id": 19, "channel_id": 1, "name": "sign up to dream big", "meta_title": "", "email": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "contact_fields": "", "type": "contact_form", "meta_description": "arugula", "is_homepage": false, "is_customers_only": false, "search_keywords": "" } ], "meta": {} }

      Delete Pages

      DELETE /content/pages

      Request

      Deletes one or more content pages. This endpoint supports bulk operations.

      Warning

      Pay attention to query parameters If you attempt to delete multiple pages by passing more than one page ID to id:in and one or more of them does not exist, you will receive a 404 response. However, the pages corresponding to the page IDs that do exist will still be deleted.

      Authentication

      • X-Auth-Token in header - required

      Parameters

      • store_hash in path - string
      • id:in in query - string - required

        Request deletion of multiple pages by passing a comma-separated string of corresponding page IDs. Supports bulk operations.

      example

      curl --request DELETE \ --url 'https://api.bigcommerce.com/stores/[store_hash]/v3/content/pages' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'X-Auth-Token: xxxxxxxxxxxxxxxxx'

      Response

      No content. A 204 response with no payload indicates successful deletion of all specified pages.

      Get a Page

      GET /content/pages/{pageId}

      Request

      Returns one content page.

      Warning

      Pay attention to query parameters This endpoint recognizes the same query parameters as Get Multiple Pages. If the requested page does not meet the query parameters you specify, you will receive a 404 response even if the requested pageId does exist.

      Authentication

      • X-Auth-Token in header - required

      Parameters

      • store_hash in path - string
      • include in query - string

        Include the requested property in the response. The body property returns the page’s markup, text, or raw content.

      example

      curl --request GET \ --url 'https://api.bigcommerce.com/stores/[store_hash]/v3/content/pages/[pageId]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'X-Auth-Token: xxxxxxxxxxxxxxxxx'

      Response

      Body

      object | application/json

      Response payload for the BigCommerce API.

      • data
        array[object]

      • meta
        object

        Data about the response, including pagination and collection totals.

        several data types

        { "data": [ { "id": 3, "channel_id": 1, "name": "Blog", "meta_title": "Blog", "is_visible": false, "parent_id": 0, "sort_order": 4, "meta_keywords": "", "type": "blog", "meta_description": "", "is_homepage": false, "is_customers_only": false, "search_keywords": "0", "url": "/blog/" }, { "id": 5, "channel_id": 1, "name": "Contact Us", "meta_title": "", "email": "", "is_visible": true, "parent_id": 0, "sort_order": 3, "meta_keywords": "contact keyword", "contact_fields": "fullname,companyname,phone,orderno,rma", "type": "contact_form", "meta_description": "contact meta desc", "is_homepage": false, "is_customers_only": true, "search_keywords": "contact search keyword" }, { "id": 16, "channel_id": 1, "name": "all about powder detergents 2", "meta_title": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "type": "page", "meta_description": "", "is_homepage": false, "is_customers_only": false, "search_keywords": "" }, { "id": 17, "channel_id": 1, "name": "one hundred million red balloons 3", "is_visible": false, "parent_id": 0, "sort_order": 0, "type": "raw", "is_homepage": false, "is_customers_only": false, "search_keywords": "", "content_type": "text/html" }, { "id": 18, "channel_id": 1, "name": "diaper pin purveyors 3", "is_visible": false, "parent_id": 0, "sort_order": 0, "link": "https://example.com/diaper-pins", "type": "link", "is_homepage": false, "is_customers_only": false }, { "id": 19, "channel_id": 1, "name": "sign up to crush dreams 3", "meta_title": "", "email": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "contact_fields": "", "type": "contact_form", "meta_description": "", "is_homepage": false, "is_customers_only": false, "search_keywords": "" }, { "id": 20, "channel_id": 1, "name": "all about powder detergents 3", "meta_title": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "type": "page", "meta_description": "", "is_homepage": false, "is_customers_only": false, "search_keywords": "" }, { "id": 21, "channel_id": 1, "name": "feed monsters 3", "meta_title": "", "is_visible": false, "parent_id": 0, "sort_order": 0, "meta_keywords": null, "feed": "/rss/monsters", "type": "feed", "meta_description": "", "is_homepage": false, "is_customers_only": false, "search_keywords": "" }, { "id": 22, "channel_id": 1, "name": "one hundred million red balloons 4", "is_visible": false, "parent_id": 0, "sort_order": 0, "type": "raw", "is_homepage": false, "is_customers_only": false, "search_keywords": "", "content_type": "text/html" }, { "id": 23, "channel_id": 1, "name": "diaper pin purveyors 4", "is_visible": false, "parent_id": 0, "sort_order": 0, "link": "https://example.com/diaper-pins", "type": "link", "is_homepage": false, "is_customers_only": false } ], "meta": { "pagination": { "total": 6, "count": 6, "per_page": 50, "current_page": 1, "total_pages": 1, "links": { "current": "?page=1&limit=50" } } } }

        Update a Page

        PUT /content/pages/{pageId}

        Request

        Updates one content page.

        Authentication

        • X-Auth-Token in header - required

        Parameters

        • store_hash in path - string
        • Content-Type in header with default of application/json - string - required
        • include in query - string

          Include the requested property in the response. The body property returns the page’s markup, text, or raw content.

        Body

        object | application/json

        Properties of the page modification request body.

        • name
          string

          The name of the page. Must be unique.

          >= 1 characters<= 100 characters

          Example: My Store Page

        • is_visible
          boolean

          Boolean value that specifies the visibility of the page in the storefront’s navigation menu.

        • parent_id
          integer

          ID of any parent Web page.

          Example: 0

          Default: 0

        • sort_order
          integer

          Specifies the order in which the page is displayed on the storefront. (Lower integers specify earlier display.)

          Example: 0

          Default: 0

        • type
          string

          Specifies the type of the page.

          ValueDescription
          blogblog page. Read-only; blog pages can only be created in the store control panel.
          contact_formhosts the store's contact form
          linklink to another absolute URL
          pageuser-defined plain-text page
          rawpage that contains markup, such as HTML.
          rss_feedcontains syndicated content from an RSS feed

          Allowed: page | raw | contact_form | feed | link | blog

          Example: page

        • is_homepage
          boolean

          Boolean value that specifies whether this page is the storefront’s home page.

        • is_customers_only
          boolean

          Boolean value. If this value is set to true, this page will not be visible when the user is logged in to the store control panel.

        • email
          string

          Applicable when the page type is contact_form: contact email address that receives messages sent via the form. Must be unique.

          <= 255 characters
        • meta_title
          string

        • body
          string

          HTML or variable that populates the elment of this page, in default/desktop view. Required in a POST request if the page type is raw.

          Example: <div>Hello World!</div>

        • feed
          string

          The URL of the RSS feed. Required in a POST request if the page type is rss_feed.

        • link
          string

          Required in a POST request to create a link if the page type is link.

        • contact_fields
          string

          Applicable when the page type is contact_form: comma-separated list of keywords representing the fields enabled in the control panel for storefront display. Possible fields include:

          FieldDescription
          fullnameFull name of the customer submitting the form
          phoneCustomer’s phone number, as submitted on the form
          companynameCustomer’s submitted company name
          ordernoCustomer’s submitted order number
          rmaCustomer’s submitted RMA (Return Merchandise Authorization) number

          Example: fullname,companyname,phone,orderno,rma

        • meta_keywords
          string

          Comma-separated list of SEO-relevant keywords to include in the element of this page.

          Default:

        • meta_description
          string

          Description contained within the element of this page.

        • search_keywords
          string

          Comma-separated list of keywords that shoppers can use to locate this page when searching the store.

          Example: trousers,pockets,luxury

        • url
          string

          Relative URL on the storefront for this page.

          Example: /my-store-page

        • channel_id
          integer

          The ID of the channel where this page should be shown.

          Example: 12

          Default: 0

        example

        { "name": "My Store Page", "is_visible": true, "parent_id": 0, "sort_order": 0, "type": "page", "is_homepage": true, "is_customers_only": true, "email": "string", "meta_title": "string", "body": "<div>Hello World!</div>", "feed": "string", "link": "string", "contact_fields": "fullname,companyname,phone,orderno,rma", "meta_keywords": "", "meta_description": "string", "search_keywords": "trousers,pockets,luxury", "url": "/my-store-page", "channel_id": 12 }

        Response

        Body

        object | application/json

        Response payload for the BigCommerce API.

        • data
          array[object]

        • meta
          object

          Data about the response, including pagination and collection totals.

          example

          { "data": [ { "email": "", "meta_title": "string", "body": "<div>Hello World!</div>", "feed": "string", "link": "string", "contact_fields": "fullname,orderno,rma", "meta_keywords": "", "meta_description": "string", "search_keywords": "trousers,pockets,luxury", "url": "/my-store-page", "channel_id": 12, "name": "My Store Page", "is_visible": true, "parent_id": 0, "sort_order": 0, "type": "page", "is_homepage": true, "is_customers_only": true } ], "meta": { "pagination": { "total": 0, "count": 0, "per_page": 0, "current_page": 0, "total_pages": 0, "links": { "previous": "string", "current": "string", "next": "string" } } } }

          Delete a Page

          DELETE /content/pages/{pageId}

          Request

          Deletes one content page.

          Warning

          Query parameters not recognized This endpoint does not recognize query parameters.

          Authentication

          • X-Auth-Token in header - required

          Parameters

          • store_hash in path - string
          • Accept in header with default of application/json - string - required
          • pageId in path - string - required

            The ID of the page to be operated on.

          example

          curl --request DELETE \ --url 'https://api.bigcommerce.com/stores/[store_hash]/v3/content/pages/[pageId]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'X-Auth-Token: xxxxxxxxxxxxxxxxx'

          Response

          No content. A 204 response with no payload indicates successful deletion of all specified pages.