Status pages

Update a status page

Changes only the settings you send; inside theme, also only the keys you send. A new slug moves the page: the old address stops working. A new custom_domain needs to be verified again before visitors use it. Turning off issue reports or traffic alerts ends the alerts they fired. Private pages, password protection and custom domains need a plan that includes them (403 PLAN_FEATURE_UNAVAILABLE); a page that is private already stays so.

patch/status-pages/{statusPage}

Request

  • Base URL
    https://api.spectate.net/v1
  • Auth
    HTTP bearer

Path parameters

statusPagestring uuid required

Status page ID.

Request body

namestring

Name, shown as the page title

slugstring

The page's subdomain under spectate.page: lowercase letters, digits and dashes. The old address stops working

visibility'public' | 'private'

Who can open a status page.

public <br/> Anyone.
private <br/> Visitors with the access link, or the password when the page has one. Part of the Team plan and up.
custom_domainstring nullable

Your own domain for the page, such as status.acme.com; null for none. Part of paid plans (403 PLAN_FEATURE_UNAVAILABLE otherwise). A new domain needs to be verified again: see custom_domain_verification and verifyStatusPageCustomDomain

password_protectedboolean

Let visitors of a private page also get in with a password. Part of paid plans (403 PLAN_FEATURE_UNAVAILABLE otherwise); turning it on needs a password unless the page has one

passwordstring nullable

The password, 8 to 255 characters. Write-only; leave out or send null to keep the current one

language'en' | 'nl' | 'de' | 'fr' | 'es' | 'it'

Languages of the public status page chrome and the subscriber emails. Customer-written content (names, incident titles and updates) is never translated.

en <br/> English.
nl <br/> Dutch.
de <br/> German.
fr <br/> French.
es <br/> Spanish.
it <br/> Italian.
match_browser_languageboolean

Give visitors their browser's language when it is supported

logo_link_urlstring uri nullable

Where the logo goes on the public page, an http: or https: URL of up to 2048 characters. It opens in a new tab. null for the page's home

contact_urlstring uri nullable

Where the "Get in touch" button on the public page goes, an https: or mailto: address of up to 2048 characters. It opens in a new tab. null for no button

collapsed_groupsstring[]

Component groups that start collapsed; replaces the current list

automation_enabledboolean

Monitor automation: when a monitor linked to a component goes down, open an incident "{component} is down" (major outage), and resolve it when the monitor recovers

automation_down_messagestring nullable

Posted when a linked monitor goes down, up to 5000 characters; {component} and {status_page} are filled in. null for a default message

automation_recovered_messagestring nullable

Posted when the monitor recovers, up to 5000 characters; null for a default message

issue_reports_enabledboolean

Let visitors report problems from the page

issue_reports_show_on_pageboolean

While reports are above the threshold, say on the page that users are reporting issues

issue_reports_alerts_enabledboolean

Fire an alert when reports reach the threshold

issue_reports_thresholdinteger

Reports within issue_reports_window_minutes that count as above the threshold, 1 to 1000

issue_reports_window_minutesinteger

The window for the threshold, in minutes, 1 to 1440

traffic_alerts_enabledboolean

Alert when views reach traffic_alert_multiplier times the usual views for the time of day

traffic_alert_multiplierinteger

How many times the usual views alert, 2 to 100

traffic_alert_min_viewsinteger

Fewer views than this in 15 minutes never alert, 10 to 1000000

escalation_path_idsstring[]

Escalation paths for the page's alerts (issue reports and traffic spikes); replaces the current ones. Empty for the team's default path

Example request

{
  "name": "Acme status",
  "slug": "acme",
  "custom_domain": "status.acme.com",
  "password": "correct-horse-battery",
  "logo_link_url": "https://acme.com",
  "contact_url": "mailto:support@acme.com",
  "theme": {
    "accent": "#0f766e",
    "light": {
      "background": "#ffffff",
      "surface": "#f8fafc",
      "foreground": "#0f172a",
      "muted": "#64748b",
      "border": "#e2e8f0",
      "success": "#16a34a",
      "warning": "#ca8a04",
      "partial": "#ea580c",
      "danger": "#dc2626",
      "info": "#2563eb"
    },
    "dark": {
      "background": "#ffffff",
      "surface": "#f8fafc",
      "foreground": "#0f172a",
      "muted": "#64748b",
      "border": "#e2e8f0",
      "success": "#16a34a",
      "warning": "#ca8a04",
      "partial": "#ea580c",
      "danger": "#dc2626",
      "info": "#2563eb"
    }
  },
  "automation_down_message": "We're looking into problems with {component}.",
  "automation_recovered_message": "{component} is working again."
}

Response

The updated status page.

idstring uuid required

Status page ID

namestring required

Name, shown as the page title

slugstring required

The page's subdomain under spectate.page

visibility'public' | 'private' required

