Overview
Returns a single status page, including its attached monitors, an aggregate uptime figure and page-view counts.GET /api/projects/{projectId}/status-pages/{id}
Authentication
| Header | Required | Description |
|---|---|---|
X-API-Key | Yes | Your API key (Authorization: Bearer {jwt} also works). Read-only keys are fine. |
X-Project-ID | Yes | Must be the same project UUID as in the URL. |
Path parameters
| Parameter | Type | Description |
|---|---|---|
projectId | UUID | The project |
id | UUID | The status page |
Response
200 OK
{
"success": true,
"data": {
"status_page": {
"id": "0b7c3a52-7d57-4c35-9f0e-5a3b6f1f2a10",
"organization_id": "4f6f7b0e-1a52-4d7f-8d7e-6c5b1d2e3f40",
"project_id": "6ba7b810-9dad-41d1-80b4-00c04fd430c8",
"name": "Production Status",
"description": "Live status of production services",
"subdomain": "acme-production",
"status": "published",
"is_public": true,
"color_scheme": "light",
"logo_url": null,
"favicon_url": null,
"custom_css": null,
"component_display_order": "custom",
"show_uptime_percentage": true,
"show_response_time": true,
"timezone": "UTC",
"allow_search_indexing": true,
"uptime_timeframes": ["24h", "7d", "30d", "90d"],
"uptime_thresholds": { "operational": 99.9, "degraded": 95 },
"incident_history_days": 7,
"maintenance_affects_uptime": false,
"google_analytics_id": null,
"custom_domain": null,
"custom_domain_verified": false,
"ssl_enabled": false,
"ssl_certificate_status": null,
"auto_publish_enabled": true,
"auto_publish_severities": ["critical", "major"],
"subscriber_count": 0,
"monitor_count": 0,
"page_views_24h": 42,
"page_views_7d": 0,
"page_views_30d": 1310,
"last_published_at": 1790000000000,
"created_by": null,
"created_at": 1790000000000,
"updated_at": 1790000000000,
"uptime_percentage": 99.9,
"monitors": [
{
"id": "a3f1c2d4-5b6e-4f70-8a91-b2c3d4e5f607",
"status_page_id": "0b7c3a52-7d57-4c35-9f0e-5a3b6f1f2a10",
"monitor_id": "a3f1c2d4-5b6e-4f70-8a91-b2c3d4e5f607",
"display_name": "API",
"group_name": "Core",
"display_order": 0,
"is_visible": true,
"show_uptime": true,
"show_response_time": true,
"created_at": 1790000000000,
"monitor_name": "API health check",
"monitor_url": "https://api.example.com/health",
"monitor_status": "up",
"current_uptime": 99.95,
"average_response_time": 145
}
],
"branding": { "defaultTheme": "light", "primaryColor": "#3B82F6" }
}
}
}
page_views_7d, subscriber_count and monitor_count are populated by List Status Pages and read 0 here.
The status page object
| Field | Type | Description |
|---|---|---|
id | UUID | Status page ID |
organization_id, project_id | UUID | Owners |
name, description | string | null | Display name and description |
subdomain | string | Public subdomain. Immutable. |
status | string | Publication state: draft, published or archived |
is_public | boolean | true only when status is published |
color_scheme | string | light, dark or system (from branding.defaultTheme) |
logo_url, favicon_url, custom_css | string | null | From branding |
component_display_order | string | Always "custom" (order set by monitor display_order) |
show_uptime_percentage, show_response_time | boolean | Whether graphs are shown (default true) |
timezone | string | Display timezone |
allow_search_indexing | boolean | Whether search engines may index the public page. Defaults to true, including when no value has been stored. |
uptime_timeframes | string[] | Uptime windows shown: any of 24h, 7d, 30d, 90d |
uptime_thresholds | object | operational and degraded percentages (default 99.9 and 95) |
incident_history_days | integer | Days of incident history shown (1-365, default 7) |
maintenance_affects_uptime | boolean | Whether maintenance windows count against uptime |
google_analytics_id | string | null | Google Analytics 4 measurement ID, if set |
custom_domain | string | null | Custom domain, if configured |
custom_domain_verified | boolean | Whether the domain’s DNS has been verified |
ssl_enabled | boolean | true once the custom domain is verified |
ssl_certificate_status | string | null | "active" once verified, otherwise null |
auto_publish_enabled | boolean | Whether matching monitor incidents are posted automatically (default true) |
auto_publish_severities | string[] | Severities that auto-publish (default ["critical","major"]) |
subscriber_count | integer | Verified email subscribers |
monitor_count | integer | Monitors on the page |
page_views_24h, page_views_7d, page_views_30d | integer | Page views |
last_published_at | integer | null | Unix ms of first publication |
created_by | null | Always null |
created_at, updated_at | integer | Unix ms |
uptime_percentage | number | Average 24-hour uptime of the attached monitors, one decimal. Omitted when there are no monitors. |
monitors | array | Attached monitors. Omitted when there are none. |
branding | object | Branding document in camelCase; see Branding |
The monitor object
| Field | Type | Description |
|---|---|---|
id, monitor_id | UUID | The monitor’s ID |
status_page_id | UUID | The status page |
display_name | string | null | Name shown on the page instead of the monitor name |
group_name | string | null | Group heading the monitor is shown under on the page |
display_order | integer | Sort position |
is_visible | boolean | false when the monitor is hidden from the public page |
show_uptime, show_response_time | boolean | Always true |
monitor_name | string | The monitor’s own name |
monitor_url | string | The monitor’s target |
monitor_status | string | up, down, degraded, paused or maintenance |
current_uptime | number | 24-hour uptime percentage |
average_response_time | number | Average response time in milliseconds |
created_at | integer | Unix ms |
Errors
| Status | Code | Cause |
|---|---|---|
| 400 | PROJECT_ID_REQUIRED / INVALID_PROJECT_ID | X-Project-ID header missing or not a UUID |
| 401 | AUTHENTICATION_REQUIRED | Missing or invalid credentials |
| 403 | ACCESS_DENIED | No access to the project, or the page belongs to another project |
| 403 | API_KEY_ORGANIZATION_MISMATCH | The API key belongs to a different organization than the project |
| 404 | RESOURCE_NOT_FOUND | The status page does not exist or was deleted (message Status page not found) |
Example
curl https://api.uptimeio.com/api/projects/YOUR_PROJECT_ID/status-pages/YOUR_STATUS_PAGE_ID \
-H "X-API-Key: YOUR_API_KEY" \
-H "X-Project-ID: YOUR_PROJECT_ID"
const projectId = 'YOUR_PROJECT_ID';
const statusPageId = 'YOUR_STATUS_PAGE_ID';
const response = await fetch(
`https://api.uptimeio.com/api/projects/${projectId}/status-pages/${statusPageId}`,
{
headers: {
'X-API-Key': process.env.UPTIMEIO_API_KEY,
'X-Project-ID': projectId,
},
}
);
const { data } = await response.json();
console.log(data.status_page.status, data.status_page.uptime_percentage);