Skip to main content
PATCH
cURL

Authorizations

Authorization
string
header
required

Paste your API key as the CMS showed it: fsk_<site>_<key id>_<secret> (issued under API Keys). ApiKey in front of it works too. Leave it empty to read as the public.

Scopes

content:pages:write

Path Parameters

_id
string
required

Computed document ID (can optionally include mode and locale, e.g., id:en:published)

Pattern: ^\S+$
Example:

"ckitdo5oq004pu69kr6oxo6fr:en:published"

Query Parameters

aposMode
enum<string>
default:published

published (the default) or draft. Drafts need a credential that may see them: an API key with the type’s write scope (content:<type>:write), or a signed-in editor. The public and a key with only the read scope get 403.

Available options:
draft,
published
aposLocale
string

The locale to read or write, e.g. en (default: the site’s default locale).

Example:

"fr"

Body

application/json

The fields to change. A key may also use dot notation to reach into a field (sections.items.0.title, @<rowId>.title).

The fields to change (the rest stay as they are), and, to move the page, where it goes.

_targetId
string | null

The page to place it beside or under, by _id (_home and _archive work too). Default _home.

_position
enum<string> | null

Where, relative to _targetId. Default lastChild.

Available options:
before,
after,
firstChild,
lastChild,
null
slug
string | null

URL slug for the page

Example:

"/about-us"

orphan
boolean | null
default:false

Whether page is orphaned (not in tree structure)

visibility
enum<string> | null
default:public

Page visibility setting

Available options:
public,
loginRequired,
private,
null
Example:

"public"

type
string | null

The page type: one of the site’s page types (the type its pages carry). Anything else is refused with the list.

Example:

"default-page"

title
string | null

Page title

Maximum string length: 100
Example:

"About Us"

main
Content · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
scheduledPublish
string | null

An ISO 8601 date and time, e.g. 2026-10-21T14:30:00.000Z.

scheduledUnpublish
string | null

An ISO 8601 date and time, e.g. 2026-10-21T14:30:00.000Z.

seoTitle
string | null
default:""

Overrides the document title in the browser tab and search results. Leave blank to use the regular title.

seoDescription
string | null
default:""

Shown in search results and link previews. Aim for 150–160 characters.

seoImage
Social share image · object

Used for Open Graph / social link previews. Recommended 1200×630. Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
pageFontOverrides
Typeface for this page · object[] | null

Optional. Set part of this page in a different typeface. Leave empty to follow the site’s fonts (Site design → Typography). Individual sections can still override this for themselves.

Maximum array length: 4

The ribbon of phrases scrolling across the top of the footer. Its phrases and the site-wide default are set in Site design → Footer: Marquee.

Available options:
inherit,
on,
off,
null
sections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with page-header.

Example:
comingSoonIcon
string | null
default:sparkles

Any Font Awesome icon name, e.g. star, bolt, arrow-left-to-bracket (no “fa-” prefix). Browse at fontawesome.com/icons.

comingSoonIconFamily
enum<string> | null
default:classic-regular

Icon family.

Available options:
classic-regular,
duotone-regular,
brands,
jelly,
jelly-duo,
whiteboard,
null
comingSoonIconColor
string | null

Optional — leave empty to use the design’s own color rhythm.

comingSoonIconAnimation
enum<string> | null
default:none

Icon animation.

Available options:
none,
fa-beat,
fa-bounce,
fa-fade,
fa-beat-fade,
fa-flip,
fa-shake,
fa-spin,
null
comingSoonIconSize
enum<string> | null
default:5x

Relative to the component’s base icon size.

Available options:
default,
sm,
lg,
xl,
2xl,
2x,
3x,
4x,
5x,
null
comingSoonNote
string | null
default:""

Optional. Shown under the icon while this page has no content. Leave empty for a tasteful default line.

Optional. Color of the "← back" link at the top of every post. Leave empty to use the site accent color.

Optional light-theme override. Falls back to the dark-theme color, then the accent.

Back link weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null

Back link size.

Available options:
small,
normal,
large,
xlarge,
null
aboveSections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with page-header.

Example:
postList
Post list · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with blog-list.

Example:
belowSections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
backButtonLabel
string | null
default:Back to all posts

