Uptimeify Docs
Status pages

Create Status Page Component

Adds a monitor, a third-party provider or a manually maintained component to a status page.

POST /api/status-pages/{id}/components

Access

Organization admin and editor. A customer-scoped user or API token only reaches pages of a customer in its scope; a page without a customer (customerId: null) answers it with 403 (forbidden). A page of another organization answers 404 (statusPageNotFound). Path ids take the numeric id or the publicId. The change is written to the organization's audit log.

Request Body

FieldTypeRequiredDefaultDescription
sourceKindstringYes-monitor (state comes from a monitor), dependency (state comes from a third-party provider we monitor) or manual (you set the state).
monitorTypestringWith monitor-http, dns, icmp, smtp, ssh, tcp, ftp or imap_pop. Not allowed with manual.
monitorIdnumberWith monitor-Numeric monitor id. Page with a customer: a monitor of that customer. Page without a customer: any monitor of your organization. Not allowed with manual.
dependencySlugstringWith dependency-Slug of an active provider from GET /api/public/dependencies. Not allowed with the other kinds.
manualStatusstringNooperationalmanual only: operational, degraded, partial_outage, major_outage or maintenance.
namestringWith manualmonitor or provider nameDisplay name (1-120 chars).
descriptionstring|nullNonullMax 1000 chars.
groupIdnumber|string|nullNonullId or publicId of a group of this page.
sortnumberNoafter the last componentPosition, 0-100000.
showUptimebooleanNotrueShow the availability bar of this component.

A monitor can be a component of the same page only once. hiddenMonitors never hides an explicit component. When a monitor is deleted, its components disappear from every status page automatically.

A dependency component shows the overall status we publish for that provider on our public dependency monitoring: operational, degraded, partial_outage, major_outage, maintenance, or unknown while we cannot see the provider (shown as a warning, but not counted in the page's overall state). An open incident linked to the component raises its state. A provider can be a component of the same page only once; there is no availability bar. When the provider's status changes, subscribers of the page (or of this component) are notified like for a monitor incident. No monitor and no customer are needed.

Example (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

curl -X POST "$BASE_URL/api/status-pages/1/components" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceKind": "monitor",
    "monitorType": "http",
    "monitorId": 101,
    "groupId": 3
  }'

A manual component:

curl -X POST "$BASE_URL/api/status-pages/1/components" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceKind": "manual",
    "name": "Payment provider",
    "description": "Card payments at checkout"
  }'

A third-party provider:

curl -X POST "$BASE_URL/api/status-pages/1/components" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceKind": "dependency",
    "dependencySlug": "stripe"
  }'

Response

201 Created with the new component:

{
  "id": 7,
  "publicId": "0b6f3c1e-8d2a-4f5b-9c7e-1a2b3c4d5e6f",
  "statusPageId": 1,
  "groupId": 3,
  "sort": 0,
  "name": "Main Site",
  "description": null,
  "showUptime": true,
  "sourceKind": "monitor",
  "monitorType": "http",
  "monitorId": 101,
  "manualStatus": null,
  "dependencySlug": null,
  "createdAt": "2026-10-27T09:00:00.000Z",
  "updatedAt": "2026-10-27T09:00:00.000Z"
}

Common errors

  • 400 Bad Request (invalidRequestBody) when a required field is missing or a field does not fit sourceKind (for example manualStatus on a monitor component); data.issues names the field
  • 400 Bad Request (statusPageComponentMonitorCustomerMismatch) when the monitor belongs to another customer than the status page
  • 400 Bad Request (invalidIdentifier) when an id in the path is neither a number nor a UUID
  • 401 Unauthorized when you are not logged in
  • 403 Forbidden (forbidden) when your role may not do this, or for a customer-scoped caller on a page without a customer or of another customer
  • 403 Forbidden (statusPagesModuleDisabled) when the status pages module is not activated
  • 404 Not Found (statusPageNotFound) when the status page does not exist or belongs to another organization
  • 404 Not Found (monitorNotFound) when the monitor does not exist or belongs to another organization
  • 404 Not Found (providerNotFound) when dependencySlug is not an active provider
  • 404 Not Found (statusPageComponentGroupNotFound) when groupId is not a group of this page
  • 409 Conflict (statusPageComponentMonitorConflict) when the monitor already is a component of this page
  • 409 Conflict (statusPageComponentDependencyConflict) when the provider already is a component of this page
  • 409 Conflict (statusPageLimitReached, with data.max) when the page already has 100 components

On this page