Skip to main content
POST
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

global: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"

Response

Done.

The site-wide settings document (one per site and locale), with the fields this site adds.

_id
string
required
read-only

Unique identifier

Example:

"global"

slug
string
required
read-only

Default slug field

Example:

"global"

type
string
required
read-only
Example:

"@apostrophecms/global"

Change this — to “2”, a date, anything — and every visitor is asked again. Do that whenever what you do with the data materially changes; consent given under the old terms does not carry over.

Banner message.

Accept button.

Give this the same visual weight as Accept. A reject option that is harder to find than accept is the single most commonly penalized banner design.

Preferences panel heading.

createdAt
string<date-time>
required
read-only

Created At.

updatedAt
string<date-time>
required
read-only

Updated At.

title
string | null
read-only

Default title field

Example:

"global"

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"

businessName
string | null
default:Fetchski Attract

Business name.

tagline
string | null
default:The website platform for modern businesses

Tagline.

_logo
Logo — white version · object[] | null

Shown in the site header on the dark theme (and over the hero). Upload to the Images library first. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1
_logoLight
Logo — dark version (light theme) · object[] | null

Optional darker logo for the light theme. If empty, the white logo is auto-inverted. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1
_favicon
Favicon · object[] | null

Browser tab icon — the default, also used when the browser is in dark mode. Upload a square PNG or SVG (at least 64×64) to the Images library. If empty, the bundled default icon is used. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1
_faviconLight
Favicon — light-scheme version · object[] | null

Optional. Used when the visitor’s BROWSER or device is in light mode — this follows the browser’s color scheme, not the site’s own theme toggle. If empty, the main favicon is used everywhere. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1
addressLine1
string | null
default:Your City, ST

Shown in the footer. Use up to three lines for a full street address, or just one for a town/region.

addressLine2
string | null
default:""

Address line 2.

addressLine3
string | null
default:""

Address line 3.

phone
string | null
default:(555) 000-0000

Phone.

email
string | null
default:hello@example.com

Email.

The registered name of the company, e.g. “Example Holdings LLC”. Fills [Business legal name].

tradeNames
string | null
default:""

Any other names the business operates under, e.g. “Example Studio and Example Supply”. Fills [Trade names].

Where the business is based, for governing law. Fills [State or region].

Fills [Country].

Where legal disputes are heard. Fills [County or venue].

minimumAge
string | null
default:""

The youngest age your website is intended for, e.g. “13”. Fills [Minimum age].

paletteAccent
string | null

Your main brand color — buttons, links, accents. Hover + soft tints are derived automatically. Leave empty for the built-in design color.

paletteAccentLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteOnAccent
string | null

Text/icon color shown ON primary-colored buttons. Defaults to white — set a dark color if your primary is pale.

paletteOnAccentLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteSecondary
string | null

Supporting color — eyebrows, offset shadows, secondary accents.

paletteSecondaryLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteTertiary
string | null

Warm accent, used sparingly.

paletteTertiaryLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Body-text link color (rich-text content). Leave empty to track the primary color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteSurface
string | null

The base page background.

paletteSurfaceLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteRaised
string | null

Cards and raised panels that sit above the page background.

paletteRaisedLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteSunken
string | null

Recessed / inset bands.

paletteSunkenLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteInk
string | null

Primary text color. Mind contrast against the page background.

paletteInkLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteInkMuted
string | null

Secondary / muted text color.

paletteInkMutedLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteLine
string | null

Borders and dividers.

paletteLineLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteSuccess
string | null

Positive / confirmation state (forms, alerts).

paletteSuccessLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteWarning
string | null

Caution state.

paletteWarningLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteDanger
string | null

Error / destructive state.

paletteDangerLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

paletteInfo
string | null

Informational state.

paletteInfoLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

fontDisplaySource
enum<string> | null
default:default

Typeface used for headings and display type. Default is the built-in design font; the other sources replace it site-wide.

Available options:
default,
curated,
cdn,
upload,
null
fontDisplayCurated
enum<string> | null
default:clash-display

Display font — curated pick.

Available options:
clash-display,
satoshi,
general-sans,
space-grotesk,
bricolage-grotesque,
archivo,
sora,
syne,
outfit,
unbounded,
fraunces,
playfair-display,
zodiak,
sentient,
null
fontDisplayCdnProvider
enum<string> | null
default:bunny

