--- title: Page description: Create and update static pages for an online store. api_version: 2025-10 api_name: admin-rest api_type: rest source_url: html: https://shopify.dev/docs/api/admin-rest/latest/resources/page md: https://shopify.dev/docs/api/admin-rest/latest/resources/page.md --- ![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg) The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the [GraphQL Admin API](https://shopify.dev/docs/api/admin-graphql). For details and migration steps, visit our [migration guide](https://shopify.dev/docs/apps/build/graphql/migrate). # Page Requires `content` access scope. In addition to an online storefront, Shopify stores come with a tool for creating basic HTML web pages. Store owners can create any number of pages to hold static content, such as an **About us** page, a **Contact us** page, or a page with customer testimonials. These web pages are represented by the Page resource, and their HTML content is contained in the value of the `body_html` property. The Page resource lets you retrieve, create, update, and delete web pages for a store. Pages are meant to be used for long-term, static content that rarely changes. For creating content on a regular basis, use the [Blog](https://shopify.dev/docs/admin-api/rest/reference/online-store/blog) resource instead. \# ## Endpoints * [post](https://shopify.dev/docs/api/admin-rest/latest/resources/page#post-pages) [/admin/api/latest/pages.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#post-pages) Creates a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageCreate?example=creates-a-page) [pageCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageCreate?example=creates-a-page) * [get](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages) [/admin/api/latest/pages.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages) Retrieves a list of pages [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/pages?example=retrieves-a-list-of-pages) [pages](https://shopify.dev/docs/api/admin-graphql/latest/queries/pages?example=retrieves-a-list-of-pages) * [get](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages-page-id) [/admin/api/latest/pages/{page\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages-page-id) Retrieves a single page by its ID [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/page?example=retrieves-a-single-page-by-its-id) [page](https://shopify.dev/docs/api/admin-graphql/latest/queries/page?example=retrieves-a-single-page-by-its-id) * [get](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages-count) [/admin/api/latest/pages/count.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#get-pages-count) Retrieves a page count [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/pagesCount?example=retrieves-a-page-count) [pagesCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/pagesCount?example=retrieves-a-page-count) * [put](https://shopify.dev/docs/api/admin-rest/latest/resources/page#put-pages-page-id) [/admin/api/latest/pages/{page\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#put-pages-page-id) Updates a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageUpdate?example=updates-a-page) [pageUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageUpdate?example=updates-a-page) * [del](https://shopify.dev/docs/api/admin-rest/latest/resources/page#delete-pages-page-id) [/admin/api/latest/pages/{page\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/page#delete-pages-page-id) Deletes a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageDelete?example=deletes-a-page) [pageDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageDelete?example=deletes-a-page) *** ## The Page resource ### Properties *** author -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page) [author](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page) The name of the person who created the page. *** body\_html -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page) [bodyHtml](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page) The text content of the page, complete with HTML markup. *** created\_at read-only -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.createdAt) [createdAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.createdAt) The date and time ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format) when the page was created. *** handle -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.handle) [handle](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.handle) A unique, human-friendly string for the page, generated automatically from its title. In themes, the Liquid templating language refers to a page by its handle. *** id read-only -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.id) [id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.id) The unique numeric identifier for the page. *** metafield -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.metafields) [metafields](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.metafields) Additional information attached to the Page object. It has the following properties: Show metafield properties * **key**: An identifier for the metafield. (maximum: 30 characters) * **namespace**: A container for a set of metadata. Namespaces help distinguish between metadata created by different apps. (maximum: 20 characters) * **value**: The information to be stored as metadata. * **type**: The metafield's information type. Refer to the [full list of types](https://shopify.dev/apps/metafields/types). * **description (optional)**: Additional information about the metafield. For more information on attaching metadata to Shopify resources, see the [Metafield](https://shopify.dev/docs/admin-api/rest/reference/metafield) resource. *** published\_at -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.publishedAt) [publishedAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.publishedAt) The date and time ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format) when the page was published. Returns `null` when the page is hidden. *** shop\_id read-only deprecated The ID of the shop to which the page belongs. *** template\_suffix -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.templateSuffix) [templateSuffix](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.templateSuffix) The suffix of the [template](https://shopify.dev/api/liquid/objects/template) that is used to render the page. If the value is an empty string or `null`, then the default page template is used. *** title -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.title) [title](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.title) The title of the page. *** updated\_at read-only -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.updatedAt) [updatedAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.updatedAt) The date and time ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format) when the page was last updated. *** admin\_graphql\_api\_id read-only -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.id) [id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page#field-Page.fields.id) The GraphQL GID of the page. *** {} ## The Page resource ```json { "author": "Lydia", "body_html": "Contact us at contact@example.com.", "created_at": "2008-07-15T20:00:00-04:00", "handle": "contact-us", "id": 131092082, "metafield": { "key": "new", "value": "new value", "type": "single_line_text_field", "namespace": "global" }, "published_at": "2014-07-16T20:00:00-04:00", "shop_id": 548380009, "template_suffix": "contact", "title": "Contact us", "updated_at": "2008-07-16T20:00:00-04:00", "admin_graphql_api_id": "gid://shopify/OnlineStorePage/131092082" } ``` *** ## postCreates a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageCreate?example=creates-a-page) [pageCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageCreate?example=creates-a-page) Creates a page ### Parameters *** api\_version string required *** ### Examples Create a page with HTML markup Request body page​ Page resource Show page properties page.title:​"Warranty information" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) [title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) The title of the page. page.body\_​html:​"\

