# Bridge quote

`POST https://api.getchord.xyz/v1/crosschain/quote`

Source: https://getchord.xyz/docs/api-reference/operations/crosschainquote/

A cross-chain quote from the provider: the steps, fees and the transactions to sign on the origin chain (an approve step is added when the origin token is an ERC-20). Poll `/crosschain/status` with the deposit hash.

## Request body (JSON)

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `user` | yes | string | EVM address, hex, case-insensitive. |
| `originChainId` | no | integer |  |
| `destinationChainId` | yes | integer |  |
| `originCurrency` | yes | string | EVM address, hex, case-insensitive. |
| `destinationCurrency` | yes | string | EVM address, hex, case-insensitive. |
| `amount` | yes | string | Amount in the token's smallest unit, as a decimal string. Never a float. |
| `slippageBps` | no | integer |  |
| `recipient` | no | string | EVM address, hex, case-insensitive. |
| `provider` | no | `lifi` · `relay` |  |
| `usePermit` | no | boolean | Relay only: a permit (signature) deposit instead of a transaction, for tokens that support it (native USDC on Arbitrum). |

```json
{
  "user": "0xb145400da27a2497d9fc2cd5621f2bfd37617af4",
  "originChainId": 8453,
  "destinationChainId": 5042,
  "originCurrency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "destinationCurrency": "0x3600000000000000000000000000000000000000",
  "amount": "100000000",
  "slippageBps": 100,
  "provider": "lifi"
}
```

## Response 200

- **400**: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
- **429**: Over the per-minute limit (`RATE_LIMIT_EXCEEDED`). Read `X-RateLimit-Reset` and back off.
- **502**: The routing engine or an upstream did not answer (`ENGINE_ERROR`, `ROUTE_ERROR`).
- **503**: The lane behind this endpoint is not ready or not enabled here (`NOT_READY`, `CHAIN_NOT_ENABLED`, `NOT_ENABLED`, `*_UNAVAILABLE`). Retry later; do not treat it as an empty answer.