Where to browse for the family. Pick one, then follow the link below to find the exact name.

Available options:
bunny,
fontshare,
null
fontDisplayCdnFamily
string | null
default:""

Exactly as the provider’s catalog spells it, e.g. "Space Grotesk" or "Clash Display".

fontDisplayCdnWeights
string | null
default:""

Comma-separated weights to load, e.g. 400, 700. Empty loads 500, 700, 800. Weights the family doesn’t ship are skipped by the CDN and synthesized by the browser (faux bold).

fontDisplayUploads
Display font — font files · object[] | null

One file per weight/style of the SAME typeface. woff2 strongly recommended (smallest, universally supported); woff/ttf/otf also accepted.

Maximum array length: 8
fontDisplayFallback
enum<string> | null
default:sans

Generic system fonts shown while the font loads (and if it fails). Curated picks set this automatically.

Available options:
sans,
serif,
mono,
null
fontBodySource
enum<string> | null
default:default

Typeface used for body text and UI. Default is the built-in design font; the other sources replace it site-wide.

Available options:
default,
curated,
cdn,
upload,
null
fontBodyCurated
enum<string> | null
default:inter

Body font — curated pick.

Available options:
inter,
manrope,
public-sans,
work-sans,
nunito-sans,
ibm-plex-sans,
source-sans-3,
dm-sans,
karla,
switzer,
supreme,
satoshi,
general-sans,
lora,
source-serif-4,
null
fontBodyCdnProvider
enum<string> | null
default:bunny

Where to browse for the family. Pick one, then follow the link below to find the exact name.

Available options:
bunny,
fontshare,
null
fontBodyCdnFamily
string | null
default:""

Exactly as the provider’s catalog spells it, e.g. "Space Grotesk" or "Clash Display".

fontBodyCdnWeights
string | null
default:""

Comma-separated weights to load, e.g. 400, 700. Empty loads 400, 500, 600, 700. Weights the family doesn’t ship are skipped by the CDN and synthesized by the browser (faux bold).

fontBodyUploads
Body font — font files · object[] | null

One file per weight/style of the SAME typeface. woff2 strongly recommended (smallest, universally supported); woff/ttf/otf also accepted.

Maximum array length: 8
fontBodyFallback
enum<string> | null
default:sans

Generic system fonts shown while the font loads (and if it fails). Curated picks set this automatically.

Available options:
sans,
serif,
mono,
null
fontAccentSource
enum<string> | null
default:default

Typeface used for code blocks and monospace accents. Default is the built-in design font; the other sources replace it site-wide.

Available options:
default,
curated,
cdn,
upload,
null
fontAccentCurated
enum<string> | null
default:jetbrains-mono

Accent / mono font — curated pick.

Available options:
jetbrains-mono,
ibm-plex-mono,
fira-code,
space-mono,
source-code-pro,
dm-mono,
inconsolata,
ubuntu-mono,
courier-prime,
red-hat-mono,
spline-sans-mono,
victor-mono,
null
fontAccentCdnProvider
enum<string> | null
default:bunny

Where to browse for the family. Pick one, then follow the link below to find the exact name.

Available options:
bunny,
fontshare,
null
fontAccentCdnFamily
string | null
default:""

Exactly as the provider’s catalog spells it, e.g. "Space Grotesk" or "Clash Display".

fontAccentCdnWeights
string | null
default:""

Comma-separated weights to load, e.g. 400, 700. Empty loads 400, 700. Weights the family doesn’t ship are skipped by the CDN and synthesized by the browser (faux bold).

fontAccentUploads
Accent / mono font — font files · object[] | null

One file per weight/style of the SAME typeface. woff2 strongly recommended (smallest, universally supported); woff/ttf/otf also accepted.

Maximum array length: 8
fontAccentFallback
enum<string> | null
default:mono

Generic system fonts shown while the font loads (and if it fails). Curated picks set this automatically.

Available options:
sans,
serif,
mono,
null
contentWidth
enum<string> | null
default:wide

The widest the page content gets: sections, layouts, the header and the footer all line up to it. Smaller screens always use their full width, minus the side margins.

Available options:
standard,
wide,
xwide,
null

