> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# Update Page (deprecated)

PUT https://api.bigcommerce.com/stores/{store_hash}/v2/pages/{id}
Content-Type: application/json

Updates a *Page*. The request payload limit is 1MB.


**Read Only Fields**
* id

> #### Warning
> **Deprecated**
> * This API operation is deprecated. Avoid using this API operation if possible. It will be removed in a future version.
> * To update multiple pages, use Pages V3ʼs [Update pages](/developer/api-reference/rest/admin/content/pages/update-pages) endpoint. To update a single page, use Pages V3ʼs [Update a page](/developer/api-reference/rest/admin/content/pages/update-page) endpoint.
> * Updating the channel ID for a page is not supported.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/admin/content/store-content/pages/update-page

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Content | modify | `store_v2_content` | | Content | read-only | `store_v2_content_read_only` | ### Authentication header | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#api-accounts). | ### Further reading For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).

## Request

### Path parameters

- `id` (integer, required) — ID of the page.
- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

### Body (application/json)

This endpoint expects a page_Full.

- `body` (string, optional) — HTML or variable that populates this page’s `<body>` element, in default/desktop view. Required in POST if page type is `raw`.
- `channel_id` (double, optional) — Channel ID.
- `contact_fields` (string, optional) — Where the page’s type is a contact form - object whose members are the fields enabled (in the control panel) for storefront display. Possible members are:`fullname` - full name of the customer submitting the form; `phone` - customer’s phone number, as submitted on the form; `companyname`- customer’s submitted company name; `orderno`- customer’s submitted order number; `rma` - customer’s submitted RMA (Return Merchandise Authorization) number.
- `content_type` (enum, optional)
  - Allowed values: `application/json`, `text/javascript`, `text/html`
- `email` (string, optional) — Where the page’s type is a contact form, the email address that receives messages sent using the form.
- `has_mobile_version` (boolean, optional) — If true, this page has a mobile version. (For Blueprint themes only)
- `id` (integer, optional) — ID of the page. Read-Only.
- `is_customers_only` (boolean, optional) — If true, this page is for customers only.
- `is_homepage` (boolean, optional) — If true, this page is the storefront’s home page.
- `is_visible` (boolean, optional) — If true, this page appears in the storefront navigation menu.
- `layout_file` (string, optional) — Layout template for this page. This field is writable only for stores with a Blueprint theme applied.
- `link` (string, optional) — If page type is `link`, this field is returned.
- `meta_description` (string, optional) — Description contained within this page’s `<meta/>` element. HTML to use for this page’s body when viewed in the mobile template.
- `meta_keywords` (string, optional) — Comma-separated list of SEO-relevant keywords to include in the page's `<meta/>` element.
- `meta_title` (string, optional) — Text specified for this page's `<title>` element. If empty, the value of the name property is used.
- `mobile_body` (string, optional) — HTML to use for this page’s body when viewed in the mobile template (deprecated - Blueprint only).
- `name` (string, optional) — Page name, as displayed on the storefront.
- `parent_id` (integer, optional) — ID of any parent Web page.
- `search_keywords` (string, optional) — Comma-separated list of keywords that shoppers can use to locate this page when searching the store.
- `sort_order` (integer, optional) — Order in which this page should display on the storefront. (Lower integers specify earlier display.)
- `type` (enum, optional) — `page`: free-text page `link`: link to another web address `contact_form`: When the store’s contact form is used
  - Allowed values: `page`, `contact_form`, `raw`, `link`
- `url` (string, optional) — Relative URL on the storefront for this page.

## Response

### 200

OK

- `body` (string, optional) — HTML or variable that populates this page’s `<body>` element, in default/desktop view. Required in POST if page type is `raw`.
- `channel_id` (double, optional) — Channel ID.
- `contact_fields` (string, optional) — Where the page’s type is a contact form - object whose members are the fields enabled (in the control panel) for storefront display. Possible members are:`fullname` - full name of the customer submitting the form; `phone` - customer’s phone number, as submitted on the form; `companyname`- customer’s submitted company name; `orderno`- customer’s submitted order number; `rma` - customer’s submitted RMA (Return Merchandise Authorization) number.
- `content_type` (enum, optional)
  - Allowed values: `application/json`, `text/javascript`, `text/html`
