Path Parameters
Body Parameters
All fields are optional. Only include the fields you want to change.
General
URL slug (must be unique)
Subtitle shown below the page name
Language code (e.g. en, ja, de) or auto for browser detection
Branding
Brand color hex code (e.g. #22c55e)
Theme preset: default, minimal, corporate, neon, ocean, sunset
Custom CSS to inject into the page
Custom HTML for the page header
Custom HTML for the page footer
Hide the “Powered by kodo” footer (Pro+)
Advanced Design
Font family id used by the status page theme.
Secondary brand color in #RRGGBB format.
Toggle subscriber form section visibility.
Toggle incident timeline section visibility.
Toggle uptime chart section visibility.
Header layout style: centered or left-aligned.
Border radius preset id from supported theme radius options.
Full custom HTML template (Pro+), max 64KB. Set null to clear.
For versioned draft/validate/publish workflows, use the dedicated Design API: GET/PUT/POST /status-pages/{id}/design....
When updating design-managed fields (primary_color, secondary_color, font_family, logo_url, favicon_url, show_subscribe_form, show_incident_history, show_uptime_graph, custom_template) while a published design version exists, the response includes a warning field suggesting to use the Design API instead. Direct updates still apply immediately but may be overwritten on the next design publish.
Custom Domain
Custom domain for the status page (e.g. status.yourcompany.com). Must be globally unique across all status pages. Set null to remove. Requires Pro plan or higher.
Visibility
public, private (Pro+), or internal (Team+)
status_page_password_hint
Optional hint shown on the password entry page (private mode)
Announcements
info, warning, or success
Show or hide the announcement banner
Response
Returns the updated status page object.
Common Errors
| Status | Message | Description |
|---|
| 400 | Slug must contain only lowercase letters, numbers, and hyphens | Slug format validation failed |
| 400 | Template contains unsafe HTML content | XSS check failed on custom_template |
| 400 | Custom header HTML contains unsafe content | XSS check failed on custom_header_html |
| 400 | Custom footer HTML contains unsafe content | XSS check failed on custom_footer_html |
| 400 | Invalid primary color format (use #RRGGBB) | Color must be a valid hex code |
| 400 | Custom CSS exceeds maximum size of 64KB | CSS payload too large |
| 400 | No valid fields to update | Request body contained no recognized fields |
| 403 | Custom domains require a Pro plan or higher | Plan upgrade needed for custom_domain |
| 403 | Custom HTML templates require a Pro plan or higher | Plan upgrade needed for custom_template |
| 403 | Private status pages require a Pro plan or higher | Plan upgrade needed for private visibility |
| 403 | Internal status pages require a Team plan or higher | Plan upgrade needed for internal visibility |
| 404 | Status page not found | The ID does not match a page in your organization |
| 409 | This slug is already taken | Another status page already uses this slug |
| 409 | This domain is already in use by another status page | Another status page already uses this custom domain |
curl -X PATCH "https://kodostatus.com/api/v1/status-pages/sp_abc123" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"primary_color": "#3b82f6",
"announcement_text": "Scheduled maintenance tonight at 10pm UTC",
"announcement_type": "warning",
"announcement_enabled": true
}'
{
"page": {
"id": "uuid",
"name": "Public Status",
"slug": "acme",
"primary_color": "#3b82f6",
"announcement_text": "Scheduled maintenance tonight at 10pm UTC",
"announcement_type": "warning",
"announcement_enabled": true,
"updated_at": "2024-06-15T14:00:00Z"
}
}