Appearance
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_TOKENFor 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_TOKENExample 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_TOKENExample 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/jsonExample 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| status_page | object | Status page object | Yes |
| status_page.name | string | Status page name | Yes |
| status_page.custom_url | string | Custom domain/subdomain (e.g., "status.example.com") | No |
| status_page.ssl_installed | boolean | Whether SSL is installed | No |
| status_page.network_monitor_uuids | array | Array of network monitor UUIDs to assign | No |
| status_page.logo | file | Logo image file (PNG, JPG, SVG, etc.) | No |
| status_page.favicon | file | Favicon 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/jsonExample 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| status_page | object | Status page object | Yes |
| status_page.name | string | Status page name | No |
| status_page.custom_url | string | Custom domain/subdomain | No |
| status_page.ssl_installed | boolean | Whether SSL is installed | No |
| status_page.network_monitor_uuids | array | Array of network monitor UUIDs to assign (replaces existing assignments) | No |
| status_page.logo | file | Logo image file (PNG, JPG, SVG, etc.) | No |
| status_page.favicon | file | Favicon 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-datacontent type (curl uses-Fflag 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"Update Logo
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-datacontent 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_TOKENExample 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_TOKENExample 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/jsonExample 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| status_page_incident | object | Incident object | Yes |
| status_page_incident.title | string | Incident title | Yes |
| status_page_incident.content | string | Initial incident message content | Yes |
| status_page_incident.msg_type | string | Message type: investigating, identified, updating, monitoring, or resolved | Yes |
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/jsonExample 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| status_page_incident | object | Incident message object | Yes |
| status_page_incident.content | string | Message content | Yes |
| status_page_incident.msg_type | string | Message type: investigating, identified, updating, monitoring, or resolved | Yes |
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_TOKENExample 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:
| Type | Description |
|---|---|
investigating | We are investigating the issue |
identified | We have identified the cause |
updating | We are applying a fix |
monitoring | We are monitoring the situation |
resolved | The issue has been resolved |
Error Codes
| Code | Description |
|---|---|
| status_page_not_found | The specified status page does not exist |
| status_page_incident_not_found | The specified incident does not exist |
| unauthorized | Invalid or missing authentication token |
| unprocessable_entity | Validation errors (e.g., missing required fields) |