v1.19.0 - 2026-05-30
Changed
-
Breaking: Perpetual order size now uses base contracts
Perpetual orders are denominated in base
contracts(the same unit as options) via the canonicalcontractsfield. The legacyamountfield (USD notional) is still accepted for backward compatibility — supply exactly one ofcontractsoramount(supplying both, or neither, is rejected). When using the legacyamount, the notional is converted to contracts at the order price; if a perpetualamountorder is submitted without a usable price, it is rejected withVALUE_INVALID. Applies toPOST /limit,PATCH /limit,POST /market, andPOST /combo. Options are unchanged (alwayscontracts). -
Breaking: Perpetual minimum order size and size increment are now per-asset, in contracts
The minimum order size equals the size increment: BTC
0.0001, ETH0.001, ARB1(contracts). This replaces the previous flat$1 USDperpetual size increment. The minimum price increment is unchanged. -
New
contractsandfilled_contractsfields on order, fill, and position payloadsOrder and fill responses (
POST /market,POST /limitposted,GET /orders, and the WebSocketpost_order/update_order/cancel_orderand maker-orders events), trade events, and positions (GET /account_state,GET /positions, WebSocketposition) now carry canonical base-contract sizes:contracts(order/position size) andfilled_contracts(cumulative filled size). For perpetuals the existingsize/amount/filled_amountremain the USD notional for backward compatibility; for options they equal the contract count (sofilled_contractsequalsfilled_amount). For positions,contractsis now present on both perpetual and option positions (for options it equalssize); a perpetual position'ssizeis the USD notional (average price × contracts) andcontractsequals the position delta. -
Perpetual size error messages now report contracts
MIN_SIZE_VIOLATIONandMIN_INCREMENT_SIZE_VIOLATIONmessages express perpetual order sizes and limits in contracts rather than USD. -
Breaking: RFQ perpetual legs are now contracts-only
RFQ requests and responses must specify perpetual leg size via
contracts; the legacyamountfield is not accepted on RFQ. The previous RFQ-specific minimums (BTC$200,000/ ETH·ARB$100,000notional for perpetuals, and 25 / 250 / 25,000 contracts for options) have been removed — RFQ legs now use the same per-asset minimums as regular limit and market orders.
New
-
DELETE /rfq/requestTakers can cancel their own open RFQ request. Standard requests require an EIP-712
signatureover the newCancelRFQRequestTypetype plus asignature_deadline; one-click trading sessions authenticate via thex-one-clickheader. -
RFQ request
durationPOST /rfq/requestaccepts an optionalduration(integer seconds, minimum 300, maximum 1800) controlling how long the request stays open for makers. RFQ requests are now signed (EIP-712) unless submitted via a one-click session. -
New RFQ EIP-712 signing types
PostRFQRequestType(with nestedRFQOrderType[]),CancelRFQRequestType, andRFQResponseLimitOrder(theUserLimitOrderfield set plus a trailingorderId) — see the EIP-712 Signatures guide. -
New RFQ error codes
RFQ_REQUEST_ALREADY_EXISTS(HTTP 409, returns the conflictingorder_id),RFQ_RESPONSE_ALREADY_EXISTS(HTTP 409, returns the conflictingresponse_id),RFQ_FILL_TAKER_RISK_FAILED(HTTP 400), andRFQ_FILL_MAKER_RISK_FAILED(HTTP 400). -
RFQ WebSocket events updated
The
rfq_requestevent was renamed torfq_post_request, andrfq_cancel_requestandrfq_fill_responsewere added. Therfqchannel now emitsrfq_post_request,rfq_cancel_request,rfq_post_response,rfq_cancel_response, andrfq_fill_response. -
Combo leg limits
A combo order may contain at most 6 option legs and at most 1 perpetual leg (7 legs total).
limit_perp_pricemust be present and positive when a perpetual leg is included, and must be omitted otherwise. Violations are rejected with HTTP 400. -
GET /v2/account_history/export(Beta)Exports account history as a downloadable CSV (
text/csv, UTF-8 with BOM) using the same filters asGET /v2/account_history. Pagination parameters (cursor,offset,limit) are not accepted; the response is capped (seeX-Export-Max-Rows) and setsX-Export-Truncated/X-Export-Row-Countheaders. -
Auto-deleveraging (ADL) fills on the trade channel
When a position is reduced by ADL, the fill is delivered as a regular
tradeevent withadl: true(alongsideliquidation). There is no separate ADL channel.
Deprecated
-
Perpetual notional (
amount) sizingThe perpetual sizing model is migrating fully to base
contracts. The legacyamountfield on perpetual orders — and the notional values still emitted on perpetualsize/filled_amountoutputs for backward compatibility — are deprecated and will be removed in a future release. Migrate integrations tocontracts.