Warranty\

\n\

Returns accepted if we receive items \30 days after purchase\.\

" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) [body](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) The text content of the page, complete with HTML markup. Create a page with a metafield Request body page​ Page resource Show page properties page.title:​"Warranty information" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) [title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) The title of the page. page.body\_​html:​"\

Warranty\

\n\

Returns accepted if we receive items \30 days after purchase\.\

" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) [body](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) The text content of the page, complete with HTML markup. Create an unpublished page Request body page​ Page resource Show page properties page.title:​"Warranty information" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) [title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-title) The title of the page. page.body\_​html:​"\

Warranty\

\n\

Returns accepted if we receive items \30 days after purchase\.\

" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) [body](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageCreateInput#fields-body) The text content of the page, complete with HTML markup. Creating a page without a title fails and returns an error post ## /admin/api/2025-10/pages.​json ```bash curl -d '{"page":{"title":"Warranty information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 201 Created { "page": { "id": 1025371370, "title": "Warranty information", "shop_id": 548380009, "handle": "warranty-information", "body_html": "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

", "author": "Shopify API", "created_at": "2025-10-01T14:56:00-04:00", "updated_at": "2025-10-01T14:56:00-04:00", "published_at": "2025-10-01T14:56:00-04:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/1025371370" } } ``` ### examples * #### Create a page with HTML markup ##### ```curl curl -d '{"page":{"title":"Warranty information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.title = "Warranty information" page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

" page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 201 Created{"page":{"id":1025371370,"title":"Warranty information","shop_id":548380009,"handle":"warranty-information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

","author":"Shopify API","created_at":"2025-10-01T14:56:00-04:00","updated_at":"2025-10-01T14:56:00-04:00","published_at":"2025-10-01T14:56:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/1025371370"}} ``` * #### Create a page with a metafield ##### ```curl curl -d '{"page":{"title":"Warranty information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

","metafields":[{"key":"new","value":"new value","type":"single_line_text_field","namespace":"global"}]}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; page.metafields = [ { "key": "new", "value": "new value", "type": "single_line_text_field", "namespace": "global" } ]; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.title = "Warranty information" page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

" page.metafields = [ { "key" => "new", "value" => "new value", "type" => "single_line_text_field", "namespace" => "global" } ] page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; page.metafields = [ { "key": "new", "value": "new value", "type": "single_line_text_field", "namespace": "global" } ]; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 201 Created{"page":{"id":1025371371,"title":"Warranty information","shop_id":548380009,"handle":"warranty-information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

","author":"Shopify API","created_at":"2025-10-01T14:56:01-04:00","updated_at":"2025-10-01T14:56:01-04:00","published_at":"2025-10-01T14:56:01-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/1025371371"}} ``` * #### Create an unpublished page ##### ```curl curl -d '{"page":{"title":"Warranty information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

","published":false}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; page.published = false; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.title = "Warranty information" page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

" page.published = false page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.title = "Warranty information"; page.body_html = "

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

"; page.published = false; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 201 Created{"page":{"id":1025371369,"title":"Warranty information","shop_id":548380009,"handle":"warranty-information","body_html":"

Warranty

\n

Returns accepted if we receive items 30 days after purchase.

","author":"Shopify API","created_at":"2025-10-01T14:55:53-04:00","updated_at":"2025-10-01T14:55:53-04:00","published_at":null,"template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/1025371369"}} ``` * #### Creating a page without a title fails and returns an error ##### ```curl curl -d '{"page":{"body":"foobar"}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.body = "foobar"; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.body = "foobar" page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.body = "foobar"; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 422 Unprocessable Entity{"errors":{"title":["can't be blank"]}} ``` *** ## getRetrieves a list of pages [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/pages?example=retrieves-a-list-of-pages) [pages](https://shopify.dev/docs/api/admin-graphql/latest/queries/pages?example=retrieves-a-list-of-pages) Retrieve a list of all pages. **Note:** This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to [Make paginated requests to the REST Admin API](https://shopify.dev/api/usage/pagination-rest). ### Parameters *** api\_version string required *** created\_at\_max Show pages created before date (format: 2014-04-25T16:15:47-04:00). *** created\_at\_min Show pages created after date (format: 2014-04-25T16:15:47-04:00). *** fields Show only certain fields, specified by a comma-separated list of field names. *** handle Retrieve a page with a given handle. *** limit ≤ 250 default 50 The maximum number of results to show. *** published\_at\_max Show pages published before date (format: 2014-04-25T16:15:47-04:00). *** published\_at\_min Show pages published after date (format: 2014-04-25T16:15:47-04:00). *** published\_status default any Restrict results to pages with a given published status: Show published\_status properties * **published**: Show only published pages. * **unpublished**: Show only unpublished pages. * **any**: Show published and unpublished pages. *** since\_id Restrict results to after the specified ID. *** title Retrieve pages with a given title. *** updated\_at\_max Show pages last updated before date (format: 2014-04-25T16:15:47-04:00). *** updated\_at\_min Show pages last updated after date (format: 2014-04-25T16:15:47-04:00). *** ### Examples Get all pages for a shop Retrieve a list of all pages after the specified ID Query parameters since\_​id=​108828309 Restrict results to after the specified ID. get ## /admin/api/2025-10/pages.​json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "pages": [ { "id": 108828309, "title": "Sample Page", "shop_id": 548380009, "handle": "sample", "body_html": "

this is a sample page.

", "author": "Dennis", "created_at": "2008-07-15T20:00:00-04:00", "updated_at": "2008-07-16T20:00:00-04:00", "published_at": null, "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/108828309" }, { "id": 169524623, "title": "Store hours", "shop_id": 548380009, "handle": "store-hours", "body_html": "

We never close.

", "author": "Jobs", "created_at": "2013-12-31T19:00:00-05:00", "updated_at": "2013-12-31T19:00:00-05:00", "published_at": "2014-02-01T19:00:00-05:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/169524623" }, { "id": 322471, "title": "Support", "shop_id": 548380009, "handle": "support", "body_html": "

Come in store for support.

", "author": "Dennis", "created_at": "2009-07-15T20:00:00-04:00", "updated_at": "2009-07-16T20:00:00-04:00", "published_at": null, "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/322471" }, { "id": 131092082, "title": "Terms of Services", "shop_id": 548380009, "handle": "tos", "body_html": "

We make perfect stuff, we don't need a warranty.

", "author": "Dennis", "created_at": "2008-07-15T20:00:00-04:00", "updated_at": "2008-07-16T20:00:00-04:00", "published_at": "2008-07-15T20:00:00-04:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/131092082" } ] } ``` ### examples * #### Get all pages for a shop ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.Page.all({ session: session, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::Page.all( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.Page.all({ session: session, }); ``` #### response ```json HTTP/1.1 200 OK{"pages":[{"id":108828309,"title":"Sample Page","shop_id":548380009,"handle":"sample","body_html":"

this is a sample page.

","author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2008-07-16T20:00:00-04:00","published_at":null,"template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/108828309"},{"id":169524623,"title":"Store hours","shop_id":548380009,"handle":"store-hours","body_html":"

We never close.

","author":"Jobs","created_at":"2013-12-31T19:00:00-05:00","updated_at":"2013-12-31T19:00:00-05:00","published_at":"2014-02-01T19:00:00-05:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/169524623"},{"id":322471,"title":"Support","shop_id":548380009,"handle":"support","body_html":"

Come in store for support.

","author":"Dennis","created_at":"2009-07-15T20:00:00-04:00","updated_at":"2009-07-16T20:00:00-04:00","published_at":null,"template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/322471"},{"id":131092082,"title":"Terms of Services","shop_id":548380009,"handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2008-07-16T20:00:00-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}]} ``` * #### Retrieve a list of all pages after the specified ID ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages.json?since_id=108828309" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.Page.all({ session: session, since_id: "108828309", }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::Page.all( session: test_session, since_id: "108828309", ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.Page.all({ session: session, since_id: "108828309", }); ``` #### response ```json HTTP/1.1 200 OK{"pages":[{"id":131092082,"title":"Terms of Services","shop_id":548380009,"handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2008-07-16T20:00:00-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"},{"id":169524623,"title":"Store hours","shop_id":548380009,"handle":"store-hours","body_html":"

