curl -X PUT "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"theme_tokens": {
"brand": { "primary": "#0ea5e9", "secondary": "#22c55e" },
"font": { "family": "inter" }
},
"layout": {
"sections": [
{ "type": "header", "enabled": true },
{ "type": "overall_status", "enabled": true },
{ "type": "services_list", "enabled": true },
{ "type": "incident_timeline", "enabled": true },
{ "type": "footer", "enabled": true }
]
},
"summary": "Spring release branding refresh"
}'
{
"draft_version": {},
"warnings": [
{}
]
}Status Page Design
Upsert Design Draft
Create a new draft or update the existing draft design version
PUT
/
status-pages
/
{id}
/
design
/
draft
curl -X PUT "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"theme_tokens": {
"brand": { "primary": "#0ea5e9", "secondary": "#22c55e" },
"font": { "family": "inter" }
},
"layout": {
"sections": [
{ "type": "header", "enabled": true },
{ "type": "overall_status", "enabled": true },
{ "type": "services_list", "enabled": true },
{ "type": "incident_timeline", "enabled": true },
{ "type": "footer", "enabled": true }
]
},
"summary": "Spring release branding refresh"
}'
{
"draft_version": {},
"warnings": [
{}
]
}Path Parameters
string
required
Status page ID.
Body Parameters
At least one top-level field is required.Both
theme_tokens and layout use strict validation. Any unknown fields will be rejected with a 400 INVALID_SCHEMA error.object
Theme token payload. Supports the following sub-fields:
brand.primary— Primary brand color in#RRGGBBformatbrand.secondary— Secondary brand color in#RRGGBBformatfont.family— Font family identifierlogo_url— Logo image URL (string)favicon_url— Favicon image URL (string)
object
Layout payload. Supports a
sections array (max 20 entries) with type, optional enabled, optional props. Valid section types: header, overall_status, services_list, incident_timeline, uptime_chart, subscribe_panel, footer.string | null
Custom HTML template body, max
65536 chars (64KB).string
default or custom.string
Optional summary, min
1 char, max 500 chars. Empty strings are rejected.Response
object
Saved draft version object.
array
Non-blocking validation warnings.
curl -X PUT "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"theme_tokens": {
"brand": { "primary": "#0ea5e9", "secondary": "#22c55e" },
"font": { "family": "inter" }
},
"layout": {
"sections": [
{ "type": "header", "enabled": true },
{ "type": "overall_status", "enabled": true },
{ "type": "services_list", "enabled": true },
{ "type": "incident_timeline", "enabled": true },
{ "type": "footer", "enabled": true }
]
},
"summary": "Spring release branding refresh"
}'
Common Errors
| Status | Code | Meaning |
|---|---|---|
400 | INVALID_SCHEMA | Schema or validation failure |
403 | PLAN_RESTRICTED | template_mode=custom is not allowed on current plan. Response includes upgrade_required: true. |
404 | - | Status page not found |
500 | - | Draft creation/update failed |