Errors
The API uses conventional HTTP status codes and a single, predictable error envelope.
Error envelope
Every error response carries a JSON body with a single error field holding a human-readable message. The HTTP status code carries the category.
Example
{
"error": "Insufficient available balance"
}Status codes
| Code | Status | Meaning |
|---|---|---|
| 200 | OK | The request succeeded. |
| 400 | Bad Request | Malformed input, validation failure, or a rejected order. |
| 401 | Unauthorized | Missing or invalid Bearer token. |
| 403 | Forbidden | Authenticated, but the account lacks permission (e.g. admin-only route). |
| 404 | Not Found | The market, order, or other resource does not exist. |
| 429 | Too Many Requests | Rate limit exceeded — back off and retry. |
| 500 | Internal Server Error | Something went wrong on our side. |
Common order rejections
Trading endpoints return 400with one of these messages when an order can't be accepted:
Insufficient available balanceAn order would exceed your available cash.
Order rejected: post_only order would cross the spreadA post_only order would have matched immediately.
Order rejected: FOK order cannot be fully filledA fill-or-kill order couldn't be filled in full.
Order cannot be amendedThe target order is already filled or cancelled.
Market ticker not foundThe ticker doesn't resolve to a known market.