StatusDashboard
Dashboards

Create dashboard

Create a new status dashboard dashboard.

View Markdown

POST /app/dashboards

Creates a new dashboard.

If the organization has a dashboard quota configured (enabledFeatures.dashboards), this endpoint returns 403 when the quota is reached or when the dashboards feature is not enabled on the plan. Adding a custom domain also requires the customDomain feature to be enabled.

After creation, configure components, groups, and content settings using the Update dashboard endpoint. Feature-gated fields (branding, customCode, widget, whitelabelEnabled) are not accepted on create and must be set via the update endpoint.


Request

See API Basics for required headers.

Request body

FieldTypeRequiredDescription
namestringYesDisplay name for the dashboard. Maximum 50 characters. Must be unique within the organization (case-insensitive).
subdomainstringYesGlobally unique subdomain slug. Lowercase letters, numbers, and hyphens only. Maximum 63 characters. Cannot be changed after creation.
compactbooleanNoWhether to use compact display mode. Defaults to false.
descriptionstringNoShort description shown on the dashboard. Maximum 500 characters.
systemMessagestringNoOptional message displayed at the top of the status dashboard, below the logo and above the status banner. Rich text field. See Rich text fields. Max 1,000 characters.
customDomainstringNoCustom domain for the status dashboard (e.g. status.acme.com). Requires customDomain feature.
componentsobjectNoMap of componentId{ displayOrder: number, groupId?: string }. Defaults to {} (no components).
groupsobjectNoComponent grouping configuration. See below.
contentobjectNoContent sections to display. See below.

groups object

FieldTypeDescription
enabledbooleanWhether component grouping is enabled.
expandByDefaultbooleanWhether all named groups start expanded on initial load. When false, all named groups start collapsed. Dashboard-wide setting, not per group.
itemsarrayArray of group definitions: { id: uuid, name: string (max 50 chars), description?: string (max 150 chars), order: number }.

content object

All fields are optional booleans unless noted.

FieldTypeDescription
activeIncidentsbooleanShow currently active incidents.
activeMaintenancebooleanShow ongoing maintenance events.
eventHistorybooleanShow past events.
scheduledMaintenancebooleanShow scheduled maintenance windows.
uptimeHistoryobject{ enabled: boolean, days: 1–7 } — show uptime history bars.

Sample request

curl -X POST https://api.statusdashboard.com/app/dashboards \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Status",
    "subdomain": "acme",
    "compact": false,
    "components": {}
  }'

Sample response

Status: 201 Created

{
  "dashboard": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Production Status",
    "subdomain": "acme",
    "compact": false,
    "components": {},
    "createdAt": "2026-04-24T15:00:00.000Z",
    "updatedAt": "2026-04-24T15:00:00.000Z"
  }
}

The dashboard is immediately accessible at https://acme.statusdashboard.io.


Error responses

StatusWhen
400Validation failure — required field missing, subdomain format invalid, or request body malformed.
403Insufficient permissions, the dashboards feature is not enabled, the dashboard quota is reached, or the custom domain feature is not enabled.
409The requested subdomain or custom domain is already in use, or a dashboard with this name already exists in the organization.

On this page

We use cookies

We use essential cookies to keep the site working, and optional analytics cookies to understand how it's used. Read our Privacy Policy.