The visible button text. Leave empty to hide the button.

backButtonVariant
enum<string> | null
default:outline

Solid fills with the color; Outline / Soft / Text link use it for the border + text.

Available options:
solid,
outline,
soft,
link,
null
backButtonSize
enum<string> | null
default:normal

Button size.

Available options:
small,
normal,
large,
null
backButtonRadius
enum<string> | null
default:slight

Corner radius.

Available options:
pill,
rounded,
slight,
square,
null
backButtonColor
string | null
default:--fetchski-accent

Solid fill, or the border + text for the other styles. Defaults to the brand accent; CLEAR it for a transparent, outline-only button.

backButtonColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color. (Brand tokens already flip per theme.)

backButtonTextColor
string | null
default:--fetchski-ink

The text/icon color. Clear it to derive from the button color (readable on solid fills).

backButtonTextColorLight
string | null

Optional light-theme override. Falls back to the dark-theme label color.

backButtonHoverColor
string | null

Optional. Drives the hover treatment. Leave empty to derive it from the button color.

backButtonHoverColorLight
string | null

Optional light-theme override. Falls back to the dark-theme hover color.

backButtonStyle
enum<string> | null
default:sweep

The hover treatment: a soft shadow, a colored offset shadow, a glow, a fill sweep, or a thicker border.

Available options:
none,
single,
dual,
glow,
sweep,
thicken,
null
backButtonShadowColor
string | null

Optional. The offset-shadow or glow color on hover. Leave empty to use the site secondary color.

backButtonShadowColorLight
string | null

Optional light-theme override. Falls back to the dark-theme shadow color.

backButtonAnimation
enum<string> | null
default:lift-scale

Hover motion.

Available options:
lift,
scale,
lift-scale,
none,
null
backButtonIcon
string | null
default:arrow-left

Any Font Awesome icon name, e.g. star, bolt, arrow-left-to-bracket (no “fa-” prefix). Browse at fontawesome.com/icons.

backButtonIconFamily
enum<string> | null
default:classic-regular

Icon family.

Available options:
classic-regular,
duotone-regular,
brands,
jelly,
jelly-duo,
whiteboard,
null
backButtonIconPosition
enum<string> | null
default:before

Which side of the label the icon sits on (when an icon name is set).

Available options:
before,
after,
null
backButtonIconNudge
boolean | null
default:false

The icon slides toward its side on hover (e.g. an arrow edges outward).

postFontOverrides
Typeface for posts · object[] | null

Optional. Set part of every post in a different typeface. Leave empty to follow the site’s fonts (Site design → Typography). An individual post can replace this on its own Fonts tab.

Maximum array length: 4
postTextSize
enum<string> | null
default:normal

Body text size.

Available options:
small,
normal,
large,
xlarge,
null
postTextWeight
enum<string> | null
default:normal

Body text weight.

Available options:
normal,
medium,
semibold,
null
postContentWidth
enum<string> | null
default:normal

Reading measure — how wide the article column gets. Posts that contain section widgets open to Full width automatically so the widgets have room.

Available options:
narrow,
normal,
wide,
xwide,
full,
null
postLineHeight
enum<string> | null
default:normal

Line height.

Available options:
tight,
normal,
relaxed,
null
postAccentColor
string | null

Links, the blockquote rule, and heading accents. Leave empty to use the site link color.

postAccentColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color, then the link color.

postHeadingWeight
enum<string> | null
default:bold

Heading weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null
postHeadingColor
string | null

Optional. Overrides in-article heading color. Leave empty to track the theme’s text color.

postHeadingColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color, then the theme default.

blogPostCss
Post custom CSS · object | null

CSS for every blog post’s page: the title band, the article and its parts. It wins over Site design → Custom CSS → Blog post.

Response

Page updated successfully

A page: the fields every page has, and each page type’s own (type says which page type it is; a field belongs only to the page types that define it).

_id
string
required

Unique document identifier, may include mode and locale (e.g., "id:en:published")

Example:

"ckhdscx5900054z9k88uqs16w:en:published"

aposDocId
string
required

Base document ID without mode/locale qualifiers

Example:

"ckhdscx5900054z9k88uqs16w"

aposLocale
string
required

Document locale code

Example:

"en"

