Error response format
{
"success": false,
"error": {
"code": "CORRIDOR_NOT_AUTHORIZED",
"message": "this partner credential is not authorized for the requested corridor",
"corridor": null,
"details": {}
},
"meta": {
"request_id": "req_1789549205987654321",
"timestamp": "2026-09-16T09:00:05Z"
}
}
| Field | Type | Description |
|---|---|---|
error.code | string | Machine-readable error code |
error.message | string | Human-readable (do not parse — may change) |
error.corridor | string or null | Reserved, currently null |
error.details | object | Reserved, currently {} |
meta.request_id | string | Unique request ID for support |
A few errors are returned as plain-text (non-JSON) bodies:
422 for a request body with the wrong shape, 415 for a POST without Content-Type: application/json, and 400 when the body is not valid JSON or the query string cannot be parsed. Gateway errors (e.g. missing auth headers) are JSON but have no meta. Always check Content-Type before parsing as JSON.Errors by endpoint
POST /v1/quote
| HTTP | Description |
|---|---|
400 | Invalid request, amount outside limits, tokens not in corridor, FIRM sent to indicative endpoint |
401 | Authentication failed |
403 | Corridor or signer not enabled for your credential |
422 | Malformed body (plain-text) |
503 | Quoting unavailable (market data, risk state, halted) |
POST /v1/firm-quote
| HTTP | Description |
|---|---|
400 | Invalid request, amount outside limits, insufficient liquidity |
401 | Authentication failed |
403 | Corridor or signer not enabled |
409 | Duplicate client_ref or daily volume limit |
422 | Malformed body (plain-text) |
503 | Quoting unavailable |
GET /v1/executions
| HTTP | Description |
|---|---|
400 | Invalid query parameters or mixed lookup/history filters |
401 | Authentication failed |
404 | Execution not found (lookup mode — may not be indexed yet) |
GET /v1/corridors
| HTTP | Description |
|---|---|
401 | Authentication failed |
503 | Corridor state unavailable |
GET /v1/rates
| HTTP | Description |
|---|---|
401 | Authentication failed |
503 | Oracle price unavailable for one or more corridors |
GET /v1/reports/daily-summary
| HTTP | Description |
|---|---|
400 | Missing or invalid date |
401 | Authentication failed |
Retry guidance
| HTTP | Action |
|---|---|
| 400 | Do not retry with same params. Fix the request or request a new quote. |
| 401 | Check API key, secret, timestamp (within 30s), and signature. |
| 403 | Credential not authorised. Contact your account manager. |
| 404 | Retry after 3–5 seconds (execution may not be indexed yet). |
| 409 | Use a different client_ref. |
| 422 | Check JSON body structure. |
| 429 | Too many failed authentication attempts. Fix signing, then retry after 60s. |
| 500 / 502 | Exponential backoff: 1s → 2s → 4s → 8s. Contact support if persistent. |
| 503 | Wait 5–30s. Check GET /v1/corridors before retrying. |
New
error.code values may be added at any time. Always handle unrecognised codes by their HTTP status.