Stable, dot-namespaced machine-readable error code (e.g. validation.request, auth.insufficient_scope, idempotency.conflict). Safe to branch on in your integration.
message
Human-readable description. Can change wording over time — don’t parse it.
request_id
Unique ID for this specific HTTP request. Include it when contacting support about a specific failed call.
correlation_id
Groups related requests together (e.g. a request and the async processing it triggers). Include it for issues spanning more than one request.
params
(optional) Structured detail about the failure — present on some domain errors.
is_transient
(optional)true if retrying the exact same request later may succeed (e.g. a temporary downstream dependency issue) — false/absent means retrying without changing anything will fail the same way.