updatedAt
string<date-time>
required

Page last update timestamp

Example:

"2024-12-18T14:20:00.000Z"

slug
string
required

URL slug for the page

Example:

"/about-us"

path
string
required

Full hierarchical path in the page tree

Example:

"/about-us"

level
integer
required

Depth level in the page tree (0 = root level)

Example:

1

visibility
enum<string>
default:public
required

Page visibility setting

Available options:
public,
loginRequired,
private
Example:

"public"

type
string
required

Page type module name

Example:

"@apostrophecms/page"

title
string
required

Page title

Maximum string length: 100
Example:

"About Us"

aposMode
enum<string> | null

Document mode (draft or published)

Available options:
draft,
published,
null
Example:

"published"

archived
boolean | null
default:false

Whether the page is archived

createdAt
string<date-time> | null

Page creation timestamp

Example:

"2023-01-15T10:30:00.000Z"

titleSortified
string | null

Sortable version of the page title

Example:

"about us"

rank
integer | null

Sort order within parent page

Example:

0

orphan
boolean | null
default:false

Whether page is orphaned (not in tree structure)

parked
string[] | null

Array of parking lot configurations if page is parked

Example:
main
Content · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
_ancestors
array | null

The page’s ancestors, from the home page down (each without its own _ancestors and _children).

_children
array | null

Its child pages, each with its own _children where the request asked for more levels.

_url
string<uri> | null

Full URL to the page

Example:

"https://example.com/about-us"

_edit
boolean | null

Whether current user can edit this page

Example:

true

_publish
boolean | null

Whether current user can publish this page

Example:

true

copyOfId
string | null

The _id of the piece/page that was copied to create this document (only present if created via _copyingId)

Example:

"ckhdscx5900054z9k88uqs16w:en:published"

_publishedDoc
any

Published version of the page (when viewing drafts)

_draftDoc
any

Draft version of the page (when viewing published)

aposShareKey
string | null
read-only

The draft’s preview share key, while its share link is on: the link is the draft’s _url with aposShareKey and aposShareId (the draft’s _id) in its query. Absent otherwise, and on published documents.

Example:

"k3v9x2m7q1z8w4p6"

scheduledPublish
string | null

An ISO 8601 date and time, e.g. 2026-10-21T14:30:00.000Z.

scheduledUnpublish
string | null

An ISO 8601 date and time, e.g. 2026-10-21T14:30:00.000Z.

seoTitle
string | null
default:""

Overrides the document title in the browser tab and search results. Leave blank to use the regular title.

seoDescription
string | null
default:""

Shown in search results and link previews. Aim for 150–160 characters.

seoImage
Social share image · object

Used for Open Graph / social link previews. Recommended 1200×630. Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
pageFontOverrides
Typeface for this page · object[] | null

Optional. Set part of this page in a different typeface. Leave empty to follow the site’s fonts (Site design → Typography). Individual sections can still override this for themselves.

Maximum array length: 4

The ribbon of phrases scrolling across the top of the footer. Its phrases and the site-wide default are set in Site design → Footer: Marquee.

Available options:
inherit,
on,
off,
null
sections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with page-header.

Example:
comingSoonIcon
string | null
default:sparkles

Any Font Awesome icon name, e.g. star, bolt, arrow-left-to-bracket (no “fa-” prefix). Browse at fontawesome.com/icons.

comingSoonIconFamily
enum<string> | null
default:classic-regular

Icon family.

Available options:
classic-regular,
duotone-regular,
brands,
jelly,
jelly-duo,
whiteboard,
null
comingSoonIconColor
string | null

Optional — leave empty to use the design’s own color rhythm.

comingSoonIconAnimation
enum<string> | null
default:none

Icon animation.

Available options:
none,
fa-beat,
fa-bounce,
fa-fade,
fa-beat-fade,
fa-flip,
fa-shake,
fa-spin,
null
comingSoonIconSize
enum<string> | null
default:5x

Relative to the component’s base icon size.

Available options:
default,
sm,
lg,
xl,
2xl,
2x,
3x,
4x,
5x,
null
comingSoonNote
string | null
default:""

Optional. Shown under the icon while this page has no content. Leave empty for a tasteful default line.

