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

# Swap Quote

`POST /swap/quote`

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 | 30000000000001 | 30000000000002, required
  - `destination` CurrencyBase, required
    - `address` string, nullable
    - `chain_id` 1 | 10 | 56 | 137 | 4663 | 8453 | 42161 | 20000000000001 | 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 | 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 | 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

---

[API](https://skmtc.net/coinvoyage/apis/coinvoyage-api-v3.md) · [All operations](https://skmtc.net/coinvoyage/apis/coinvoyage-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/coinvoyage/coinvoyage-api-v3/revisions/f3a3056f2c83/schema)
