application/problem+json format, providing structured machine-readable details alongside the HTTP status code. Every error response carries a stable type URI you can use to distinguish error kinds programmatically, a human-readable detail field for logging, and a requestId UUID you can share with support to trace exactly what happened on the server.
Error Response Format
Every non-successful response has aContent-Type: application/problem+json header and a body that follows this structure:
Sensitive fields such as credentials and internal stack traces are always
redacted from problem responses before they reach you.
HTTP Status Codes
The table below covers every HTTP status code the Integration Gateway can return, what causes it, and what you should do.Idempotency Conflicts (409)
A409 Conflict on a mutating endpoint means you sent the same Idempotency-Key header value with a different request body than the one originally associated with that key. This is always a client error.
You have two options to resolve it:
1
Reuse the original payload
If you intended to replay the original operation (for example, after a
network timeout), re-send the request with the exact same body you used
the first time. The gateway will return the original response without
re-executing the operation.
2
Generate a new idempotency key
If you intend to submit a genuinely different operation, generate a fresh
Idempotency-Key value (for example, a new UUID v4) and send the new
payload with that key.Retry-After Header
When you receive a429 Too Many Requests response, the gateway includes a Retry-After header that tells you how many seconds to wait before retrying:
429 responses, apply additional exponential backoff on top of the Retry-After value to avoid amplifying load on the gateway.
If you use the Praxa SDK, it automatically retries
408, 425, 429, and
5xx responses using the Retry-After header where present. You only need
to handle non-retryable errors such as 400, 401, 403, 404, 409,
and 422 in your own code.