Optional. Color of the "← back" link at the top of every post. Leave empty to use the site accent color.

Optional light-theme override. Falls back to the dark-theme color, then the accent.

Back link weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null

Back link size.

Available options:
small,
normal,
large,
xlarge,
null
aboveSections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with page-header.

Example:
postList
Post list · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area. A new document starts with blog-list.

Example:
belowSections
Page sections · object

Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
backButtonLabel
string | null
default:Back to all posts

The visible button text. Leave empty to hide the button.

backButtonVariant
enum<string> | null
default:outline

Solid fills with the color; Outline / Soft / Text link use it for the border + text.

Available options:
solid,
outline,
soft,
link,
null
backButtonSize
enum<string> | null
default:normal

Button size.

Available options:
small,
normal,
large,
null
backButtonRadius
enum<string> | null
default:slight

Corner radius.

Available options:
pill,
rounded,
slight,
square,
null
backButtonColor
string | null
default:--fetchski-accent

Solid fill, or the border + text for the other styles. Defaults to the brand accent; CLEAR it for a transparent, outline-only button.

backButtonColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color. (Brand tokens already flip per theme.)

backButtonTextColor
string | null
default:--fetchski-ink

The text/icon color. Clear it to derive from the button color (readable on solid fills).

backButtonTextColorLight
string | null

Optional light-theme override. Falls back to the dark-theme label color.

backButtonHoverColor
string | null

Optional. Drives the hover treatment. Leave empty to derive it from the button color.

backButtonHoverColorLight
string | null

Optional light-theme override. Falls back to the dark-theme hover color.

backButtonStyle
enum<string> | null
default:sweep

The hover treatment: a soft shadow, a colored offset shadow, a glow, a fill sweep, or a thicker border.

Available options:
none,
single,
dual,
glow,
sweep,
thicken,
null
backButtonShadowColor
string | null

Optional. The offset-shadow or glow color on hover. Leave empty to use the site secondary color.

backButtonShadowColorLight
string | null

Optional light-theme override. Falls back to the dark-theme shadow color.

backButtonAnimation
enum<string> | null
default:lift-scale

Hover motion.

Available options:
lift,
scale,
lift-scale,
none,
null
backButtonIcon
string | null
default:arrow-left

Any Font Awesome icon name, e.g. star, bolt, arrow-left-to-bracket (no “fa-” prefix). Browse at fontawesome.com/icons.

backButtonIconFamily
enum<string> | null
default:classic-regular

Icon family.

Available options:
classic-regular,
duotone-regular,
brands,
jelly,
jelly-duo,
whiteboard,
null
backButtonIconPosition
enum<string> | null
default:before

Which side of the label the icon sits on (when an icon name is set).

Available options:
before,
after,
null
backButtonIconNudge
boolean | null
default:false

The icon slides toward its side on hover (e.g. an arrow edges outward).

postFontOverrides
Typeface for posts · object[] | null

Optional. Set part of every post in a different typeface. Leave empty to follow the site’s fonts (Site design → Typography). An individual post can replace this on its own Fonts tab.

Maximum array length: 4
postTextSize
enum<string> | null
default:normal

Body text size.

Available options:
small,
normal,
large,
xlarge,
null
postTextWeight
enum<string> | null
default:normal

Body text weight.

Available options:
normal,
medium,
semibold,
null
postContentWidth
enum<string> | null
default:normal

Reading measure — how wide the article column gets. Posts that contain section widgets open to Full width automatically so the widgets have room.

Available options:
narrow,
normal,
wide,
xwide,
full,
null
postLineHeight
enum<string> | null
default:normal

Line height.

Available options:
tight,
normal,
relaxed,
null
postAccentColor
string | null

Links, the blockquote rule, and heading accents. Leave empty to use the site link color.

postAccentColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color, then the link color.

postHeadingWeight
enum<string> | null
default:bold

Heading weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null
postHeadingColor
string | null

Optional. Overrides in-article heading color. Leave empty to track the theme’s text color.

postHeadingColorLight
string | null

Optional light-theme override. Falls back to the dark-theme color, then the theme default.

blogPostCss
Post custom CSS · object | null

CSS for every blog post’s page: the title band, the article and its parts. It wins over Site design → Custom CSS → Blog post.