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

# Sandbox Mode

> Test the full quote to execute to status flow with no real funds and no live venue settlement.

Run the exact same `quote` then `execute` then [`submit-signature`](/api-reference/submit-signature)
then `status` flow from the [Quickstart](/quickstart), end to end, with nothing at stake: no
funds move, and RAVN never bills or meters the call.

## Turn it on

Set `sandbox: true` on [`POST /quote`](/api-reference/quote) (or
[`/x402/quote`](/ai-agents/x402-payments), same contract):

```bash theme={null}
curl -s -X POST https://app.ravn.exchange/api/v1/quote \
  -H 'content-type: application/json' -d '{
    "inputChainId": 1, "outputChainId": -2,
    "inputToken": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
    "outputToken": "So11111111111111111111111111111111111111112",
    "inputAmount": "1000000000000000000",
    "userAddress": "0xYourUser",
    "destinationAddress": "SoYourUser",
    "sandbox": true
  }'
```

`sandbox` doesn't touch pricing: the quote you get back is still live and real. It only changes
what happens once you act on it. The flag rides through the opaque `quoteToken` automatically,
so every later call that takes that token (`/execute`, `/submit-signature`, `/status`, or their
`/x402/*` equivalents) sees it too, with no separate flag to pass anywhere else. A sandbox
`quoteToken` works interchangeably across the plain and x402 endpoints, same as a real one.

## What changes downstream

| Endpoint                                               | In sandbox mode                                                                                                                                                                                                                   |
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`/execute`](/api-reference/execute)                   | Returns a realistically shaped `TRANSACTION`, `SIGNATURE`, or `DEPOSIT` payload (real calldata, typed data, or deposit-address shape) with no funds ever moved. THORChain (BTC source) and Chainflip aren't supported, see below. |
| [`/submit-signature`](/api-reference/submit-signature) | Skips forwarding the signature to the real venue and returns a synthetic `statusRef` immediately.                                                                                                                                 |
| [`/status`](/api-reference/status)                     | Always returns an immediate synthetic result: `{ "status": "success", "deliveredAmount": <the quoted output>, "txHash": "0xsandbox..." }`. `ref` isn't validated in sandbox mode, so any placeholder string works.                |

<Warning>
  THORChain with BTC as the source, and Chainflip, aren't supported in sandbox mode: both can
  trigger a real on-chain cost as part of building the execution, which sandbox mode has no way
  to fake away. If your quote's winner is either one, `/execute` returns `500 INTERNAL` with a
  message naming the venue instead of an execution payload. Pass
  `excludeVenues: ["thorchain", "chainflip"]` on [`/quote`](/api-reference/quote) while testing.
  Every route that includes either venue always has at least one other real venue in the race, so
  excluding them is never a dead end.
</Warning>

<Note>
  A sandbox swap never touches RAVN's swap fee accounting on either the free REST endpoints or
  their [x402](/ai-agents/x402-payments) equivalents, so it's safe to hit repeatedly while
  integrating. On x402 specifically, that's separate from the per-call USDC access fee: that
  payment gate doesn't look at `sandbox` and still charges normally, sandbox mode only saves you
  from moving swap funds, not from the cost of the call itself.
</Note>
