Swaps com Jupiter
O Jupiter agrega liquidez entre Raydium, Orca, Meteora e outros AMMs Solana em uma única API de swap. Use-o quando precisar de roteamento de melhor preço sem manter os gráficos de pool você mesmo.
Busque em todas as páginas da documentação
O Jupiter agrega liquidez entre Raydium, Orca, Meteora e outros AMMs Solana em uma única API de swap. Use-o quando precisar de roteamento de melhor preço sem manter os gráficos de pool você mesmo.
Cartão de receita de referência rápida - pronto para copiar e colar.
const quote = await fetch(
`https://quote-api.jup.ag/v6/quote?inputMint=${inMint}&outputMint=${outMint}&amount=${amount}&slippageBps=50`
).then((r) => r.json());
const swap = await fetch("https://quote-api.jup.ag/v6/swap", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ quoteResponse: quote, userPublicKey: wallet, wrapAndUnwrapSol: true }),
}).then((r) => r.json());Quando usar isso:
@solana/kit 7.0.0.import { createSolanaRpc, address, lamports } from "@solana/kit";
import { getBase58Codec } from "@solana/codecs-strings";
const RPC = "https://api.mainnet-beta.solana.com";
const rpc = createSolanaRpc(RPC);
const inputMint = "So11111111111111111111111111111111111111112";
const outputMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
const amount = "50000000"; // 0.05 SOL
const slippageBps = 50;
const userPublicKey = "YOUR_WALLET_PUBKEY";
const quote = await fetch(
`https://quote-api.jup.ag/v6/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${amount}&slippageBps=${slippageBps}`
).then((r) => r.json());
const { swapTransaction } = await fetch("https://quote-api.jup.ag/v6/swap", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
quoteResponse: quote,
userPublicKey,
wrapAndUnwrapSol: true,
dynamicComputeUnitLimit: true,
prioritizationFeeLamports: "auto",
}),
}).then((r) => r.json());
const txBytes = getBase58Codec().decode(swapTransaction);
// Assine txBytes com a carteira, envie via rpc.sendTransaction(...)
console.log("Saída esperada:", quote.outAmount);O que isso demonstra:
outAmount, priceImpactPct e routePlan.dynamicComputeUnitLimit e prioritizationFeeLamports ajustam o pouso no Agave 4.1.1.| Endpoint | Propósito | Parâmetros chave |
|---|---|---|
/v6/quote | Rota de preço | inputMint, outputMint, amount, slippageBps |
/v6/swap | Construir tx | quoteResponse, userPublicKey |
/v6/swap-instructions | Lista bruta de instruções | Para montagem personalizada de tx |
// Atualiza a cota se o blockhash envelhecer - as cotas expiram rapidamente
const MAX_QUOTE_AGE_MS = 30_000;
const quotedAt = Date.now();
// Re-cota antes de enviar se Date.now() - quotedAt > MAX_QUOTE_AGE_MSswap e defina uma janela de idade máxima.SlippageToleranceExceeded. Correção: Aumente slippageBps ou divida em swaps menores.createAta ou pré-crie o ATA em uma tx de configuração.wrapAndUnwrapSol: true ou gerencie o ATA de wSOL explicitamente.dynamicComputeUnitLimit: true.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| CPI Direta de AMM | Você controla o pool + quer dependências mínimas | Você precisa do melhor preço entre os locais |
| Instruções de swap do Jupiter | Tx personalizada com suas próprias ALTs | Você quer o caminho mais rápido para um swap funcional |
| CPI do programa Jupiter on-chain | Swap dentro do seu programa Anchor | Você precisa apenas de descoberta de rota off-chain |
Comece com 50 bps (0,5%) para pares líquidos. Aumente para 100-300 bps para pools finos ou lançamentos voláteis.
Sim - faça CPI no programa on-chain do Jupiter com contas de swap-instructions. O roteamento off-chain ainda descobre o caminho.
Passe prioritizationFeeLamports: "auto" na solicitação de swap, ou defina um valor explícito de lamports do seu oráculo de taxas.
Use swapMode=ExactOut no endpoint de cota quando precisar de uma quantidade de saída precisa (por exemplo, para pagar uma dívida exata).
Cota desatualizada, contenção de bloqueio de conta ou taxa de prioridade muito baixa. Re-cota e aumente CU/taxa de prioridade.
Sim - passe listas de permissão/negação dexes na API de cotação para excluir locais não confiáveis.
Inspecione quote.routePlan - cada etapa mostra swapInfo com o rótulo AMM, quantidades de entrada/saída e endereço do pool.
Tráfego intenso do servidor deve cachear cotações brevemente e fazer backoff em HTTP 429. Considere os planos pagos do Jupiter para produção.
Use o fork da mainnet do Surfpool 0.12.0 com carteiras de teste financiadas, ou devnet com mints de pool conhecidos (rotas limitadas).
Mints Token-2022 são suportados em muitas rotas, mas não em todos os pools. Verifique os IDs do programa de token routePlan por perna.
Versões da Stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026