Errors¶
All errors return a consistent JSON structure.
Error response format¶
{
"error": {
"code": "error_code",
"message": "Human-readable description",
"field": "field_name"
},
"request_id": "req_xxxxx"
}
Note
The field property is only present for validation errors.
HTTP status codes¶
| Status | Description |
|---|---|
200 |
Success |
201 |
Created |
400 |
Bad Request — invalid parameters |
401 |
Unauthorized — invalid or missing authentication |
404 |
Not Found — resource does not exist |
409 |
Conflict — resource state conflict |
410 |
Gone — quote expired |
429 |
Too Many Requests — rate limit exceeded |
500 |
Internal Server Error |
Error codes¶
| Code | HTTP status | Description |
|---|---|---|
invalid_request |
400 | Request body is malformed or missing required fields. |
invalid_signature |
401 | Signature verification failed. |
unauthorized |
401 | Invalid or missing API key. |
timestamp_expired |
401 | Request timestamp outside the 5-minute window. |
not_found |
404 | Transaction ID not found. |
unsupported_pair |
400 | Currency pair not supported. |
unsupported_chain |
400 | Blockchain network not supported. |
invalid_wallet_address |
400 | Wallet address invalid for specified chain. |
amount_below_minimum |
400 | Amount below minimum threshold. |
amount_above_maximum |
400 | Amount above maximum threshold. |
quote_expired |
410 | Quote has expired. |
already_confirmed |
409 | Settlement already confirmed. |
already_cancelled |
409 | Settlement already cancelled. |
cannot_cancel |
409 | Settlement not in a cancellable state. |
rate_limit_exceeded |
429 | Too many requests. |
internal_error |
500 | Unexpected server error. |