Skip to content

Status Pages API Reference

This guide provides detailed information about the Status Pages API endpoints.

Authentication

All status page endpoints require authentication using a Project API Token. Include your token in the Authorization header:

bash
Authorization: Bearer YOUR_PROJECT_API_TOKEN

For more information about authentication, see the Authentication Guide.

List Status Pages

Retrieve a list of all status pages for your project.

http
GET /api/v1/status_pages
Authorization: Bearer YOUR_PROJECT_API_TOKEN

Example with curl:

bash
curl -X GET https://app.uptinio.com/api/v1/status_pages \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json"

Response

json
[
  {
    "uuid": "SP123",
    "name": "Main Status Page",
    "custom_url": "status.example.com",
    "ssl_installed": true,
    "logo_url": "https://app.uptinio.com/rails/active_storage/blobs/.../logo.png",
    "favicon_url": "https://app.uptinio.com/rails/active_storage/blobs/.../favicon.ico",
    "network_monitors": [
      {
        "id": 1,
        "uuid": "NM123",
        "name": "API Server",
        "url": "https://api.example.com",
        "check_type": "http",
        "status": "up",
        "paused": false
      }
    ],
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
]

Note: logo_url and favicon_url will be null if no files are attached.

Get Status Page

Retrieve details of a specific status page.

http
GET /api/v1/status_pages/:uuid
Authorization: Bearer YOUR_PROJECT_API_TOKEN

Example with curl:

bash
curl -X GET https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json"

Response

json
{
  "uuid": "SP123",
  "name": "Main Status Page",
  "custom_url": "status.example.com",
  "ssl_installed": true,
  "logo_url": "https://app.uptinio.com/rails/active_storage/blobs/.../logo.png",
  "favicon_url": "https://app.uptinio.com/rails/active_storage/blobs/.../favicon.ico",
  "network_monitors": [
    {
      "id": 1,
      "uuid": "NM123",
      "name": "API Server",
      "url": "https://api.example.com",
      "check_type": "http",
      "status": "up",
      "paused": false
    }
  ],
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z"
}

Note: logo_url and favicon_url will be null if no files are attached.

Create Status Page

Create a new status page for your project.

http
POST /api/v1/status_pages
Authorization: Bearer YOUR_PROJECT_API_TOKEN
Content-Type: application/json

Example with curl (JSON):

bash
curl -X POST https://app.uptinio.com/api/v1/status_pages \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page": {
      "name": "Main Status Page",
      "custom_url": "status.example.com",
      "network_monitor_uuids": ["NM123", "NM456"]
    }
  }'

Example with curl (with logo and favicon upload):

bash
curl -X POST https://app.uptinio.com/api/v1/status_pages \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[name]=Main Status Page" \
  -F "status_page[custom_url]=status.example.com" \
  -F "status_page[network_monitor_uuids][]=NM123" \
  -F "status_page[network_monitor_uuids][]=NM456" \
  -F "status_page[logo]=@/path/to/logo.png" \
  -F "status_page[favicon]=@/path/to/favicon.ico"

Request Body

ParameterTypeDescriptionRequired
status_pageobjectStatus page objectYes
status_page.namestringStatus page nameYes
status_page.custom_urlstringCustom domain/subdomain (e.g., "status.example.com")No
status_page.ssl_installedbooleanWhether SSL is installedNo
status_page.network_monitor_uuidsarrayArray of network monitor UUIDs to assignNo
status_page.logofileLogo image file (PNG, JPG, SVG, etc.)No
status_page.faviconfileFavicon image file (ICO, PNG, etc.)No

Note: When uploading logo or favicon files, use multipart/form-data content type (curl uses -F flag automatically).

Response

Status: 201 Created

json
{
  "uuid": "SP123",
  "name": "Main Status Page",
  "custom_url": "status.example.com",
  "ssl_installed": false,
  "logo_url": "https://app.uptinio.com/rails/active_storage/blobs/.../logo.png",
  "favicon_url": "https://app.uptinio.com/rails/active_storage/blobs/.../favicon.ico",
  "network_monitors": [
    {
      "id": 1,
      "uuid": "NM123",
      "name": "API Server",
      "url": "https://api.example.com",
      "check_type": "http",
      "status": "up",
      "paused": false
    },
    {
      "id": 2,
      "uuid": "NM456",
      "name": "Web Server",
      "url": "https://www.example.com",
      "check_type": "http",
      "status": "up",
      "paused": false
    }
  ],
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z"
}

Note: logo_url and favicon_url will be null if no files were uploaded.

Update Status Page

Update an existing status page. You can update the name, custom URL, assigned monitors, logo, and favicon.

http
PUT /api/v1/status_pages/:uuid
PATCH /api/v1/status_pages/:uuid
Authorization: Bearer YOUR_PROJECT_API_TOKEN
Content-Type: application/json

Example with curl (JSON):

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page": {
      "name": "Updated Status Page Name",
      "network_monitor_uuids": ["NM123"]
    }
  }'

