data.solana. See the Swap Quoting page for the full input parameters.
Native SOL and WSOL
tokenIn / tokenOut value when the user is paying with, or receiving, native SOL from their wallet.
Wrapped SOL is the SPL mint So11111111111111111111111111111111111111112. Use the WSOL mint only when the user is intentionally swapping an existing WSOL token account.
Request
Supported Solana protocols
Mobula routing includes the following Solana integrations in addition to Raydium, Orca, Meteora, Pump.fun, PumpSwap, and the other supported DEXs:
These protocols participate in automatic best-route selection. Use
onlyProtocols to restrict a quote to one or more integrations, or excludedProtocols to remove them from consideration.
Sponsored fees, close authority, and final recipient
UsepayerAddress when a central wallet should pay Solana fees / ATA rent for the user. Add closeAuthority when that central wallet should be able to close non-WSOL ATAs created by Mobula during the swap and recover rent later.
walletAddressowns the input funds and signs for the swap.payerAddresspays network fees / rent and must also sign when different fromwalletAddress.closeAuthorityonly has an effect whenpayerAddressis provided. It applies to non-WSOL ATAs Mobula creates and leaves open after execution.swapRecipientAddressreceives the final output amount. It does not need to sign.swapRecipientAddresskeepswalletAddressas the swap taker/authority, then MobulaRouter transfers the final output after fee and slippage checks.swapRecipientAddressrequires a Mobula on-chain router route. If the selected route cannot use the router, the quote returns an error.
feePercentage follows the route’s quote asset. For protocols that settle through SPL token accounts, including PumpSwap, a native-SOL API output is received and charged as WSOL before the final unwrap. The router does not charge that referral fee from the user’s native lamports. Check data.fee.deductedFrom to determine whether the fee was charged on the input or output side.
Response — data.solana
Priority fee fields
Both/api/2/swap/quoting and /api/2/swap/quoting-instructions expose the applied Solana priority fee using the Jupiter-compatible response model. These fields are at the root of data, not inside data.solana.
Use these returned values when reporting or validating transaction fees. They describe the transaction Mobula built and require no additional RPC call.
data.solana fields
Multi-lander
SetmultiLander=true to receive N candidate transactions sharing a durable nonce. Race them across Jito / Nozomi / 0slot for fastest landing — only one can commit.
/swap/send in batch mode (candidates: [{lander, signedTransaction}, …]).
Signing
Supported aggregators
Jupiter, KyberSwap, NAOS, Li.Fi — pick one or several viaonlyRouters. Per-DEX filtering (Raydium, Orca, Meteora DLMM/Damm, Pump AMM, Whirlpool, Manifest, BisonFi, PancakeSwap, …) via onlyProtocols / excludedProtocols.
Limits
- Blockhash expiry —
lastValidBlockHeightis ~150 slots (60s). Re-quote if the user takes longer than that to sign. - Priority budget — use
prioritizationFeeLamportswithdynamicComputeUnitLimit=trueso the CU price is derived from the final compute limit. When bundling with Jito, setjitoTipLamportsseparately. - Address forms — Solana addresses are case-sensitive base58. Don’t lowercase.