Skip to main content

Response Envelope & Error Format

Every API response is wrapped consistently, whether it succeeds or fails.

Success

{
"data": { "...": "..." }
}

The actual resource or list is always under a top-level data key — never returned bare.

Error

{
"message": "A human-readable description of what went wrong"
}

Errors are distinguished by HTTP status code, not by a field in the body:

StatusMeaning
400Malformed request (bad input, failed validation)
401Missing or invalid API key
403The key's scopes don't cover this operation
404The resource doesn't exist, or isn't visible to your organization
409The request conflicts with existing state
422The request is well-formed but violates a policy (e.g. the impersonation blocklist)
429Rate limited — see Rate Limits
503The deployment isn't configured to serve this request (e.g. no inbox domains configured)