Endpoint
Request Body
| Parameter | Type | Description |
|---|---|---|
action* | object | See below |
action.type* | string | Must be "order" |
action.orders* | array | One or more order specs |
action.orders[].a* | string | 8-char AssetId hex string |
action.orders[].b* | boolean | true for buy, false for sell |
action.orders[].p* | string | Price, or "0" for market |
action.orders[].s* | string | Order size; use "0" only for tracked full-position positionTpsl trigger orders |
action.orders[].r | boolean | Reduce-only |
action.orders[].t* | object | Limit or trigger config |
action.orders[].c | number | Optional client id |
action.grouping* | string | "na" for standalone orders, "normalTpsl" for parent-attached TP/SL, or "positionTpsl" for position-attached TP/SL |
nonce* | number | Replay-protection nonce |
expiresAfter | number | Optional expiration timestamp in ms |
signature* | object | EIP-712 signature |
Response
Status Variants
| Response status | Meaning |
|---|---|
resting.oid | Accepted by Notional. For standard orders this means resting on the book; for TP/SL child orders it can still represent a locally accepted child awaiting parent fill |
filled | Fully filled immediately |
filled + resting | Partially filled, remainder resting |
pending.cloid | Submitted but exchange confirmation timed out |
prefunding.cloid | Spot buy accepted locally while protocol spot pre-funding is pending |
pendingTrigger.cloid | Local trigger intent accepted and waiting for trigger detection |
pendingParentFill.cloid | Normal TP/SL child accepted and waiting for the parent order to fill |
error | Validation or exchange failure |
Example Request
Notes
- Maximum batch size is 20 orders. -
action.orders[].ais always an 8-character AssetId hex string. - Supported markets include perpetuals and supported spot-pair buy and sell orders. Spot buys may returnprefundingbefore venue submission. -metadata.results[].orderIdis the internal Notional order id used by cancel and modify. -action.orders[].isPositionTpslis internal-only and must not be sent. Useaction.grouping="positionTpsl"instead. - Resting reduce-only limit orders are disabled; use market, IOC, stop, or take-profit reduce-only orders. - On reduce-onlypositionTpsltrigger orders,action.orders[].s = "0"means “track the full live position size”; an explicit positive size creates a fixed-size position TP/SL.