Each profile is optional — add only the networks you use. A link only appears once it has a URL. Pick a platform for its brand icon, or “Other / custom” to choose any icon.

seoImage
Default social share image · object

Site-wide fallback for link previews (Open Graph): used on any page that has neither its own Social share image nor a featured image. Recommended 1200×630. Widgets, top to bottom: send { "items": [ … ] }, one object per widget with its type. Writing it replaces the whole area.

Example:
seoStructuredData
boolean | null
default:false

Adds schema.org structured data about the business to every page, built from the Brand tab’s business name, address, phone and email plus the Social Links list. Helps search engines show rich results. Nothing is published until this is on and a business name is set.

seoStructuredDataType
enum<string> | null
default:LocalBusiness

The schema.org type that best describes the business. “Local business” fits most sites with a physical location or service area.

Available options:
LocalBusiness,
Organization,
ProfessionalService,
Store,
null
seoServiceAreas
boolean | null
default:true

Adds the Service Area Map’s coverage (place names, service radius) to the business structured data on every page, and the full zip-code/boundary detail on pages with a Service Area Map section. Helps search engines and AI answers understand where the business serves — there is no visual search result for this, and it never affects map-pack ranking. Keep it consistent with the areas on the business’s Google Business Profile. Demo map data is never published.

seoServiceType
string | null
default:""

Optional, plain words — e.g. “House cleaning” or “Airport transfers”. When set, the structured data pairs it with the service areas as a schema.org Service; when empty the areas attach directly to the business.

analyticsProvider
enum<string> | null
default:none

Plausible is a privacy-friendly, cookieless analytics service. Visitor page views are counted anonymously; logged-in editors are never tracked.

Available options:
none,
plausible,
null
plausibleScriptUrl
string | null

Paste the script address from your site's snippet in Plausible → Site Settings → Site Installation (it looks like https://plausible.io/js/pa-XXXXXXXX.js and is unique per site). Analytics stay off until this is set. Optional measurements (outbound links, file downloads, form submissions) are toggled in the Plausible dashboard — no change needed here. When set, a URL; empty or null when not.

Off hides the banner AND stops every non-essential cookie and third-party embed — declining is the only safe reading of "never asked". Turn it off only on a site that sets nothing beyond the strictly necessary.

Where opt-in applies, nothing non-essential runs until the visitor agrees. Everyone else sees the same banner as a notice: analytics and embedded content work immediately, and declining switches them off. The first option follows the law that is strictest about being asked first, without putting a wall in front of visitors whose law does not require one.

Available options:
eu,
all,
notice,
null

Country comes from your CDN or proxy (Cloudflare’s header, or one you configure). Without it the site falls back to this, plus a browser time-zone check that quietly upgrades an apparently European visitor to opt-in. Put Cloudflare or a GeoIP header in front of the site and this setting stops mattering.

Available options:
lenient,
strict,
null

Banner position.

Available options:
left,
right,
center,
full,
null

Opens the per-category preferences panel. Leaving it on is the safer choice: accept-or-reject with no middle option is what regulators have been fining sites over.

A small button pinned to the bottom corner, over the page. Off by default because the footer link below already offers this — turn it on if you want the control visible without scrolling.

Puts the reopen control at the bottom of every page, under the “Powered by” line — where visitors look for it. Uses the reopen label from the Cookie banner wording tab. Leave this on unless the floating button above is on instead: consent must stay as easy to withdraw as it was to give.

GPC is a browser-level "do not sell or share my data" signal, legally binding in several US states. When on, a visitor sending it starts with everything non-essential switched off — they can still turn categories on by hand.

A third-party script that has already run cannot be switched off in place: it keeps running until the next full page load (each vendor is still told about the withdrawal straight away). On, the page reloads as soon as a visitor switches a category OFF, so nothing they declined keeps running. Off by default: the reload interrupts whatever the visitor was doing, and most visitors are not in a region that requires it.

How long a visitor’s answer stands before the banner returns. Six months is the common practice and twelve is the usual ceiling.

Required range: 1 <= x <= 365

Stores a receipt for each decision (which categories, when, under which policy version) so you can show consent was given. Kept for two years, then deleted automatically.

Optional. Leave empty for the message alone, which is how most banners read best.

Rendered after the message as a link to the policy page. Leave empty to omit it.

