> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kuru.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Execute order batch

> Place readable native orders, cancel maker slots, or perform both atomically.

Submits `wallet.execute_batch`. Use this method for normal order entry and cancellation integrations.

<Info>The example uses the verified mainnet WETHUSDC market, but its wallet, nonce, deadline, account ID, and signature are placeholders. Build and sign a fresh intent for the selected network before submitting.</Info>

<ParamField body="requestId" type="string" required>New lowercase UUIDv7 for correlation.</ParamField>
<ParamField body="method" type="string" required default="wallet.execute_batch">Must be `wallet.execute_batch`.</ParamField>
<ParamField body="wallet" type="string" required>Secondary trading EOA matching the bearer JWT.</ParamField>

<ParamField body="payload" type="object" required>
  Signed `BatchIntent` containing `header`, `orders`, `cancelSlotIdxs`, `expectedOrderIds`, and `signature`.
</ParamField>

<ParamField body="authorization7702" type="object | null">Normally `null` after onboarding.</ParamField>

The header requires `accountId`, `market`, `authNonce`, increasing `nonce`, Unix-second `deadline`, 32-byte `clientOrderId`, `builder`, and `builderFeePps`. Every integer is a canonical unsigned decimal string.

Sign `BatchIntent` with the `KuruTradingWallet` EIP-712 domain: version `2`, chain ID `143` on mainnet or `10143` on testnet, and the **delegated trading EOA** as `verifyingContract` (not the shared implementation or Relay address). Version-`1` wallet signatures are invalid for the current implementation; rebuild and re-sign any pending intents created with that domain. AccountCore signer grants use their separate `KuruAccountCore` version-`1` domain. See [Trading-wallet Signing](/sdk/trading-wallet).

Each native order requires `side` (`BUY`/`SELL`), `quantity`, `price`, `tif` (`GTC`/`IOC`/`FOK`), `executionInstruction` (`NONE`/`POST_ONLY`), and `minSizeAfterBlock`. Post-only requires GTC.

<RequestExample>
  ```curl cURL theme={null}
  curl --request POST --url https://relay.mainnet.kuru.io/relay \
    --header "Authorization: Bearer $KURU_RELAY_JWT" \
    --header 'Content-Type: application/json' \
    --data '{
      "requestId":"018f5ef2-88a1-7b41-a826-4b679010f87f",
      "method":"wallet.execute_batch",
      "wallet":"0x1111111111111111111111111111111111111111",
      "payload":{
        "header":{"accountId":"123","market":"0x8121ee960066e4344a213f9ac7502395502aee7a","authNonce":"1","nonce":"1720000000123","deadline":"1720000030","clientOrderId":"0x0000000000000000000000000000000000000000000000000000000000000001","builder":"0x0000000000000000000000000000000000000000","builderFeePps":"0"},
        "orders":[{"side":"BUY","quantity":"1000000","price":"123400","tif":"GTC","executionInstruction":"POST_ONLY","minSizeAfterBlock":"0"}],
        "cancelSlotIdxs":[],"expectedOrderIds":[],"signature":"0x..."
      },
      "authorization7702":null
    }'
  ```
</RequestExample>

Up to 256 orders and 62 unique cancellations are accepted. `expectedOrderIds` must be parallel to `cancelSlotIdxs`; bind cancellations to current order IDs whenever possible.

<ResponseExample>
  ```json BROADCAST theme={null}
  {
    "requestId": "018f5ef2-88a1-7b41-a826-4b679010f87f",
    "status": "BROADCAST",
    "txHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "sponsorAddress": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "sponsorNonce": "42",
    "transactionType": "DYNAMIC_FEE"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.