Who can open a status page.

public <br/> Anyone.
private <br/> Visitors with the access link, or the password when the page has one. Part of the Team plan and up.
status'operational' | 'degraded_performance' | 'partial_outage' | 'major_outage' | 'under_maintenance' required

A status page component's status, derived from incidents and maintenance.

operational <br/> Working normally.
degraded_performance <br/> Slower or less reliable than usual.
partial_outage <br/> Down for some visitors or some functions.
major_outage <br/> Down.
under_maintenance <br/> In planned maintenance.
public_urlstring uri required

Where visitors open the page: the custom domain once it is verified, else the spectate.page address

access_urlstring uri required

Opens the page while it is private. Anyone with it gets in; rotateStatusPageAccessKey replaces it

custom_domainstring nullable required

Your own domain for the page; null for none. Visitors use it once it is verified

password_protectedboolean required

Whether visitors of a private page can also get in with the password

has_passwordboolean required

Whether the page has a password. The password itself is never returned

language'en' | 'nl' | 'de' | 'fr' | 'es' | 'it' required

Languages of the public status page chrome and the subscriber emails. Customer-written content (names, incident titles and updates) is never translated.

en <br/> English.
nl <br/> Dutch.
de <br/> German.
fr <br/> French.
es <br/> Spanish.
it <br/> Italian.
match_browser_languageboolean required

Visitors get their browser's language when it is supported, and can switch languages in the footer

logo_link_urlstring uri nullable required

Where the logo goes on the public page; null for the page's home

contact_urlstring uri nullable required

Where the "Get in touch" button on the public page goes, an https: or mailto: address; null for no button

collapsed_groupsstring[] required

Component groups that start collapsed

automation_enabledboolean required

Monitor automation: when a monitor linked to a component goes down, an incident "{component} is down" (major outage) opens with automation_down_message, and resolves with automation_recovered_message when the monitor recovers

automation_down_messagestring nullable required

Posted when a linked monitor goes down; {component} and {status_page} are filled in. null for a default message

automation_recovered_messagestring nullable required

Posted when the monitor recovers; null for a default message

issue_reports_enabledboolean required

Visitors can report problems from the page

issue_reports_show_on_pageboolean required

While reports are above the threshold, the page says that users are reporting issues

issue_reports_alerts_enabledboolean required

Reaching the threshold fires an alert

issue_reports_thresholdinteger required

Reports within issue_reports_window_minutes that count as above the threshold, 1 to 1000

issue_reports_window_minutesinteger required

The window for the threshold, in minutes, 1 to 1440

issue_reports_triggered_atstring date-time nullable required

Since when reports are above the threshold; null when they aren't

traffic_alerts_enabledboolean required

Alert when views reach traffic_alert_multiplier times the usual views for the time of day

traffic_alert_multiplierinteger required

How many times the usual views alert, 2 to 100

traffic_alert_min_viewsinteger required

Fewer views than this in 15 minutes never alert, 10 to 1000000

paused_reason'plan_limit' | 'team_paused' required

Why the system (not the user) paused a monitor, host, domain or status page.

plan_limit <br/> Over the plan limit (trial expired, downgrade); the oldest resources stay active.
team_paused <br/> The whole team's monitoring is paused (no paid plan, staff action or scheduled deletion).
created_atstring date-time required

When the page was created

Example response

{
  "name": "Acme status",
  "slug": "acme",
  "public_url": "https://acme.spectate.page",
  "custom_domain": "status.acme.com",
  "custom_domain_verification": {
    "txt_record_name": "_spectate.status.example.com",
    "txt_record_value": "spectate-verify=4f1c0c2e9b7a4d3f8e6a5b2c1d0e9f8a",
    "cname_target": "4f1c0c2e9b7a4d3f.custom.spectate.page"
  },
  "logo_link_url": "https://acme.com",
  "contact_url": "mailto:support@acme.com",
  "theme": {
    "accent": "#0f766e",
    "light": {
      "background": "#ffffff",
      "surface": "#f8fafc",
      "foreground": "#0f172a",
      "muted": "#64748b",
      "border": "#e2e8f0",
      "success": "#16a34a",
      "warning": "#ca8a04",
      "partial": "#ea580c",
      "danger": "#dc2626",
      "info": "#2563eb"
    },
    "dark": {
      "background": "#ffffff",
      "surface": "#f8fafc",
      "foreground": "#0f172a",
      "muted": "#64748b",
      "border": "#e2e8f0",
      "success": "#16a34a",
      "warning": "#ca8a04",
      "partial": "#ea580c",
      "danger": "#dc2626",
      "info": "#2563eb"
    }
  },
  "automation_down_message": "We're looking into problems with {component}.",
  "automation_recovered_message": "{component} is working again.",
  "escalation_paths": [
    {
      "name": "On-call engineers"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.