Cancel All Orders
Cancel all open orders for specific market(s), or all markets with the wildcard symbol.
Endpoint
POST https://papi.synthetix.io/v1/tradeRequest
Request Format
{
"params": {
"action": "cancelAllOrders",
"subAccountId": "1867542890123456789",
"symbols": ["BTC-USDT", "ETH-USDT"]
},
"nonce": 1704067200000,
"signature": {
"v": 28,
"r": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"s": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
},
"expiresAfter": 1704067300
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | Yes | Parameters object containing method details |
params.action | string | Yes | Must be "cancelAllOrders" |
params.subAccountId | string | Yes | SubAccount ID to cancel orders for |
params.symbols | array | Yes | Array of symbols to cancel. Use ["*"] to cancel across all markets. [] is rejected. ["*", "ETH-USDT"] is rejected |
| Parameter | Type | Required | Description |
|---|---|---|---|
nonce | uint64 | Yes* | Positive integer nonce (must be incrementing and unique per request) |
signature | object | Yes | EIP-712 signature object |
expiresAfter | uint64 | No | Unix milliseconds expiration timestamp (5x rate limit on stale cancels) |
:::info Common Parameters
These are top-level request parameters. The subAccountId parameter is specified within the params object (see each endpoint's parameter table).
:::
:::info SubAccountAction Endpoints
Endpoints using SubAccountAction signing (getPositions, getOpenOrders, getOrderHistory, getTrades, getFundingPayments, getSubAccount, getSubAccounts, getDelegatedSigners, getBalanceUpdates, getWithdrawableAmounts, getFeeRate, getSnaxpotEpochTickets) do not require the nonce parameter. Only signature and optional expiresAfter are needed.
:::
EIP-712 Type Definition
const CancelAllOrdersTypes = {
CancelAllOrders: [
{ name: "subAccountId", type: "uint256" },
{ name: "symbols", type: "string[]" },
{ name: "nonce", type: "uint256" },
{ name: "expiresAfter", type: "uint256" }
]
}Wildcard Rules for symbols
["*"]: Cancel all open orders across all markets["BTC-USDT", "ETH-USDT"]: Cancel only those markets[]: Rejected["*", "ETH-USDT"]: Rejected (wildcard must be used alone)
Response
Success Response
{
"status": "ok",
"response": [
{
"order": {
"venueId": "1958787130134106112",
"clientId": "cli-1958787130134106112"
},
"orderId": "1958787130134106112",
"message": "",
"symbol": "BTC-USDT"
},
{
"order": {
"venueId": "1958787130134106113",
"clientId": "cli-1958787130134106113"
},
"orderId": "1958787130134106113",
"message": "",
"symbol": "ETH-USDT"
}
],
"request_id": "5ccf215d37e3ae6d"
}Error Response
{
"status": "error",
"error": {
"message": "Failed to unmarshal cancel all orders request",
"code": "INVALID_FORMAT"
},
"request_id": "5ccf215d37e3ae6d"
}Code Examples
Cancel All Markets
To cancel all orders across all markets, pass the wildcard symbol as a single-item array:
{
"params": {
"action": "cancelAllOrders",
"subAccountId": "1867542890123456789",
"symbols": ["*"]
},
"nonce": 1704067200000,
"signature": {
"v": 28,
"r": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"s": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
},
"expiresAfter": 1704067300
}Cancel Specific Markets
To cancel orders for specific markets only:
{
"params": {
"action": "cancelAllOrders",
"subAccountId": "1867542890123456789",
"symbols": ["BTC-USDT", "ETH-USDT"]
},
"nonce": 1704067200000,
"signature": {
"v": 28,
"r": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"s": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
},
"expiresAfter": 1704067300
}Cancel Behavior
- Immediate Effect: Orders are cancelled immediately upon validation
- Margin Release: Freed margin becomes available instantly
- Partial Fills: Partially filled orders are cancelled for remaining quantity
- All Order Types: Cancels limit, market, trigger, and TWAP orders. For TWAP parents, any in-flight child chunks are cancelled automatically
- Atomic Operation: All specified orders are cancelled together
Implementation Details
The API performs the following steps:
- Retrieves all open orders for the authenticated subaccount
- Iterates through each order and attempts to cancel it individually
- Returns an array of cancellation statuses for each processed order
- Each successful cancellation includes a canonical
orderobject (venueId, optionalclientId)
Migration Note: Use order.venueId as canonical. orderId remains deprecated for compatibility.
The message field contains an error description when cancellation fails for a specific order, and is empty on success. Do not treat a non-empty message as a success confirmation.
Validation Rules
noncemust be a positive integer, incrementing and unique per requestsymbolsarray must contain valid market symbols or be empty for all markets["*"]cancels all markets and cannot be combined with other symbols[]is invalid- Market symbols must be valid trading pairs
- Must be signed by account owner or authorized delegate
Signing
All trading methods are signed using EIP-712. Each successful trading request will contain:
- A piece of structured data that includes the sender address
- A signature of the hash of that structured data, signed by the sender
For detailed information on EIP-712 signing, see EIP-712 Signing.
Nonce Management
The nonce system prevents replay attacks and ensures order uniqueness:
- Use any positive integer as nonce
- Each nonce must be greater than the previous one (incrementing)
Date.now()is a convenient option, not a requirement- If nonce conflicts occur, increment by 1 and retry
:::note SubAccountAction Exception
SubAccountAction endpoints (getPositions, getOpenOrders, getOrderHistory, getTrades, getFundingPayments, getSubAccount, getSubAccounts, getDelegatedSigners, getBalanceUpdates, getWithdrawableAmounts, getFeeRate, getSnaxpotEpochTickets) do not require a nonce. Only the signature and optional expiresAfter parameters are needed.
:::
Error Handling
Common error scenarios:
| Error Code | Description | Retryable |
|---|---|---|
UNAUTHORIZED | EIP-712 signature validation failed | No |
VALIDATION_ERROR | Request validation failed | No |
MISSING_REQUIRED_FIELD | Required field is missing | No |
INVALID_FORMAT | Field format is invalid | No |
INVALID_VALUE | Invalid parameter value | No |
RATE_LIMIT_EXCEEDED | Too many requests in time window | Yes |
INSUFFICIENT_MARGIN | Not enough margin for trade | No |
ORDER_NOT_FOUND | Order does not exist | No |
OPERATION_TIMEOUT | Operation timed out | Yes |
| Error | Description |
|---|---|
| Symbols must be non-empty | symbols array cannot be empty |
| Invalid wildcard usage | * must be used alone as ["*"] |
| Invalid market symbol | Market symbol not recognized |
| No orders found | No open orders to cancel |
| Request expired | expiresAfter timestamp has passed |