v1.17.0 - 2026-03-06
Added
-
New endpoint:
GET /v2/account_history(Beta) — cursor-based account historyA new version of the account history endpoint with cursor-based pagination, advanced filtering, and sorting. The original
GET /account_historyendpoint remains available and unchanged.Key differences from V1:
Feature V1 ( /account_history)V2 ( /v2/account_history)Pagination countparamCursor-based ( cursor,next_cursor)Filtering None event_types,actions,markets,transfer_typeSorting Fixed ascending sortKey+sortOrderResponse Flat history[]arrayStructured events[]with typeddataTimestamps Milliseconds Seconds Event ID None Unique idper eventRequest example:
GET /v2/account_history?address=0x...&event_types=trade,transfer&sortKey=timestamp&sortOrder=desc&limit=50This endpoint is in Beta and has not been fully validated in production yet.
-
New error responses for
POST /deposit— launch guardrailsTwo new error responses when platform capacity limits are reached:
-
400 DEPOSIT_LIMIT_EXCEEDED— Returned when a deposit would cause total cumulative deposits for the account to exceed the platform limit. Includeslimit,currentTotal, andrequestedfields. -
403 ACCOUNT_LIMIT_REACHED— Returned when the platform has reached its maximum number of accounts and the deposit would create a new account. Includeslimitfield.
-
-
New error code:
SIGNATURE_DEADLINE_INVALIDReplaces the generic signature expired error with enhanced diagnostic fields. When a signature deadline is missing, expired, or outside the acceptable window, the error response now includes:
serverTime— Current server Unix timestamp (seconds)minTimestamp— Minimum acceptable deadlinemaxTimestamp— Maximum acceptable deadlinegivenTimestamp— The deadline value provided by the client
Helps diagnose clock skew issues between client and server. Currently returned by
POST /heartbeat; other endpoints may adopt this in future releases. -
New rejection reasons for
PATCH /limit— wash trading and self-crossing preventionEdited orders can now be rejected with two additional reasons in the
rejected[]array:wash trading violation— Edited order would cross the maker's own resting ordersself crossing orders submitted— Multiple edits in the same batch would cross each other
These checks already existed for
POST /limitand now apply toPATCH /limitas well.
Changed
-
Breaking:
PATCH /limitnow creates a new order ID on editEditing a limit order now internally cancels the original order and creates a new one with a new
order_idderived from the new signature. The oldorder_idis discarded.Before: The order retained its original
order_idafter editing.After: A new
order_idis returned in the response. The system emits aCancelOrderevent for the old order followed by aPostOrderevent for the new order.Migration: Clients tracking orders by ID must update their references to the new
order_idreturned in theedited[]array. WebSocket subscribers will seeCancelOrder+PostOrderevents instead of the previousEditOrderevent. -
POST /combo—total_net_premiumsign convention correctedThe sign convention for
total_net_premiumin combo trade responses has been fixed:- Negative = net debit (taker pays)
- Positive = net credit (taker receives)
Only options legs contribute to this value; perpetual legs are excluded.
Migration: Clients consuming
total_net_premiumshould verify their sign handling — values may be inverted compared to previous behavior. -
GET /orders— description updated to "open orders"The endpoint summary and description now say "open orders" instead of "active orders" to match the
order_state: "open"enum value. No behavioral change.
Fixed
-
POST /mmp/config— corrected EIP-712 signature type definitionThe documented EIP-712 type
MMPConfigTypeincorrectly includedquantityLimit,deltaLimit, andvegaLimitfields. The actual signed message only contains 6 fields:smartAccountAddress,pairSymbol,status,interval,frozenTime, anddeadline. The risk limit fields are part of the request body but are not signed.Migration: If you implemented MMP config signing based on the 9-field type from previous documentation, update your signing code to use only the 6 fields above. The limit values should still be included in the request body, just not in the EIP-712 signature.
Documentation
- Split
GET /account_historyinto separate V1 and V2 endpoint pages - Fixed V1
AccountHistoryschema to match actual flat array response (was incorrectly showing nestedtrades/account_eventsobject) - Added
SIGNATURE_DEADLINE_INVALIDtoStandardErrorerror codes reference - Added wash trading and self-crossing rejection reasons to
PATCH /limitresponse schema - Corrected
POST /mmp/configEIP-712 type from 9 fields to actual 6 fields - Removed stale
edit_orderWebSocket event type from all orderbook channel docs (replaced bycancel_order+post_ordersequence when editing orders)
