Skip to main content
GET
Get page content

Authorizations

Authorization
string
header
required

Bearer token: a shop API key (WEAVERSE_API_KEY), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.

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.