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

CodeStatusMeaning
200OKThe request succeeded.
400Bad RequestMalformed input, validation failure, or a rejected order.
401UnauthorizedMissing or invalid Bearer token.
403ForbiddenAuthenticated, but the account lacks permission (e.g. admin-only route).
404Not FoundThe market, order, or other resource does not exist.
429Too Many RequestsRate limit exceeded — back off and retry.
500Internal Server ErrorSomething 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 balance

    An order would exceed your available cash.

  • Order rejected: post_only order would cross the spread

    A post_only order would have matched immediately.

  • Order rejected: FOK order cannot be fully filled

    A fill-or-kill order couldn't be filled in full.

  • Order cannot be amended

    The target order is already filled or cancelled.

  • Market ticker not found

    The ticker doesn't resolve to a known market.