Skip to Content
DevelopersDrift SDKSwaps (Jupiter)

Swaps (Jupiter)

You can route spot swaps using Jupiter. In TypeScript, the SDK exposes a JupiterClient plus a convenience driftClient.swap(...) helper.

import { Connection } from "@solana/web3.js"; import { JupiterClient } from "@drift-labs/sdk"; const connection = new Connection("<RPC_URL>", "confirmed"); const jupiterClient = new JupiterClient({ connection });
Class JupiterClientReference ↗
PropertyTypeRequired
url
string
Yes
connection
Connection
Yes
lookupTableCahce
Map<string, AddressLookupTableAccount>
Yes
apiKey
any
No
getHeaders
any
Get the headers for API requests, including API key if configured
Yes
getQuote
({ inputMint, outputMint, amount, maxAccounts, slippageBps, swapMode, onlyDirectRoutes, excludeDexes, autoSlippage, maxAutoSlippageBps, usdEstimate, }: { inputMint: PublicKey; outputMint: PublicKey; amount: BN; maxAccounts?: number; slippageBps?: number; swapMode?: SwapMode; onlyDirectRoutes?: boolean; excludeDexes?...
Get routes for a swap
Yes
getSwap
({ quote, userPublicKey, slippageBps, }: { quote: QuoteResponse; userPublicKey: PublicKey; slippageBps?: number; }) => Promise<VersionedTransaction>
Get a swap transaction for quote
Yes
getTransactionMessageAndLookupTables
({ transaction, }: { transaction: VersionedTransaction; }) => Promise<{ transactionMessage: TransactionMessage; lookupTables: AddressLookupTableAccount[]; }>
Get the transaction message and lookup tables for a transaction
Yes
getLookupTable
(accountKey: PublicKey) => Promise<AddressLookupTableAccount>
Yes
getJupiterInstructions
({ transactionMessage, inputMint, outputMint, }: { transactionMessage: TransactionMessage; inputMint: PublicKey; outputMint: PublicKey; }) => TransactionInstruction[]
Get the jupiter instructions from transaction by filtering out instructions to compute budget and associated token programs
Yes
// Preview a quote before swapping (shape depends on Jupiter route selection). const quote = await jupiterClient.getQuote({ inputMint: "<INPUT_MINT>", outputMint: "<OUTPUT_MINT>", amount: "<AMOUNT_IN_BASE_UNITS>", }); console.log(quote);
Method JupiterClient.getQuoteReference ↗
ParameterTypeRequired
__0
{ inputMint: PublicKey; outputMint: PublicKey; amount: BN; maxAccounts?: number; slippageBps?: number; swapMode?: SwapMode; onlyDirectRoutes?: boolean; excludeDexes?: string[]; autoSlippage?: boolean; maxAutoSlippageBps?: number; usdEstimate?: number; }
the mint of the input token
Yes
Returns
Promise<QuoteResponse>
// Assumes `driftClient` is subscribed. const txSig = await driftClient.swap({ jupiterClient, inMarketIndex: 0, // e.g. USDC outMarketIndex: 1, // e.g. SOL amount: driftClient.convertToSpotPrecision(0, 10), // 10 USDC (example) slippageBps: 50, onlyDirectRoutes: false, }); console.log(txSig);
Method DriftClient.swapReference ↗
ParameterTypeRequired
__0
{ swapClient?: UnifiedSwapClient | SwapClient; jupiterClient?: JupiterClient; outMarketIndex: number; inMarketIndex: number; outAssociatedTokenAccount?: PublicKey; ... 8 more ...; quote?: UnifiedQuoteResponse; }
swap client to find routes and instructions (Titan or Jupiter)
Yes
Returns
Promise<string>
Last updated on