STANDARD STARTER CONTRACT / service-unavailable
Service unavailable
The server is temporarily unable to handle the request because of overload or scheduled maintenance.
HTTP 503
Canonical type URI
https://errors.ctrlbox.dev/problems/service-unavailableThis stable URI identifies the problem type, not a particular occurrence.
What to do next
- Wait before retrying a safely repeatable operation.
HTTP response contract
Set the actual HTTP status to 503 and Content-Type: application/problem+json. The JSON status below must agree with the actual response status.
Optional for 503. Indicate the expected duration of unavailability with delay seconds or an HTTP date.
Retry-After: 120RFC-defined members
- type
- The canonical URI above; clients use it as the primary problem identifier.
- title
- Service unavailable — a stable human-readable summary (localization is permitted).
- status
- 503 — advisory in the body; it does not set the HTTP status.
- detail
- A safe explanation specific to this occurrence. Clients should not parse it for machine decisions.
- instance
- An optional URI reference identifying a specific occurrence. It need not resolve; avoid sensitive identifiers.
These five members are defined by RFC 9457. This template includes type, title, status, and detail in its samples; RFC 9457 does not require all five.
Custom extension fields
This definition declares no custom extensions.
Extensions belong to this type’s contract. Consumers must ignore extensions they do not recognize.
Example response body
Illustrative occurrence data. Construct the response manually in your application or automation.
Example
{
"type": "https://errors.ctrlbox.dev/problems/service-unavailable",
"title": "Service unavailable",
"status": 503,
"detail": "The server is temporarily unable to handle the request because of overload or scheduled maintenance."
}Keep established public type URIs stable. The names here are template conventions, not an RFC catalogue. Read the response guide for manual setup and standards references.