---
title: "Swap Quote"
method: POST
path: "/swap/quote"
tags: ["swap"]
---

# Swap Quote

`POST /swap/quote`

## Request

- Base URL: `https://api.coinvoyage.io/v3`
- URL: `https://api.coinvoyage.io/v3/swap/quote`
- Auth: API key in header `X-API-KEY`
- TypeScript: <https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/docs/swap/quote/post.ts> (a function with typed inputs; its response is checked against the schema)

Spammable single-pair swap quote for live price discovery. Flat request/response. result_type carries soft errors on a 200. Optional recipient; fees match the swap execute path.

## Headers

- `X-API-KEY` string, required

## Request body

- SwapQuoteRequest
  - `source` CurrencyBase, required
    - `address` string, nullable
    - `chain_id` 1 | 10 | 56 | 137 | 4663 | 8453 | 42161 | 20000000000001 | 20000000000002 | 30000000000001 | 30000000000002, required
  - `destination` CurrencyBase, required
    - `address` string, nullable
    - `chain_id` 1 | 10 | 56 | 137 | 4663 | 8453 | 42161 | 20000000000001 | 20000000000002 | 30000000000001 | 30000000000002, required
  - `trade_type` 'EXACT_INPUT' | 'EXACT_OUTPUT', required: Whether the source or destination amount is fixed.
  - `amount` string, required
  - `sender` string, nullable
  - `recipient` string, nullable
  - `slippage_bps` integer, nullable

## Response `200`

Quote produced (check result_type)

- SwapQuoteResponse
  - `result_type` 'OK' | 'NO_ROUTE' | 'HIGH_IMPACT', required: Soft-error result code returned by /v3/swap/quote endpoints. Non-OK values still arrive on a 200 so polling clients don't have to special-case errors.
  - `issues` QuoteIssues
    - `price_impact_warning` PriceImpactWarning
      - `impact` number, required
      - `threshold` number, required
  - `quote` SwapQuote
    - `quote_id` string, required
    - `expires_at` string, date-time, required
    - `stale` boolean, required
    - `trade_type` 'EXACT_INPUT' | 'EXACT_OUTPUT', required: Whether the source or destination amount is fixed.
    - `slippage_bps` integer, nullable
    - `price_impact` number, required
    - `providers` string[]
    - `input` QuoteInput, required
      - `currency` Currency, required
        - `id` string, required
        - `chain_id` 1 | 10 | 56 | 137 | 4663 | 8453 | 42161 | 20000000000001 | 20000000000002 | 30000000000001 | 30000000000002, required
        - `address` string, nullable
        - `symbol` string, required
        - `name` string
        - `decimals` integer, required
        - `image_uri` string, nullable
        - `chain_image_uri` string, nullable
        - `price_usd` number, nullable
      - `amount` Amount, required
        - `ui` string, required
        - `raw` string, required: A big integer represented as a string to preserve precision
        - `value_usd` number, nullable
      - `balance` Amount
        - `ui` string, required
        - `raw` string, required: A big integer represented as a string to preserve precision
        - `value_usd` number, nullable
      - `breakdown` QuoteBreakdown
        - `total` Amount, required
          - `ui` string, required
          - `raw` string, required: A big integer represented as a string to preserve precision
          - `value_usd` number, nullable
        - `base` Amount, required
          - `ui` string, required
          - `raw` string, required: A big integer represented as a string to preserve precision
          - `value_usd` number, nullable
        - `fees` QuoteFees
          - `total_fee` Amount, required
            - `ui` string, required
            - `raw` string, required: A big integer represented as a string to preserve precision
            - `value_usd` number, nullable
          - `protocol_fee` Amount
            - `ui` string, required
            - `raw` string, required: A big integer represented as a string to preserve precision
            - `value_usd` number, nullable
          - `custom_fee` Amount
            - `ui` string, required
            - `raw` string, required: A big integer represented as a string to preserve precision
            - `value_usd` number, nullable
          - `relayer_fee` Amount
            - `ui` string, required
            - `raw` string, required: A big integer represented as a string to preserve precision
            - `value_usd` number, nullable
        - `gas` Amount
          - `ui` string, required
          - `raw` string, required: A big integer represented as a string to preserve precision
          - `value_usd` number, nullable
    - `output` QuoteOutput, required
      - `currency` Currency, required
        - `id` string, required
        - `chain_id` 1 | 10 | 56 | 137 | 4663 | 8453 | 42161 | 20000000000001 | 20000000000002 | 30000000000001 | 30000000000002, required
        - `address` string, nullable
        - `symbol` string, required
        - `name` string
        - `decimals` integer, required
        - `image_uri` string, nullable
        - `chain_image_uri` string, nullable
        - `price_usd` number, nullable
      - `amount` Amount, required
        - `ui` string, required
        - `raw` string, required: A big integer represented as a string to preserve precision
        - `value_usd` number, nullable
      - `amount_out_minimum` Amount
        - `ui` string, required
        - `raw` string, required: A big integer represented as a string to preserve precision
        - `value_usd` number, nullable

## Other responses

- `401`: Unauthorized
- `422`: Invalid request body
- `500`: Internal Server Error

## Changes

- **2026-10-13** `9b0a781499e3`: 2 warning, 2 info
  - added the new `20000000000002.00` enum value to the `quote/anyOf[#/components/schemas/SwapQuote]/input/currency/chain_id` response property for the response status `200`
  - added the new `20000000000002.00` enum value to the `quote/anyOf[#/components/schemas/SwapQuote]/output/currency/chain_id` response property for the response status `200`
  - added the new `20000000000002.00` enum value to the request property `destination/chain_id`
  - added the new `20000000000002.00` enum value to the request property `source/chain_id`
- **2026-07-31** `9bac53bd1da7`: 2 warning, 3 info
  - added the new `4663.00` enum value to the `quote/anyOf[#/components/schemas/SwapQuote]/input/currency/chain_id` response property for the response status `200`
  - added the new `4663.00` enum value to the `quote/anyOf[#/components/schemas/SwapQuote]/output/currency/chain_id` response property for the response status `200`
  - added the new optional request property `sender`
  - added the new `4663.00` enum value to the request property `destination/chain_id`
  - …1 more

[Operation history](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/changes/swap/quote/post.md)

---

[API](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3.md) - [All operations](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/revisions/3535f46f4c27?raw)
