---
title: "Ranked Solana routes, without building anything"
method: POST
path: "/svm/quote"
---

# Ranked Solana routes, without building anything

`POST /svm/quote`

## Request

- Base URL: `https://swap.vurto.cc/v1`
- URL: `https://swap.vurto.cc/v1/svm/quote`
- Auth: none required

Two request shapes, both accepted. Short (agents): tokenIn/tokenOut as symbol or mint plus a human "amount". Explicit (when you already hold mints and decimals): add tokenInDecimals, tokenOutDecimals and a raw "amountIn", which skips token resolution entirely. Ranked by output after our fee. orca and meteora price by reading pool state on-chain rather than asking an API, which is why they win on pairs where aggregators route around thin liquidity.

## Request body

- object
  - `chainId` 'solana-mainnet', required: Solana names its network, it does not number it.
  - `tokenIn` string, required: Mint address, or the symbol of a VERIFIED token. Symbols resolve only against the verified list on purpose: on Solana anyone can mint a token carrying another one's symbol, name and icon, and the mint is the only real identity. CASE-SENSITIVE.
  - `tokenOut` string, required: Mint address, or the symbol of a VERIFIED token. Symbols resolve only against the verified list on purpose: on Solana anyone can mint a token carrying another one's symbol, name and icon, and the mint is the only real identity. CASE-SENSITIVE.
  - `amount` string: Human decimal, e.g. "50". Use this OR amountIn.
  - `amountIn` string: Raw integer string in tokenIn smallest unit.
  - `tokenInDecimals` integer: Optional. Resolved server-side when omitted.
  - `tokenOutDecimals` integer: Optional. Resolved server-side when omitted.
  - `slippageBps` integer: Optional, a sane default applies.
  - `receiver` string: Optional: deliver the output to this address instead of the signing wallet.

## Response `200`

{quotes[], failures[], refreshedAt, providersQueried, indicative}. gainUserUsd is the proven advantage over the runner-up that stays with the user, null when there was nothing to prove; platformFeeBps states the fee that applies.

## Other responses

- `400`: invalid_chain_id | invalid_token | invalid_amount | same_token
- `404`: token_not_found — no verified token with that symbol
- `409`: ambiguous_token — details.candidates has every match
- `502`: no_routes — no provider returned a safe route

---

[API](https://skmtc.dev/vurto/apis/vurto-swap-public-api.md) · [All operations](https://skmtc.dev/vurto/apis/vurto-swap-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vurto/apis/vurto-swap-public-api/revisions/423be3a193b5?raw)
