action* | object | See below |
action.type* | string | Must be "order" |
action.orders* | array | See below |
action.orders[].a* | string | Asset ID as 8-char hex string (4 bytes), e.g., "01000000" |
action.orders[].b* | boolean | true = buy, false = sell |
action.orders[].p | string | Limit price (required for limit orders), e.g., "50000.0" |
action.orders[].s* | string | Order size, e.g., "0.1" for 0.1 BTC |
action.orders[].r | boolean | Reduce-only flag (default: false) |
action.orders[].t* | object | Order type configuration, e.g., {"limit":{"tif":"Gtc"}} |
action.orders[].t.limit.tif | string | Time-in-force: "Gtc", "Alo", "Ioc" |
action.orders[].t.trigger.isMarket | boolean | true for stop-market, false for stop-limit |
action.orders[].t.trigger.triggerPx | string | Trigger price for stop orders |
action.orders[].t.trigger.tpsl | string | "tp" (take profit) or "sl" (stop loss) |
action.orders[].c | number | Optional client order id (cloid) |
action.orders[].isPositionTpsl | boolean | Optional flag for position TP/SL orders |
action.grouping | string | Order grouping: "na", "normalTpsl", "positionTpsl" |
nonce* | number | Timestamp in milliseconds for replay protection, e.g., 1701234567890 |
expiresAfter | number | Optional expiration timestamp (ms) |
signature* | object | See below |
signature.r* | string | First 32 bytes of signature (hex string), e.g., "0x1234..." |
signature.s* | string | Second 32 bytes of signature (hex string), e.g., "0x5678..." |
signature.v* | number | Recovery ID (27 or 28) |