Errors

The error envelope and the stable error codes.

Every failing response uses one envelope. requestId echoes the X-Request-Id response header; include it in support requests.

{…}1 key
"error": {…}4 keys
"code": "SCOPE",
"message": "This key is missing a required scope.",
"details": {…},2 keys
"requiredScopes": […],1 item
"write:projects"
],
"missingScopes": […]1 item
"write:projects"
]
},
"requestId": "req_..."
}
}

Match on code, never on message. details is bounded, machine-readable context.

CodeStatusMeaning
MIXED_AUTH400A key was sent with a cookie or another credential
IDEMPOTENCY_KEY400A required Idempotency-Key is missing or malformed
VALIDATION400The body failed schema validation; details carries paths
KEY_INVALID401Unknown, malformed or expired key
KEY_NETWORK403The caller address is outside the key's allowlist
AUTH_MODE403The route does not accept keys
SCOPE403A required scope is missing
TIER_REQUIRED403The feature needs a pro app
PUBLISHER_ROLE403The acting user lacks the publisher role
VERSION_CONFLICT, REVISION_CONFLICT409Your expected version or revision is stale; re-read and retry
IDEMPOTENCY_CONFLICT409The same Idempotency-Key was used with different input
RATE_LIMIT429A bucket or the daily quota is exhausted

The authoritative per-route list is in the route index and the OpenAPI document.

Edit this page on GitHub · Updated 2026-11-01

esc

↑ ↓ move↩ open⌘↩ new tabesc close