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

# POST /quote

> Get the best-priced route for a swap.

Shops every eligible venue and returns the best price plus an opaque `quoteToken` to pass to
[`/execute`](/api-reference/execute).

## Request

<ParamField body="inputChainId" type="integer" required>Origin chain ID.</ParamField>
<ParamField body="outputChainId" type="integer" required>Destination chain ID.</ParamField>
<ParamField body="inputToken" type="string" required>Contract address / mint, or the native sentinel.</ParamField>
<ParamField body="outputToken" type="string" required>Contract address / mint, or the native sentinel.</ParamField>
<ParamField body="inputAmount" type="string" required>Positive integer in the token's smallest unit.</ParamField>
<ParamField body="userAddress" type="string" required>The sender's address.</ParamField>
<ParamField body="destinationAddress" type="string">Recipient on the destination chain. Required for cross-ecosystem swaps.</ParamField>
<ParamField body="refundAddress" type="string">Where refunds go on failure.</ParamField>
<ParamField body="slippageBps" type="integer">1–5000. Omit for the venue default.</ParamField>

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

## Response

<ResponseField name="quoteToken" type="string">Opaque handle — pass to `/execute` verbatim. Do not parse. Expires.</ResponseField>
<ResponseField name="venue" type="object">`{ id, name }` of the winning venue.</ResponseField>
<ResponseField name="routeType" type="string">e.g. `CROSS_ECOSYSTEM`, `EVM_CROSS_CHAIN`.</ResponseField>
<ResponseField name="input" type="object">`{ token, amount }`.</ResponseField>
<ResponseField name="output" type="object">`{ token, amount }` — the expected output.</ResponseField>
<ResponseField name="fee" type="object">`{ bps, amount, token }` — the applied integrator fee.</ResponseField>
<ResponseField name="slippage" type="object">`{ bps, isFirm, guaranteedMin }` or null.</ResponseField>
<ResponseField name="gas" type="object">Native gas the user must hold, or null (gasless).</ResponseField>

<ResponseField name="estimatedTimeSeconds" type="integer" />

<ResponseField name="expiresAt" type="integer">Epoch ms when the quote expires.</ResponseField>

```json theme={null}
{
  "data": {
    "quoteToken": "…opaque…",
    "venue": { "id": "near_intents", "name": "NEAR Intents" },
    "routeType": "CROSS_ECOSYSTEM",
    "input":  { "token": { }, "amount": "100000000000" },
    "output": { "token": { }, "amount": "18985000" },
    "fee":    { "bps": 25, "amount": "47462", "token": { } },
    "estimatedTimeSeconds": 42,
    "expiresAt": 1750000000000
  }
}
```

Returns `404 NO_LIQUIDITY` when no venue can serve the pair/amount.
