Error responses
Order and cancel errors are usually returned as a vector with same length as the batched request.
Below is a list of possible batched error responses:
Order
Tick
Price must be divisible by tick size.
Order
MinTradeNtl
Order must have minimum value of $10
Order
PerpMargin
Insufficient margin to place order.
Order
ReduceOnly
Reduce only order would increase position.
Order
BadAloPx
Post only order would have immediately matched, bbo was {bbo}.
Order
IocCancel
Order could not immediately match against any resting orders.
Order
BadTriggerPx
Invalid TP/SL price.
Order
MarketOrderNoLiquidity
No liquidity available for market order.
Order
PositionIncreaseAtOpenInterestCap
Order would increase open interest while open interest is capped
Order
PositionFlipAtOpenInterestCap
Order would increase open interest while open interest is capped
Order
TooAggressiveAtOpenInterestCap
Order rejected due to price more aggressive than oracle while at open interest cap
Order
OpenInterestIncrease
Order would increase open interest too quickly
Order
InsufficientSpotBalance
(Spot-only) Order has insufficient spot balance to trade
Order
Oracle
Order price too far from oracle
Cancel
MissingOrder
Order was never placed, already canceled, or filled.
Important: Some errors are a deterministic function of the payload itself, and these are instead returned earlier as part of pre-validation. In this case only one error is returned for the entire payload, as some of these errors do not apply to a specific order or cancel.
Examples include: empty batch of orders, non-reduce-only TP/SL orders, and some forms of tick size validation.
For API users that use batching, it's recommended to handle the case where a single error is returned for a batch of multiple orders. In this case, the response could be duplicated n
times before being sent to the callback function, as the whole batch was rejected for this same reason.
For API users that use historical orders, a list of all the cancel / reject historical order statuses can be found below:
marginCanceled
Canceled due to insufficient margin
vaultWithdrawalCanceled
Canceled due to vault withdrawal
openInterestCapCanceled
Canceled due to open interest cap
selfTradeCanceled
Canceled due to self-trade prevention
reduceOnlyCanceled
Canceled due to reduce only
siblingFilledCanceled
Canceled due to TP/SL child sibling fill
delistedCanceled
Canceled due to asset delisting
liquidatedCanceled
Canceled due to liquidation
scheduledCancel
Canceled due to scheduled cancel action
internalCancel
Canceled due to internal error
tickRejected
Rejected due to invalid tick price
minTradeNtlRejected
Rejected due to order notional below minimum
perpMarginRejected
Rejected due to insufficient margin
reduceOnlyRejected
Rejected due to reduce only
badAloPxRejected
Rejected due to post-only immediate match
iocCancelRejected
Rejected due to IOC not able to match
badTriggerPxRejected
Rejected due to invalid TP/SL price
marketOrderNoLiquidityRejected
Rejected due to lack of liquidity for market order
positionIncreaseAtOpenInterestCapRejected
Rejected due to open interest cap
positionFlipAtOpenInterestCapRejected
Rejected due to open interest cap
tooAggressiveAtOpenInterestCapRejected
Rejected due to price too aggressive at open interest cap
openInterestIncreaseRejected
Rejected due to open interest cap
insufficientSpotBalanceRejected
Rejected due to insufficient spot balance
oracleRejected
Rejected due to price too far from oracle
Last updated