Error response format
| Field | Type | Description |
|---|---|---|
status | integer | HTTP status code (mirrors the response status line) |
code | string | Coarse machine-readable error category (e.g. NOT_FOUND, RATE_LIMITED); stable per status |
message | string | Human-readable error description; safe to surface to end users |
timestamp | long | Server time when the error was produced (epoch milliseconds) |
requestId | string | null | Opaque per-request identifier; same value as the X-Request-Id response header. Include in support tickets. |
errors | array | null | Structured per-field rejections; populated for validation errors (400), null otherwise |
errors contains:
| Field | Type | Description |
|---|---|---|
code | string | Stable machine-readable validation code (e.g. MONITOR_HEARTBEAT_GRACE_EXCEEDS_INTERVAL) |
field | string | null | JSON-pointer-like path to the offending field, or null for request-wide errors |
message | string | Human-readable description of the rejection |
HTTP status codes
| Status | Meaning | Common causes |
|---|---|---|
400 | Bad Request | Validation errors, malformed JSON, invalid parameters |
401 | Unauthorized | Missing, invalid, or revoked API key |
403 | Forbidden | Valid key but insufficient permissions for the organization |
404 | Not Found | Resource doesn’t exist or isn’t accessible in the current organization |
409 | Conflict | The request collides with current resource state (e.g. deploy lock, unique constraint) |
429 | Too Many Requests | Rate limit exceeded (see Rate Limits) |
500 | Internal Server Error | Unexpected server error |
502 | Bad Gateway | An upstream provider returned an error |
503 | Service Unavailable | Temporary service disruption |
Validation errors
When a request fails validation, theerrors array contains one entry per rejected field. Each entry carries a stable code you can programmatically match on:
Common error scenarios
Authentication errors
API
Resource not found
API
Entitlement limits
API