> ## 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.

# Store TWAP instruction

> Submit wallet.create_twap through the opt-in Relay operational path.

Submits `wallet.create_twap` when this method is enabled for the selected deployment. This is a **slow operational method**, not the low-latency trading path. Relay validates the typed request and signature where applicable, simulates the exact call against `latest`, and only then queues a sponsored transaction. See [Operational methods](/api/relay/operational) for availability, gas, and latency rules.

<Info>The example uses testnet WETH/USDC where a market is required, but all identities, nonces, timestamps, hashes, and signatures are illustrative. Read current state and build a fresh valid signature for the selected network. Omit `authorization7702` and `makerSlotsPrimed`; complete delegation first.</Info>

<ParamField body="requestId" type="string" required>New lowercase UUIDv7 for request correlation.</ParamField>
<ParamField body="method" type="string" required default="wallet.create_twap">Must be `wallet.create_twap`.</ParamField>
<ParamField body="wallet" type="string" required>Trading wallet matching the bearer JWT; for AccountCore operations this is the sponsoring frontend identity, not necessarily the signed authorizer.</ParamField>
<ParamField body="payload" type="object" required>Method-specific payload shown below; unknown fields are rejected.</ParamField>

<Warning>Automated TWAP execution is **not implemented** and remains work in progress. This method only stores an instruction where enabled; no service schedules or submits slices.</Warning>

**Storage only:** Relay creates an on-chain instruction but does not monitor or execute slices. `totalQuantity` must divide evenly by a positive `sliceCount`; `intervalSeconds` is positive, `startTime` is future Unix seconds, and the computed end must fit the configured horizon. Quantity and price use native market precision. Creation uses the wallet's one-shot trigger/TWAP nonce namespace, not `lastSeenOrderNonce`; WebSocket submissions still follow connection-level increasing nonce ordering.

Sign the exact EIP-712 type below using the `KuruTradingWallet` version `2`, with the delegated trading wallet as `verifyingContract` and the selected chain ID (`143` mainnet; `10143` testnet):

```text theme={null}
CreateTwapIntent(uint40 accountId,address market,uint256 authNonce,uint64 nonce,uint64 deadline,bytes32 clientOrderId,address builder,uint32 builderFeePps,uint8 side,uint96 totalQuantity,uint32 limitPrice,uint64 startTime,uint32 intervalSeconds,uint32 sliceCount)
```

<RequestExample>
  ```curl cURL theme={null}
  curl --request POST --url https://relay.testnet.kuru.io/relay \
    --header "Authorization: Bearer $KURU_RELAY_JWT" \
    --header 'Content-Type: application/json' \
    --data '{"requestId":"018f5ef2-88a1-7b41-a826-4b679010f87f","method":"wallet.create_twap","wallet":"0x1111111111111111111111111111111111111111","payload":{"header":{"accountId":"123","market":"0x0A082280e4eA3D822E23Ec1186685477241A039d","authNonce":"1","nonce":"1792480000001","deadline":"1792500000","clientOrderId":"0x0000000000000000000000000000000000000000000000000000000000000001","builder":"0x0000000000000000000000000000000000000000","builderFeePps":"0"},"config":{"side":"BUY","totalQuantity":"10000000000","limitPrice":"30000000","startTime":"1792500300","intervalSeconds":"60","sliceCount":"10"},"signature":"0x..."}}'
  ```
</RequestExample>

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

`BROADCAST` means scheduling for asynchronous RPC broadcast, not provider acceptance or successful execution. Check the receipt and expected events/state. A failed estimate returns an immediate error with no transaction signed or broadcast.


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