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 ​