A path on this site or a full URL. The default matches the parked Cookie Policy page.

Customize button.

Save-choices button.

Reopen control label.

Preferences panel intro.

Strictly necessary — label.

Shown beside this category’s switch in the preferences panel. Say what the visitor gains or loses, not which vendors are involved.

Functional — label.

Shown beside this category’s switch in the preferences panel. Say what the visitor gains or loses, not which vendors are involved.

Analytics — label.

Shown beside this category’s switch in the preferences panel. Say what the visitor gains or loses, not which vendors are involved.

Marketing — label.

Shown beside this category’s switch in the preferences panel. Say what the visitor gains or loses, not which vendors are involved.

Shown in place of an embed (a map, a social video) that is waiting on consent.

Blocked-content message.

Blocked-content button.

maintenanceMode
boolean | null
default:true

Takes the public site offline. Visitors and search engines see a “be right back” page (served with the correct temporary-outage signals, so search rankings are preserved); logged-in editors keep the full site and can continue editing. A new site starts with this on: turn it off when the site is ready to go live.

maintenanceRetryAfter
enum<string> | null
default:3600

How long search engines should wait before checking back (the Retry-After hint). A rough estimate is fine — it is a hint, not a promise, and nothing switches back automatically.

Available options:
3600,
14400,
43200,
86400,
259200,
604800,
null
maintenanceMessage
string | null
default:""

Optional short message shown on the maintenance page (e.g. what is happening or when you expect to be back). Leave empty for a generic “we’ll be back soon” line.

recaptchaSiteKey
string | null
default:""
read-only

Public reCAPTCHA v3 site key. Managed automatically from Connections → Spam protection — edit it there, not here.

requestLogEnabled
boolean | null
default:false
read-only

Whether anonymous page views are being recorded. Managed automatically from Visitor data → Request log — edit it there, not here.

Whether anonymous visitors get the first-party visitor-ID cookie. Managed automatically from Visitor data → Request log — edit it there, not here.

conversionsEnabled
boolean | null
default:false
read-only

Whether conversions and ad attribution are being recorded. Managed automatically from Visitor data → Conversions — edit it there, not here.

conversionLinkedDomains
string | null
default:""
read-only

Sites visitors continue to (a booking site), for cross-domain ad attribution. Managed automatically from Visitor data → Conversions — edit it there, not here.

googleMapsApiKey
string | null
default:""
read-only

Public (referrer-restricted) Maps JavaScript key — the Service Area Map loads Google Maps with it. Managed automatically from Connections → Google Maps — edit it there, not here.

animationsEnabled
boolean | null
default:true

Master switch for the site’s scroll and entrance motion (section reveals, count-ups, marquees, the hero). When off, no animation code is loaded and every section appears in its final, static state. Visitors whose device requests reduced motion always get the static experience regardless of this setting.

designCss
Design layer · object | null

Site-wide CSS for every section of a type and for shared elements (buttons, the header, the footer…). Type into the slot of the part you want to style; a section’s own CSS tab wins over this.

headerStyle
enum<string> | null
default:floating

Floating rests transparent over the hero and morphs to glass on scroll; Glass is frosted from the top; Solid is an opaque bar (uses the bar background color).

Available options:
floating,
glass,
solid,
null
headerWidth
enum<string> | null
default:island

Island floats as a contained pill; Full width spans edge-to-edge (squared corners, content still centered). Full width ignores the corner radius below.

Available options:
island,
full,
null
headerBarRadius
enum<string> | null
default:rounded

Applies to the Island bar (Full width is always squared).

Available options:
pill,
rounded,
slight,
square,
null
headerBackgroundColor
string | null

The bar fill for Glass / Solid styles (and the glass tint when scrolled). Leave empty to use the raised surface color.

headerBackgroundColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerBorder
boolean | null
default:true

A hairline outline around the bar (shown when glass / solid / scrolled).

headerShadow
boolean | null
default:true

A soft drop shadow under the bar (when glass / solid / scrolled).

headerHideOnScroll
boolean | null
default:true

The bar slides away when scrolling down and returns when scrolling up.

headerGlassOnScroll
boolean | null
default:true

The floating bar stays transparent at the top and becomes a glass pill once the page scrolls. Turn off to keep it transparent.

headerDarkBothThemes
boolean | null
default:false

