Change a status page's settings
Changes only the fields sent; the rest keep their value. Works on any page of the organization, made in the console or by config apply (a config document that names the setting later sets it again). Not settable here: custom CSS, custom domains, and the access modes that carry credentials or allow-lists (password, IP allow-list, JWT, customer-scoped, SSO), which are set in the console. access_mode: public makes a protected page public and removes its access settings. hide_branding: true needs a plan that includes branding removal. theme.preset applies a theme preset and replaces the page’s theme. The response is the page as GET /pages/ returns it, plus changed: the settings that changed.
Authorizations
An organization API key (obs_pub_…) sent as Authorization: Bearer <key>. Each key carries scopes; an endpoint lists the scope it needs. read:change_events is reserved: keys can carry it, but no endpoint needs it yet.
Path Parameters
Page id.
Body
Page title. A new page defaults to its subdomain.
2 - 120Who can open the page. Only public can be set through the API (it clears any password, allow-list or SSO setting); the other modes carry credentials and are set in the console. Restating the page's current mode is a no-op.
public, password, ip_allowlist, jwt, customer_scoped, sso Page layout.
minimal, aurora, blueprint IANA time zone the page renders days and times in, e.g. Europe/London. Default UTC.
Page language. Default en.
en, es, fr, de, pt-BR, it, nl, ja, ar, zh-CN Visitors can subscribe to updates.
Show the auto-refresh control.
Hide the Powered by Observer footer link. Turning it on needs a paid plan.
Links in the page footer, in order. Replaces the whole list.
5Metric group names in display order (null is the ungrouped metrics). null restores the default order.
200Show each metric group as one summary row.
Search engine description. Empty or null uses the generated one.
300Ask search engines not to index the page.
Apply a theme preset. Replaces the page's theme colours, fonts and spacing.
Response
ok
Where the page is served: the custom domain when it is active, else the subdomain URL.
public, password, sso, ip_allowlist, jwt or customer_scoped.
The operator's choice; the footer link is hidden only on a plan that includes branding removal.
The custom domain, when one is set up (in the console).
The page's key in config documents (null for one made in the console and never applied from config). Per-key DELETE takes this.
config: owned by config apply (prune and per-key delete may remove it). console: made in the console; config apply adopts it when a document names it.
config, console true while the status page is suspended because the organization is over its plan's limit (after a 7-day grace). Nothing is deleted; it is read-only until the person chooses it as active in Billing or upgrades. Writes return 403 item_suspended_plan.
When the suspension started.
The page's metrics in display order. public_label and show_uptime are console settings that config apply keeps.
Settings that changed (empty when the request changed nothing).