We never close.

","author":"Jobs","created_at":"2013-12-31T19:00:00-05:00","updated_at":"2013-12-31T19:00:00-05:00","published_at":"2014-02-01T19:00:00-05:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/169524623"}]} ``` *** ## getRetrieves a single page by its ID [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/page?example=retrieves-a-single-page-by-its-id) [page](https://shopify.dev/docs/api/admin-graphql/latest/queries/page?example=retrieves-a-single-page-by-its-id) Retrieves a single page by its ID. ### Parameters *** api\_version string required *** page\_id string required *** fields Show only certain fields, specified by a comma-separated list of field names. *** ### Examples Retrieve a single page Path parameters page\_​id=​131092082 string required get ## /admin/api/2025-10/pages/131092082.​json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "page": { "id": 131092082, "title": "Terms of Services", "shop_id": 548380009, "handle": "tos", "body_html": "

We make perfect stuff, we don't need a warranty.

", "author": "Dennis", "created_at": "2008-07-15T20:00:00-04:00", "updated_at": "2008-07-16T20:00:00-04:00", "published_at": "2008-07-15T20:00:00-04:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/131092082" } } ``` ### examples * #### Retrieve a single page ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.Page.find({ session: session, id: 131092082, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::Page.find( session: test_session, id: 131092082, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.Page.find({ session: session, id: 131092082, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"id":131092082,"title":"Terms of Services","shop_id":548380009,"handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2008-07-16T20:00:00-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` *** ## getRetrieves a page count [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/pagesCount?example=retrieves-a-page-count) [pagesCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/pagesCount?example=retrieves-a-page-count) Retrieves a page count. ### Parameters *** api\_version string required *** created\_at\_max Count pages created before date (format: 2014-04-25T16:15:47-04:00). *** created\_at\_min Count pages created after date (format: 2014-04-25T16:15:47-04:00). *** published\_at\_max Show pages published before date (format: 2014-04-25T16:15:47-04:00). *** published\_at\_min Show pages published after date (format: 2014-04-25T16:15:47-04:00). *** published\_status default any Count pages with a given published status: Show published\_status properties * **published**: Count published pages. * **unpublished**: Count unpublished pages. * **any**: Count published and unpublished pages. *** title Count pages with a given title. *** updated\_at\_max Count pages last updated before date (format: 2014-04-25T16:15:47-04:00). *** updated\_at\_min Count pages last updated after date (format: 2014-04-25T16:15:47-04:00). *** ### Examples Retrieve a count of all pages get ## /admin/api/2025-10/pages/count.​json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages/count.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "count": 4 } ``` ### examples * #### Retrieve a count of all pages ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-10/pages/count.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.Page.count({ session: session, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::Page.count( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.Page.count({ session: session, }); ``` #### response ```json HTTP/1.1 200 OK{"count":4} ``` *** ## putUpdates a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageUpdate?example=updates-a-page) [pageUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageUpdate?example=updates-a-page) Updates a page ### Parameters *** api\_version string required *** page\_id string required *** ### Examples Add a metafield to a page Path parameters page\_​id=​131092082 string required Request body page​ Page resource Show page properties page.id:​131092082 read-only The unique numeric identifier for the page. Hide a published page Path parameters page\_​id=​131092082 string required Request body page​ Page resource Show page properties page.id:​131092082 read-only The unique numeric identifier for the page. Show a hidden page Path parameters page\_​id=​131092082 string required Request body page​ Page resource Show page properties page.id:​131092082 read-only The unique numeric identifier for the page. Update an existing page completely Path parameters page\_​id=​131092082 string required Request body page​ Page resource Show page properties page.id:​131092082 read-only The unique numeric identifier for the page. page.body\_​html:​"\