Keeps the whole navbar (bar, logo, wordmark, links, dropdown, button and mobile menu) in its dark-theme look even when a visitor switches to the light theme, e.g. a header that always sits over a dark hero photo. While on, the light-theme header colors and the light-theme logo are not used. Off follows the site theme.

headerNavBreakpoint
enum<string> | null
default:lg

Below this width the links collapse into the mobile menu (hamburger). Raise it if you have many or long links.

Available options:
md,
lg,
xl,
null
headerLogoHeight
enum<string> | null
default:medium

Logo height.

Available options:
small,
medium,
large,
null
headerLogoHover
boolean | null
default:true

A subtle tilt + scale when the cursor is over the logo lockup.

headerShowWordmark
boolean | null
default:true

The business name in type beside the logo. Turn off when the logo already includes the name.

headerWordmarkText
string | null
default:""

Optional override of the text wordmark. Leave empty to use the business name.

headerWordmarkSplit
boolean | null
default:true

Render the first word large and the rest as a small tracked-out caption beneath it. Off renders the whole wordmark on one line.

headerNameColor
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerNameColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerNameWeight
enum<string> | null
default:extrabold

Weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null
headerNameSize
enum<string> | null
default:normal

Size.

Available options:
small,
normal,
large,
null
headerSublineColor
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerSublineColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerSublineWeight
enum<string> | null
default:bold

Weight.

Available options:
normal,
medium,
semibold,
bold,
extrabold,
null
headerNav
Header navigation · object[] | null

Header navigation.

headerMoreLabel
string | null
default:More

Label for the overflow dropdown that holds links placed in “More”.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null
headerNavIndicator
enum<string> | null
default:sweep

How the hovered / active link is marked.

Available options:
sweep,
grow,
pill,
none,
null
headerNavHoverColor
string | null

Optional. Leave empty to use the site accent color.

headerNavHoverColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerNavActiveColor
string | null

Color + indicator for the current page’s link. Leave empty to use the secondary (mint) color.

headerNavActiveColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerCtaLabel
string | null
default:Member Portal

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

headerCtaUrl
string | null
default:https://fetchski.com

Where the button goes — a path (/blog) or full URL.

headerCtaNewTab
boolean | null
default:false

Opens the link in a new browser tab (adds rel="noopener noreferrer").

headerCtaVariant
enum<string> | null
default:solid

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

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

Button size.

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

Corner radius.

Available options:
pill,
rounded,
slight,
square,
null
headerCtaColor
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.

headerCtaColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerCtaTextColor
string | null
default:--fetchski-ink

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

headerCtaTextColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerCtaHoverColor
string | null

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

headerCtaHoverColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerCtaStyle
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
headerCtaShadowColor
string | null

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

headerCtaShadowColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

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

Hover motion.

Available options:
lift,
scale,
lift-scale,
none,
null
headerCtaIcon
string | null
default:""

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

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

Icon family.

Available options:
classic-regular,
duotone-regular,
brands,
jelly,
jelly-duo,
whiteboard,
null
headerCtaIconPosition
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
headerCtaIconNudge
boolean | null
default:false

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

headerMobileSide
enum<string> | null
default:right

Drawer side.

Available options:
right,
left,
null
headerMobileWidth
enum<string> | null
default:normal

Drawer width.

Available options:
narrow,
normal,
wide,
null
headerMobileBackgroundColor
string | null

Optional. Leave empty to use the site surface color.

headerMobileBackgroundColorLight
string | null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

headerMobileShowLogo
boolean | null
default:true

Show logo in drawer.

headerMobileShowCta
boolean | null
default:true

Repeat the header button at the bottom of the mobile drawer.

headerMobileShowScrollCue
boolean | null
default:true

A small animated hint shown when the menu links overflow.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null

Optional. Leave empty to use the site accent color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Site default keeps the footer’s sunken surface; Solid color and Image override it. The site surface color is the fallback when a color is left empty.

Available options:
default,
solid,
image,
null

Used for a Solid background (and as the fallback behind an Image). Leave empty to use the site surface color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

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

Example:

Scrim over the image to keep the footer legible. Leave empty to use the surface color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Overlay opacity (%).

Required range: 0 <= x <= 100

Vertical padding.