Example with curl (updating logo and favicon):

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[logo]=@/path/to/new-logo.png" \
  -F "status_page[favicon]=@/path/to/new-favicon.ico"

Example with curl (updating only logo):

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[logo]=@/path/to/new-logo.png"

Request Body

ParameterTypeDescriptionRequired
status_pageobjectStatus page objectYes
status_page.namestringStatus page nameNo
status_page.custom_urlstringCustom domain/subdomainNo
status_page.ssl_installedbooleanWhether SSL is installedNo
status_page.network_monitor_uuidsarrayArray of network monitor UUIDs to assign (replaces existing assignments)No
status_page.logofileLogo image file (PNG, JPG, SVG, etc.)No
status_page.faviconfileFavicon image file (ICO, PNG, etc.)No

Note:

  • When updating network_monitor_uuids, the provided array will replace all existing monitor assignments. To keep existing monitors, include them in the array along with any new ones.
  • When uploading logo or favicon files, use multipart/form-data content type (curl uses -F flag automatically).
  • You can update logo and favicon independently - only include the fields you want to update.

Response

json
{
  "uuid": "SP123",
  "name": "Updated Status Page Name",
  "custom_url": "status.example.com",
  "ssl_installed": false,
  "logo_url": "https://app.uptinio.com/rails/active_storage/blobs/.../new-logo.png",
  "favicon_url": "https://app.uptinio.com/rails/active_storage/blobs/.../new-favicon.ico",
  "network_monitors": [
    {
      "id": 1,
      "uuid": "NM123",
      "name": "API Server",
      "url": "https://api.example.com",
      "check_type": "http",
      "status": "up",
      "paused": false
    }
  ],
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T12:00:00Z"
}

Assigning Monitors to Status Pages

When creating or updating a status page, you can assign network monitors by including their UUIDs in the network_monitor_uuids array.

Example: Create Status Page with Monitors

bash
curl -X POST https://app.uptinio.com/api/v1/status_pages \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page": {
      "name": "Production Status",
      "network_monitor_uuids": ["NM123", "NM456", "NM789"]
    }
  }'

Example: Update Monitor Assignments

To replace all monitor assignments:

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page": {
      "network_monitor_uuids": ["NM123"]
    }
  }'

To remove all monitors, send an empty array:

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page": {
      "network_monitor_uuids": []
    }
  }'

Managing Logo and Favicon

Status pages support custom logo and favicon images. These can be uploaded when creating a status page or updated later.

Supported File Formats

  • Logo: PNG, JPG, JPEG, SVG, GIF, WebP
  • Favicon: ICO, PNG, SVG

Upload Logo and Favicon When Creating

bash
curl -X POST https://app.uptinio.com/api/v1/status_pages \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[name]=My Status Page" \
  -F "status_page[logo]=@/path/to/logo.png" \
  -F "status_page[favicon]=@/path/to/favicon.ico"

To update only the logo:

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[logo]=@/path/to/new-logo.png"

Update Favicon

To update only the favicon:

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[favicon]=@/path/to/new-favicon.ico"

Update Both Logo and Favicon

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -F "status_page[logo]=@/path/to/new-logo.png" \
  -F "status_page[favicon]=@/path/to/new-favicon.ico"

Using JavaScript/FormData

When using JavaScript, use FormData to upload files:

javascript
const formData = new FormData();
formData.append('status_page[logo]', logoFile);
formData.append('status_page[favicon]', faviconFile);

fetch('https://app.uptinio.com/api/v1/status_pages/SP123', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_PROJECT_API_TOKEN'
  },
  body: formData
});

Response

After uploading, the API response will include logo_url and favicon_url fields:

json
{
  "uuid": "SP123",
  "name": "My Status Page",
  "logo_url": "https://app.uptinio.com/rails/active_storage/blobs/.../logo.png",
  "favicon_url": "https://app.uptinio.com/rails/active_storage/blobs/.../favicon.ico",
  ...
}

If no logo or favicon is attached, these fields will be null.

Note:

  • Files are uploaded using multipart/form-data content type
  • The old logo/favicon will be automatically replaced when uploading a new one
  • There's no separate endpoint to delete logo/favicon - simply upload a new file to replace it, or leave the field out when updating other attributes

Status Page Incidents

Status page incidents allow you to communicate service issues and updates to your users.

List Incidents

Retrieve all incidents for a status page.

http
GET /api/v1/status_pages/:status_page_uuid/incidents
Authorization: Bearer YOUR_PROJECT_API_TOKEN

Example with curl:

bash
curl -X GET https://app.uptinio.com/api/v1/status_pages/SP123/incidents \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json"

Response