Returns accepted if we receive the items \14 days\ after purchase.\

" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-body) [body](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-body) The text content of the page, complete with HTML markup. page.author:​"Christopher Gorski" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput) [author](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput) The name of the person who created the page. page.title:​"New warranty" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-title) [title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-title) The title of the page. page.handle:​"new-warranty" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-handle) [handle](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-handle) A unique, human-friendly string for the page, generated automatically from its title. In themes, the Liquid templating language refers to a page by its handle. Update the body HTML of an existing page Path parameters page\_​id=​131092082 string required Request body page​ Page resource Show page properties page.id:​131092082 read-only The unique numeric identifier for the page. page.body\_​html:​"\

Returns accepted if we receive the items 14 days after purchase.\

" -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-body) [body](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/PageUpdateInput#fields-body) The text content of the page, complete with HTML markup. put ## /admin/api/2025-10/pages/131092082.​json ```bash curl -d '{"page":{"id":131092082,"metafields":[{"key":"new","value":"new value","type":"single_line_text_field","namespace":"global"}]}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "page": { "shop_id": 548380009, "title": "Terms of Services", "handle": "tos", "body_html": "

We make perfect stuff, we don't need a warranty.

", "id": 131092082, "author": "Dennis", "created_at": "2008-07-15T20:00:00-04:00", "updated_at": "2008-07-16T20:00:00-04:00", "published_at": "2008-07-15T20:00:00-04:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/Page/131092082" } } ``` ### examples * #### Add a metafield to a page ##### ```curl curl -d '{"page":{"id":131092082,"metafields":[{"key":"new","value":"new value","type":"single_line_text_field","namespace":"global"}]}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.id = 131092082; page.metafields = [ { "key": "new", "value": "new value", "type": "single_line_text_field", "namespace": "global" } ]; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.id = 131092082 page.metafields = [ { "key" => "new", "value" => "new value", "type" => "single_line_text_field", "namespace" => "global" } ] page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.id = 131092082; page.metafields = [ { "key": "new", "value": "new value", "type": "single_line_text_field", "namespace": "global" } ]; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"shop_id":548380009,"title":"Terms of Services","handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","id":131092082,"author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2008-07-16T20:00:00-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` * #### Hide a published page ##### ```curl curl -d '{"page":{"id":131092082,"published":false}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.id = 131092082; page.published = false; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.id = 131092082 page.published = false page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.id = 131092082; page.published = false; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"shop_id":548380009,"published_at":null,"title":"Terms of Services","handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","id":131092082,"author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2025-10-01T14:55:46-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` * #### Show a hidden page ##### ```curl curl -d '{"page":{"id":131092082,"published":true}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.id = 131092082; page.published = true; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.id = 131092082 page.published = true page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.id = 131092082; page.published = true; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"shop_id":548380009,"published_at":"2025-10-01T14:56:04-04:00","title":"Terms of Services","handle":"tos","body_html":"

We make perfect stuff, we don't need a warranty.

","id":131092082,"author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2025-10-01T14:56:04-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` * #### Update an existing page completely ##### ```curl curl -d '{"page":{"id":131092082,"body_html":"

Returns accepted if we receive the items 14 days after purchase.

","author":"Christopher Gorski","title":"New warranty","handle":"new-warranty"}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.id = 131092082; page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

"; page.author = "Christopher Gorski"; page.title = "New warranty"; page.handle = "new-warranty"; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.id = 131092082 page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

" page.author = "Christopher Gorski" page.title = "New warranty" page.handle = "new-warranty" page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.id = 131092082; page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

"; page.author = "Christopher Gorski"; page.title = "New warranty"; page.handle = "new-warranty"; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"shop_id":548380009,"author":"Christopher Gorski","body_html":"

Returns accepted if we receive the items 14 days after purchase.

","handle":"new-warranty","title":"New warranty","id":131092082,"created_at":"2008-07-15T20:00:00-04:00","updated_at":"2025-10-01T14:55:47-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` * #### Update the body HTML of an existing page ##### ```curl curl -d '{"page":{"id":131092082,"body_html":"

Returns accepted if we receive the items 14 days after purchase.

"}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const page = new admin.rest.resources.Page({session: session}); page.id = 131092082; page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

"; await page.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session page = ShopifyAPI::Page.new(session: test_session) page.id = 131092082 page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

" page.save! ``` ##### ```node // Session is built by the OAuth process const page = new shopify.rest.Page({session: session}); page.id = 131092082; page.body_html = "

Returns accepted if we receive the items 14 days after purchase.

"; await page.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"page":{"shop_id":548380009,"body_html":"

Returns accepted if we receive the items 14 days after purchase.

","title":"Terms of Services","handle":"tos","id":131092082,"author":"Dennis","created_at":"2008-07-15T20:00:00-04:00","updated_at":"2025-10-01T14:56:03-04:00","published_at":"2008-07-15T20:00:00-04:00","template_suffix":null,"admin_graphql_api_id":"gid://shopify/Page/131092082"}} ``` *** ## delDeletes a page [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageDelete?example=deletes-a-page) [pageDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/pageDelete?example=deletes-a-page) Deletes a page. ### Parameters *** api\_version string required *** page\_id string required *** ### Examples Delete a page Path parameters page\_​id=​131092082 string required del ## /admin/api/2025-10/pages/131092082.​json ```bash curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK {} ``` ### examples * #### Delete a page ##### ```curl curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2025-10/pages/131092082.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.Page.delete({ session: session, id: 131092082, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::Page.delete( session: test_session, id: 131092082, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.Page.delete({ session: session, id: 131092082, }); ``` #### response ```json HTTP/1.1 200 OK{} ```