Skip to main content
POST
/
status-pages
/
{id}
/
design
/
draft
/
validate
# Validate current draft
curl -X POST "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft/validate" \
  -H "X-API-Key: your_api_key"

# Validate candidate payload
curl -X POST "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft/validate" \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "template_mode": "custom", "template": "<main>{{services}}</main>" }'
{
  "valid": true,
  "errors": [],
  "warnings": []
}

Path Parameters

id
string
required
Status page ID.

Body Parameters

Body is optional:
  • No body: validates current draft/base state.
  • With body: validates merged candidate payload.
Body fields match PUT /status-pages/{id}/design/draft.
Send no body to validate the current draft. Sending {} is invalid because at least one field is required when a body is present.

Response

valid
boolean
true when no blocking errors were found.
errors
array
Blocking issues with code, path, message, severity.
warnings
array
Non-blocking issues with code, path, message, severity.
# Validate current draft
curl -X POST "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft/validate" \
  -H "X-API-Key: your_api_key"

# Validate candidate payload
curl -X POST "https://kodostatus.com/api/v1/status-pages/<page-id>/design/draft/validate" \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "template_mode": "custom", "template": "<main>{{services}}</main>" }'
{
  "valid": true,
  "errors": [],
  "warnings": []
}

Common Errors

StatusCodeMeaning
400INVALID_SCHEMAInvalid JSON or schema. Response includes details from Zod validation.
404-Status page not found
Plan-restricted features (e.g. template_mode: custom on Starter) return PLAN_RESTRICTED errors inside the errors array in a 200 response, not as a 403 status code.