---
title: "Get swap quote instructions with transaction details"
method: GET
path: "/api/2/swap/quoting-instructions"
tags: ["V2 - Swap"]
---

# Get swap quote instructions with transaction details

`GET /api/2/swap/quoting-instructions`

Get swap quote instructions for building transactions with custom logic. Returns routing information and detailed instructions.

## Query parameters

- `chainId` string — Mobula chain id. EVM: `evm:<integer>` (e.g. `evm:1`, `evm:8453`, `evm:42161`). Solana: `solana:solana`. TON: `ton:mainnet` or `ton:testnet`.
- `tokenIn` string, required — Sell token address. Native identifiers — EVM: `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` (EIP-7528). Solana native SOL: `So11111111111111111111111111111111111111111`. Use wrapped SOL / WSOL mint `So11111111111111111111111111111111111111112` only when swapping WSOL token-account balance. TON: `EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c`.
- `tokenOut` string, required — Buy token address. Same native identifier rules as `tokenIn`.
- `amount` string — Human-readable amount (e.g. `"1.5"` for 1.5 tokens). Converted server-side: raw = amount × 10^decimals. Mutually exclusive with `amountRaw`.
- `amountRaw` string — Raw amount as a digit-only string (e.g. `"1500000"` for 1.5 USDC at 6 decimals). Use this when you already have the bigint to avoid float precision loss. Mutually exclusive with `amount`.
- `slippage` string — Slippage tolerance in % (0-100, default 1). Quote rejects if expected output drops below this threshold.
- `maxMarketImpactPercentage` union — Optional market impact guard in %. If the computed marketImpactPercentage is greater than this value, the quote is rejected with HTTP 400.
  - string
  - number
- `walletAddress` string, required — Taker wallet — supplies `tokenIn`, signs the broadcast tx, pays gas, and receives `tokenOut` unless `recipientAddress` is set. Fee context.
- `recipientAddress` string — EVM only. Address that receives `tokenOut`. Defaults to `walletAddress`. Lets the taker (who supplies `tokenIn`, signs, and pays gas) differ from the output recipientAddress — e.g. relay flows where funds land at a relayer and the swapped output is delivered to the end user.
- `sellEntireBalance` string — EVM only. When `true`, MobulaRouter v2.19.0+ sells the taker’s entire ERC20 `tokenIn` balance at execution time; `amountRaw`/`amount` is used only to select the route and calculate the minimum output. Requires a Mobula route and is refused on aggregator routes.
- `excludedProtocols` union — DEX-level deny list (CSV). Example: `pump-amm,raydium`.
  - string
  - string[]
- `onlyProtocols` union — DEX-level allow list (CSV). Example: `uniswap-v3,uniswap-v4`.
  - string
  - string[]
- `poolAddress` string — Pin routing to a single pool (e.g. when you want a specific Uniswap V3 fee tier).
- `onlyRouters` string — Aggregator filter (CSV) — `jupiter`, `kyberswap`, `lifi`, `naos`. Omit to let the API pick.
- `priorityFee` string — Solana only. `auto`, `low`, `medium`, `high`, `veryHigh`, or microLamports per CU as a number string.
- `computeUnitLimit` string — Solana only. `true` for dynamic CU limit, or a fixed integer (default 400 000).
- `jitoTipLamports` string — Solana only. Jito tip in lamports — adds a transfer to one of the Jito tip accounts for fast landing.
- `feePercentage` union — Caller referral fee in % (0-99). Mobula skims a 20% platform cut off the top. Requires `feeWallet`.
  - string
  - number
- `feeWallet` string — Wallet that receives the caller referral fee. Required when `feePercentage > 0`.
- `minFeesNative` union — Minimum caller referral fee in native-token units. Currently honored on TON native-input swaps; requires `feeWallet`.
  - string
  - number
- `feeToken` string — Solana only. Mint of a token in which to charge a flat MINIMUM fee (paired with `minFeesTokenRaw`). Charged via a separate transfer to `feeWallet`, independent of the swap route. Requires `feeWallet`.
- `minFeesTokenRaw` union — Solana only. Raw amount (smallest unit) of `feeToken` to charge as a flat minimum fee. The swap reverts if the user lacks balance.
  - string
  - number
- `payerAddress` string — Solana only. Fee abstraction — wallet that signs/pays for the tx (separate from `walletAddress`).
- `multiLander` string — Solana only. `true` returns N candidate transactions over a durable nonce — race them across landers (Jito, Nozomi, 0slot). Only one commits.
- `landerTipLamports` string — Per-lander tip when `multiLander=true`. Defaults to each lander's minimum.

## Response `200`

Swap quoting instructions response

- object
  - `data` object, required
    - `amountOutTokens` string
    - `slippagePercentage` number
    - `amountInUSD` number
    - `amountOutUSD` number
    - `marketImpactPercentage` number
    - `poolFeesPercentage` number
    - `tokenIn` object
      - `address` string, required
      - `name` string
      - `symbol` string
      - `decimals` number, required
      - `logo` string, nullable
    - `tokenOut` object
      - `address` string, required
      - `name` string
      - `symbol` string
      - `decimals` number, required
      - `logo` string, nullable
    - `requestId` string, required
    - `details` object
      - `route` object
        - `hops` object[], required
          - `poolAddress` string, required
          - `tokenIn` object, required
            - `address` string, required
            - `name` string
            - `symbol` string
            - `decimals` number, required
            - `logo` string, nullable
          - `tokenOut` object, required
            - `address` string, required
            - `name` string
            - `symbol` string
            - `decimals` number, required
            - `logo` string, nullable
          - `amountInTokens` string, required
          - `amountOutTokens` string, required
          - `exchange` string
          - `poolType` string
          - `feePercentage` number
          - `feeBps` number
        - `totalFeePercentage` number
        - `aggregator` string
      - `aggregator` string
      - `raw` object
    - `solana` object, required
      - `instructions` object, required
        - `computeBudgetInstructions` object[]
          - `programId` string, required
          - `accounts` object[], required
            - `pubkey` string, required
            - `isSigner` boolean, required
            - `isWritable` boolean, required
          - `data` string, required
        - `setupInstructions` object[]
          - `programId` string, required
          - `accounts` object[], required
            - `pubkey` string, required
            - `isSigner` boolean, required
            - `isWritable` boolean, required
          - `data` string, required
        - `swapInstructions` object[], required
          - `programId` string, required
          - `accounts` object[], required
            - `pubkey` string, required
            - `isSigner` boolean, required
            - `isWritable` boolean, required
          - `data` string, required
        - `cleanupInstructions` object[]
          - `programId` string, required
          - `accounts` object[], required
            - `pubkey` string, required
            - `isSigner` boolean, required
            - `isWritable` boolean, required
          - `data` string, required
        - `addressLookupTableAddresses` string[]
      - `lastValidBlockHeight` number, required
      - `recentBlockhash` string, required
    - `fee` object
      - `amount` string, required
      - `percentage` number, required
      - `wallet` string, required
      - `deductedFrom` 'input' | 'output', required
  - `error` string

## Other responses

- `402` — Payment Required

---

[API](https://skmtc.net/mobula/apis/mobula-api.md) · [All operations](https://skmtc.net/mobula/apis/mobula-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mobula/mobula-api/versions/32f95d9e8ff2/schema)
