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

# Bundle

> Compose multi-step intents — swap + bridge + LP-deposit, etc.

Submit a multi-step intent that settles as one signature. Solvers pick up the bundle and execute end-to-end.

### Body

<ParamField body="account" type="string" required>
  User account.
</ParamField>

<ParamField body="steps" type="object[]" required>
  Ordered list of bundle steps. See "Step shape" below.
</ParamField>

<ParamField body="signature" type="string">
  EIP-712 signature for gasless settlement (optional).
</ParamField>

<ParamField body="intent" type="object">
  Intent body, when submitting a signed intent.
</ParamField>

<ParamField body="slippage" type="number">
  Default 1%.
</ParamField>

<ParamField body="recipient" type="string" />

<ParamField body="refundee" type="string" />

#### Step shape

Each entry in `steps[]`:

<ParamField body="type" type="string" required>
  One of `swap`, `bridge`, `zap`.
</ParamField>

<ParamField body="srcChainId" type="integer" required />

<ParamField body="destChainId" type="integer">
  Required for `bridge` and cross-chain `zap`.
</ParamField>

<ParamField body="srcToken" type="string" required />

<ParamField body="destToken" type="string" required />

<ParamField body="amount" type="string">
  In wei. Inferred from the previous step's output if omitted.
</ParamField>

<ParamField body="action" type="string">
  For `zap`: `add-liquidity`, `remove-liquidity`, `deposit`, `mint`.
</ParamField>

<ParamField body="pool" type="string">
  Pool address (for liquidity / deposit actions).
</ParamField>

### Response

<ResponseField name="status" type="string" />

<ResponseField name="data.bundleId" type="string">
  Use to poll `/v1/status`.
</ResponseField>

<ResponseField name="data.steps" type="object[]">
  Resolved per-step plan with selected protocols.
</ResponseField>

### Examples

<RequestExample>
  ```bash curl theme={null}
  curl -X POST https://zap.dzap.io/v1/bundle \
    -H "Content-Type: application/json" \
    -d '{
      "account": "0xUser",
      "steps": [
        { "type": "bridge", "srcChainId": 42161, "destChainId": 8453, "srcToken": "0xaf88...", "destToken": "0x8335...", "amount": "100000000" },
        { "type": "zap", "srcChainId": 8453, "destChainId": 8453, "srcToken": "0x8335...", "destToken": "0xPool...", "action": "add-liquidity", "pool": "0xPool..." }
      ],
      "slippage": 0.5
    }'
  ```

  ```ts SDK theme={null}
  const bundle = await dzap.getZapBundleQuote({
    account: '0xUser',
    steps: [/* ... */],
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "data": {
      "bundleId": "0xabc123...",
      "steps": [
        { "type": "bridge", "protocol": "across", "estimatedDuration": 90 },
        { "type": "zap", "protocol": "uniswap-v3", "estimatedDuration": 10 }
      ]
    }
  }
  ```
</ResponseExample>
