Skip to main content
GET
Get page content

Authorizations

Authorization
string
header
required

Bearer authentication: a shop API key (WEAVERSE_API_KEY), a scoped API key, a delegated MCP OAuth token, or (translation-unit routes only) a project-bound translation agent token. Scopes: content:read — Read projects, pages, theme settings, versions, drafts and translation units. content:write — Save drafts and make non-destructive edits (page items, metadata, SEO, assignments, languages, glossary). Never publishes or deletes. content:publish — Publish drafts, schedule/reschedule/cancel publications, restore versions, publish global sections. content:delete — Delete pages, global sections, languages, static keys, override reverts; required with project:manage for project deletion. project:manage — Create/copy/delete projects, settings, variants, hierarchy, backups, restore-as-new, previews, hostname policy. translations:read — Read translation units only (no general content access). translations:write — Apply translation units only; never mutates page content. A legacy unscoped API key keeps read/write/translation baseline access and every pre-scope endpoint, but never gains publish/delete/project-manage implicitly.

Path Parameters

projectId
string
required
type
string
required

Page type (e.g. PRODUCT, INDEX)

handle
string
required

Page handle. This is the final greedy path component and may include /; pass the exact handle from the list endpoint, e.g. blue-shirt, track-order, or pages/gift-shop. Leave empty to target a singleton type's single default page — the home page (INDEX), the /products and /collections index pages (ALL_PRODUCTS, COLLECTION_LIST), CART, CUSTOMER, NOT_FOUND, PASSWORD, SEARCH. A handle is required for CUSTOM pages and for per-resource templated types (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE), whose empty handle is the shared default template.

Query Parameters

locale
string

Requested locale. Falls back through locale chain if not found.

format
enum<string>
default:weaverse

Output format for rich-text fields.

  • weaverse (default): rich text returned as HTML strings — original behavior, no migration needed.
  • portable-text: rich text returned as structured Portable Text blocks for multi-channel rendering and AI consumption.

Equivalent to setting Accept: application/portable-text+json on the request. The query parameter takes precedence over the header when both are provided. An invalid value returns 400 INVALID_PARAMS.

Available options:
weaverse,
portable-text
meta
boolean
default:false

Opt-in inclusion of _weaverse: { id, schemaVersion } on each Portable Text custom block so consumers can round-trip back to the original Weaverse item id. Only meaningful when format=portable-text; silently ignored otherwise. Not applicable on /theme-settings (free-form leaves have no item id to round-trip).

Only the literal string true enables this; any other value (e.g. 1, yes, false) is silently treated as false rather than returning 400 — this asymmetry vs format exists because meta was added later and is purely additive.

includeDefaults
boolean
default:false

Opt-in server-side default resolution. When true, each item's data is completed with the component schema defaultValue for every setting the merchant never customized (the studio strips values equal to their default on save). Stored values always win; only missing keys are filled. Items whose component type has no stored schema are returned unchanged. resolved=true is an accepted alias. Only the literal string true enables this; any other value is treated as false.

Note: component schemas are keyed by type only (not per theme version) — if two themes register the same section type, the most recently synced schema's defaults apply.

Response

Page with item tree

object
enum<string>
Available options:
page
id
string | null
type
string
handle
string
locale
string | null
items
object[]
updatedAt
string<date-time> | null
meta
object
seo
object | null

The page's SEO metadata (title, description, keywords, canonicalUrl, openGraph, twitter, ...), or null when the page has none.