json
{
  "data": [
    {
      "uuid": "SPI123",
      "title": "Service Degradation",
      "resolved_at": null,
      "created_at": "2024-01-01T10:00:00Z",
      "updated_at": "2024-01-01T10:00:00Z",
      "status_page_incident_messages": [
        {
          "id": 1,
          "content": "We are investigating an issue affecting our services.",
          "msg_type": "investigating",
          "created_at": "2024-01-01T10:00:00Z",
          "updated_at": "2024-01-01T10:00:00Z"
        }
      ]
    }
  ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total_pages": 1,
    "total_count": 1
  }
}

Get Incident

Retrieve details of a specific incident.

http
GET /api/v1/status_pages/:status_page_uuid/incidents/:uuid
Authorization: Bearer YOUR_PROJECT_API_TOKEN

Example with curl:

bash
curl -X GET https://app.uptinio.com/api/v1/status_pages/SP123/incidents/SPI123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json"

Create Incident

Create a new status page incident.

http
POST /api/v1/status_pages/:status_page_uuid/incidents
Authorization: Bearer YOUR_PROJECT_API_TOKEN
Content-Type: application/json

Example with curl:

bash
curl -X POST https://app.uptinio.com/api/v1/status_pages/SP123/incidents \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page_incident": {
      "title": "Service Degradation",
      "content": "We are experiencing issues with our API service.",
      "msg_type": "investigating"
    }
  }'

Request Body

ParameterTypeDescriptionRequired
status_page_incidentobjectIncident objectYes
status_page_incident.titlestringIncident titleYes
status_page_incident.contentstringInitial incident message contentYes
status_page_incident.msg_typestringMessage type: investigating, identified, updating, monitoring, or resolvedYes

Response

Status: 201 Created

json
{
  "uuid": "SPI123",
  "title": "Service Degradation",
  "resolved_at": null,
  "created_at": "2024-01-01T10:00:00Z",
  "updated_at": "2024-01-01T10:00:00Z",
  "status_page_incident_messages": [
    {
      "id": 1,
      "content": "We are experiencing issues with our API service.",
      "msg_type": "investigating",
      "created_at": "2024-01-01T10:00:00Z",
      "updated_at": "2024-01-01T10:00:00Z"
    }
  ]
}

Update Incident (Add Message)

Add a new message to an existing incident. This is how you update the incident status.

http
PUT /api/v1/status_pages/:status_page_uuid/incidents/:uuid
PATCH /api/v1/status_pages/:status_page_uuid/incidents/:uuid
Authorization: Bearer YOUR_PROJECT_API_TOKEN
Content-Type: application/json

Example with curl:

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123/incidents/SPI123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page_incident": {
      "content": "We have identified the issue and are working on a fix.",
      "msg_type": "identified"
    }
  }'

Request Body

ParameterTypeDescriptionRequired
status_page_incidentobjectIncident message objectYes
status_page_incident.contentstringMessage contentYes
status_page_incident.msg_typestringMessage type: investigating, identified, updating, monitoring, or resolvedYes

Note: When msg_type is set to resolved, the incident's resolved_at timestamp will be automatically set.

Response

json
{
  "uuid": "SPI123",
  "title": "Service Degradation",
  "resolved_at": null,
  "created_at": "2024-01-01T10:00:00Z",
  "updated_at": "2024-01-01T10:30:00Z",
  "status_page_incident_messages": [
    {
      "id": 1,
      "content": "We are experiencing issues with our API service.",
      "msg_type": "investigating",
      "created_at": "2024-01-01T10:00:00Z",
      "updated_at": "2024-01-01T10:00:00Z"
    },
    {
      "id": 2,
      "content": "We have identified the issue and are working on a fix.",
      "msg_type": "identified",
      "created_at": "2024-01-01T10:30:00Z",
      "updated_at": "2024-01-01T10:30:00Z"
    }
  ]
}

Resolve Incident

To resolve an incident, update it with msg_type: "resolved":

bash
curl -X PUT https://app.uptinio.com/api/v1/status_pages/SP123/incidents/SPI123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status_page_incident": {
      "content": "The issue has been resolved and all services are operational.",
      "msg_type": "resolved"
    }
  }'

Delete Incident

Delete a status page incident.

http
DELETE /api/v1/status_pages/:status_page_uuid/incidents/:uuid
Authorization: Bearer YOUR_PROJECT_API_TOKEN

Example with curl:

bash
curl -X DELETE https://app.uptinio.com/api/v1/status_pages/SP123/incidents/SPI123 \
  -H "Authorization: Bearer YOUR_PROJECT_API_TOKEN"

Response

Status: 204 No Content

Message Types

Status page incidents support the following message types:

TypeDescription
investigatingWe are investigating the issue
identifiedWe have identified the cause
updatingWe are applying a fix
monitoringWe are monitoring the situation
resolvedThe issue has been resolved

Error Codes

CodeDescription
status_page_not_foundThe specified status page does not exist
status_page_incident_not_foundThe specified incident does not exist
unauthorizedInvalid or missing authentication token
unprocessable_entityValidation errors (e.g., missing required fields)

Next Steps