Skip to content

CMS Pages — List

Equivalent to GET /api/admin/cms/pages. Cursor pagination via first / after.

For what CMS Pages are, how multi-locale and multi-channel work, and the previewUrl and htmlContent semantics, see the CMS Pages overview.

Operation

OperationType
adminCmsPagesQuery (cursor)

Arguments

ArgTypeNotes
firstIntPage size, default 10, capped at 50.
afterStringCursor from a previous pageInfo.endCursor.
lastIntPage size when paging backwards.
beforeStringCursor from a previous pageInfo.startCursor.
idIntFilter by ID.
page_titleStringPartial title match.
url_keyStringPartial url_key match.
channelIntFilter by channel ID.
localeStringLocale for translation resolution.
sortStringid, page_title, url_key, created_at.
orderStringasc or desc.

Node fields

FieldTypeNotes
idIDIRI (/api/admin/cms/pages/{id}).
_idIntNumeric page ID.
urlKeyStringStorefront URL slug.
pageTitleStringTitle for the active locale.
htmlContentStringThe full page HTML body for the active locale.
metaTitle / metaKeywords / metaDescriptionStringSEO fields.
layoutStringPage layout identifier.
previewUrlStringLive storefront URL for the page (the "View" action).
localeStringResolved locale code.
channelStringResolved channel code.
channelsConnectionEvery assigned channel — query via channels { edges { node { … } } } (node: id, code, name).
translationsConnectionPer-locale content — query via translations { edges { node { … } } } (node: locale, pageTitle, urlKey, htmlContent, metaTitle, metaKeywords, metaDescription).
createdAt / updatedAtStringISO 8601 with offset.
messageStringAlways null on a read. It carries the confirmation text on a delete result only.

Connections Resolve on the Listing Too

translations and channels are Relay connections here, not just on the detail query — select them with edges { node { … } } and take only the sub-fields you need. Over REST the same data arrives as plain JSON arrays, so the two transports are not shape-compatible.

Both nested node types carry a routeless id/api/admin_cms_page_translations/<id> and /api/admin_cms_page_channels/<id>. Neither is a queryable path; read _id instead. Only the page's own id (/api/admin/cms/pages/<id>) can be followed.

Filters combine with AND. Note page_title and url_key are snake_case while the fields they match are camelCase, and channel filters by numeric channel id even though the channel field returns a code string.

Released under the MIT License.