- `email` (string, optional) — Where the page’s type is a contact form, the email address that receives messages sent using the form.
- `has_mobile_version` (boolean, optional) — If true, this page has a mobile version. (For Blueprint themes only)
- `id` (integer, optional) — ID of the page. Read-Only.
- `is_customers_only` (boolean, optional) — If true, this page is for customers only.
- `is_homepage` (boolean, optional) — If true, this page is the storefront’s home page.
- `is_visible` (boolean, optional) — If true, this page appears in the storefront navigation menu.
- `layout_file` (string, optional) — Layout template for this page. This field is writable only for stores with a Blueprint theme applied.
- `link` (string, optional) — If page type is `link`, this field is returned.
- `meta_description` (string, optional) — Description contained within this page’s `<meta/>` element. HTML to use for this page’s body when viewed in the mobile template.
- `meta_keywords` (string, optional) — Comma-separated list of SEO-relevant keywords to include in the page's `<meta/>` element.
- `meta_title` (string, optional) — Text specified for this page's `<title>` element. If empty, the value of the name property is used.
- `mobile_body` (string, optional) — HTML to use for this page’s body when viewed in the mobile template (deprecated - Blueprint only).
- `name` (string, optional) — Page name, as displayed on the storefront.
- `parent_id` (integer, optional) — ID of any parent Web page.
- `search_keywords` (string, optional) — Comma-separated list of keywords that shoppers can use to locate this page when searching the store.
- `sort_order` (integer, optional) — Order in which this page should display on the storefront. (Lower integers specify earlier display.)
- `type` (enum, optional) — `page`: free-text page `link`: link to another web address `contact_form`: When the store’s contact form is used
  - Allowed values: `page`, `contact_form`, `raw`, `link`
- `url` (string, optional) — Relative URL on the storefront for this page.

### 207

Multiple operations have taken place and the status for each operation can be viewed in the body of the response. Typically indicates that a partial failure has occurred, such as when a `POST` or `PUT` request is successful, but saving the URL has failed.

## Examples

### Response

**Request**

```json
{}
```

**Response**

```json
{
  "body": "<em>To edit this page simply login to the control panel, click the <strong style='font-weight: 400'>Website Content</strong> tab and choose the </em> <strong style='font-weight: 400'><em>View Web Pages option. Click Edit next to the Shipping & Returns page and you can change this text. A sample returns policy is shown below which you can edit as needed.</em><em style='font-style: normal'><br/><br/></em></strong><em style='font-style: normal'><strong>Returns Policy</strong></em><strong style='font-weight: 400'></em></em><em style='font-style: normal'><br/><br/></em>You may return most new, unopened items within 30 days of delivery for a full refund. We'll also pay the return shipping costs if the return is a result of our error (you received an incorrect or defective item, etc.).<br/><br/>You should expect to receive your refund within four weeks of giving your package to the return shipper, however, in many cases you will receive a refund more quickly. This time period includes the transit time for us to receive your return from the shipper (5 to 10 business days), the time it takes us to process your return once we receive it (3 to 5 business days), and the time it takes your bank to process our refund request (5 to 10 business days).<br/><br/>If you need to return an item, please <a href='/contact-us/'>Contact Us</a> with your order number and details about the product you would like to return. We will respond quickly with instructions for how to return items from your order.<br/><br/></strong><strong>Shipping</em></em></em></strong><strong style='font-weight: 400'><em style='font-style: normal'><br/><br/></em>We can ship to virtually any address in the world. Note that there are restrictions on some products, and some products cannot be shipped to international destinations.<br/><br/>When you place an order, we will estimate shipping and delivery dates for you based on the availability of your items and the shipping options you choose. Depending on the shipping provider you choose, shipping date estimates may appear on the shipping quotes page.<br/><br/>Please also note that the shipping rates for many items we sell are weight-based. The weight of any such item can be found on its detail page. To reflect the policies of the shipping companies we use, all weights will be rounded up to the next full pound.<br/>",
  "channel_id": 11,
  "has_mobile_version": false,
  "id": 2,
  "is_customers_only": false,
  "is_homepage": false,
  "is_visible": true,
  "layout_file": "page.html",
  "link": "",
  "meta_description": "",
  "meta_keywords": "",
  "meta_title": "",
  "mobile_body": "",
  "name": "Shipping & Returns",
  "parent_id": 0,
  "search_keywords": "",
  "sort_order": 2,
  "type": "page",
  "url": "/shipping-returns/"
}
```

**SDK Code**

```python Response
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/pages/1"

payload = {}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript Response
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/pages/1';
const options = {
  method: 'PUT',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Response
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/pages/1"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Response
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/pages/1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
```

```java Response
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.bigcommerce.com/stores/store_hash/v2/pages/1")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

```php Response
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.bigcommerce.com/stores/store_hash/v2/pages/1', [
  'body' => '{}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Response
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/pages/1");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Response
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/pages/1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 2

**Request**

```json
{}
```

**Response**

```json
{}
```

**SDK Code**

```python
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/pages/1"

payload = {}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/pages/1';
const options = {
  method: 'PUT',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/pages/1"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/pages/1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.bigcommerce.com/stores/store_hash/v2/pages/1")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.bigcommerce.com/stores/store_hash/v2/pages/1', [
  'body' => '{}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/pages/1");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/pages/1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```