Available options:
tight,
normal,
roomy,
null

A hairline rule along the top edge of the footer.

Show “Back to top” button.

Optional logo shown at the top of the company column, used on the dark theme. Leave both footer logos empty to use the site logo (Site settings → Brand); with no logo at all the business name leads. Upload to the Images library first. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1

Optional darker logo for the light theme. If empty, the white logo is auto-inverted. The related @apostrophecms/image documents, in order (empty when none). To set it, send a list of { "_id": "…" }, one per document (one at most); a document the site can’t find is left out.

Maximum array length: 1

Logo height.

Available options:
small,
medium,
large,
null

Aligns the logo within the company column (e.g. centered above the business name).

Available options:
left,
center,
right,
null

The business name as a heading at the top of the column. Turn off when the logo already carries the name.

Show tagline.

Show address, phone & email.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null

Each group becomes a column in the footer. Add a Legal group for Terms & Privacy, etc.

How many columns the link groups flow into. Auto fits to the available width; a fixed count packs shorter groups together (e.g. Legal stacked under Elsewhere). Groups are never split across columns.

Available options:
auto,
2,
3,
4,
null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
xlarge,
null

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null

Optional. Leave empty to use the site accent color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Hover effect.

Available options:
none,
slide,
underline,
null

A slow ribbon of phrases scrolling across the top of the footer. Any page can override this for itself in Page Settings → Footer.

Each phrase can carry its own icon; without one, a dot separates it from the next phrase.

Marquee speed.

Available options:
slow,
normal,
fast,
null

Adds a small, unobtrusive pause/play control so visitors can stop the auto-playing background motion (WCAG 2.2.2). Only appears when a moving background is set.

Optional. Leave empty for the muted default.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

A giant outlined word along the bottom of the footer. Reveals/fills on hover.

Keep it to one short word — it renders at display size. Leave empty to use the business name.

Watermark size.

Available options:
display,
large,
medium,
null

Watermark alignment.

Available options:
left,
center,
right,
null

Outlined letters that fill on hover one at a time, all at once, or always-solid (no ghost effect).

Available options:
letter,
word,
solid,
null

Optional. Overrides the wordmark fill + outline tint. Leave empty to track the theme’s text color.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Type {year} where this year goes (it updates itself every January) and {business} for the business name. Left empty, the site shows “© {year} {business}. All rights reserved.”

Optional short line shown beside the copyright (e.g. a slogan or license number).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Weight.

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

Size.

Available options:
small,
normal,
large,
null

Render the site’s social profiles (configured in the “Social Links” tab) in the footer.

Optional small heading above the icons (e.g. “Follow us”). Leave empty for none.

In the company column (under the contact details) or as its own centered row above the copyright bar.

Available options:
brand,
bar,
null

A hairline rule above the dedicated social row, for a touch of separation from the watermark.

Icon style.

Available options:
bare,
outline,
solid,
null

Icon size.

Available options:
small,
normal,
large,
xlarge,
null

Gap between the icons.

Available options:
tight,
normal,
loose,
null

Optional. Leave empty to match the footer’s other group headings (Footer: Links tab).

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Resting icon color. Leave empty for the muted default.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

Hover to each platform’s own brand color, or to the site accent (or a chosen hover color).

Available options:
brand,
accent,
null

Used when “Hover color” is Accent / custom. Leave empty for the site accent.

A CSS color (#625bff, #625bffff, rgb(…), hsl(…), a color name) or a palette token’s name (--fetchski-accent).

formUploadsEnabled
boolean | null
default:false

OFF by default. While off, the server rejects every file submitted through a public form, regardless of the form’s fields. Turn on only after setting the limits below — anonymous file uploads are a deliberate, security-sensitive choice.

formUploadMaxFiles
integer | null
default:3

How many files one submission may include (hard ceiling 8).

Required range: 1 <= x <= 8
formUploadMaxSizeMb
integer | null
default:5

Largest single file accepted, in megabytes (hard ceiling 10 MB).

Required range: 1 <= x <= 10
formUploadAllowedTypes
enum<string>[] | null

Only these categories are accepted. Each file’s actual contents are verified by signature (magic bytes), not just its extension, so a renamed file is rejected. SVG and other script-capable formats can never be enabled here.

Available options:
image,
pdf,
office,
text
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"