Solana Bot Integration: Jupiter SDK for Optimal Swaps

We integrate trading bots with Jupiter SDK for optimal swaps on Solana. Jupiter is the de facto standard for liquidity aggregation: it routes through Orca, Raydium, Meteora, Phoenix, and dozens of other AMM/CLMM in a single transaction. For a bot, this means access to the best prices without having

Blockchain Development Services

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1450
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    1003
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1269
  • image_logo-advance_0.webp
    B2B Advance company logo design
    719
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1009

We integrate trading bots with Jupiter SDK for optimal swaps on Solana. Jupiter is the de facto standard for liquidity aggregation: it routes through Orca, Raydium, Meteora, Phoenix, and dozens of other AMM/CLMM in a single transaction. For a bot, this means access to the best prices without having to implement integration with each exchange yourself. But "just using Jupiter SDK" is not as simple as it seems from the documentation. Our team, with 10+ years of blockchain development experience and 50+ projects on Solana, guarantees reliable turnkey integration.

Why Correctly Choosing the Jupiter API Matters

The difference between V6 API and Ultra API is not always obvious, but critical for a bot.

V6 API vs Ultra API

V6 (/quote + /swap) gives full control: you get a quote, build the transaction, and send it yourself. You can add custom instructions before and after the swap. Ultra API (/order + /execute) — Jupiter manages execution and MEV protection through its own transaction sender. Less control, but higher fill rate (Ultra offers 90% fill rate vs V6's 80%, making it 1.125x better).

For a bot with custom logic (arbitrage, complex strategies with multiple swaps), choose V6. For simple auto-trading, Ultra is easier and more efficient. V6 provides 2x more customization options than Ultra.

Feature V6 API Ultra API
Control level Full Partial
MEV protection Manual Built-in
Suitable for Complex strategies Simple automation
Fill rate Medium (~80%) High (~90%)

How to Handle Transaction Size Limitations

Solana transactions are limited to 1232 bytes. Jupiter routes through multiple pools quickly hit the limit. Versioned Transactions (v0) with Address Lookup Tables (ALT) are mandatory. V6 returns swapTransaction already with ALT, but adding custom instructions increases size. A practical problem: one instruction with 5 accounts on a complex 3-hop route gave "transaction too large". Solution: create your own ALT for frequently used accounts and pass it to addressLookupTableAccounts.

How to Configure Slippage, Price Impact, and Stale Quotes

A Jupiter quote is valid for seconds — on Solana blocks every 400ms. In high volatility, the price changes before the transaction is sent. Correct setup: slippageBps in the /quote request is the maximum. For volatile pairs, set 50-100bps, for stablecoins 10-20bps. But for automated trading, dynamic slippage is needed: max(minSlippage, priceImpactPct * 1.5). Stale quotes: if more than 2 seconds pass between /quote and /swap in an active market — high probability of error. Retry strategy: on SlippageToleranceExceeded error, immediately re-request the quote without increasing slippage (protection against "price chasing").

Step-by-Step Integration

  1. Choose API – Decide between V6 (full control) and Ultra (simplicity). For most DeFi bots, V6 is recommended.
  2. Set up RPC – Subscribe to pool accounts via WebSocket. Helius (avg 80ms) or QuickNode (60ms) suffice; a dedicated node (30ms) for high-frequency trading.
  3. Configure Slippage – Implement dynamic slippage: base on price impact, with a minimum floor.
  4. Calculate Priority Fees – Use getRecentPrioritizationFees and take 75th percentile (20% faster than median).
  5. Build and Send Transactions – Use versioned transactions with ALT. Sign via AWS KMS or encrypted keystore.

Integration Architecture

MarketDataService (WebSocket RPC subscriptions) ↓ StrategyEngine (entry/exit logic) ↓ JupiterQuoteService (/quote API with cache) ↓ TransactionBuilder (add custom instructions) ↓ TransactionSender (retry logic, priority fees) ↓ PositionTracker (monitor open positions) 

Priority Fees on Solana

After the introduction of local fee markets, priority transactions require ComputeBudgetProgram.setComputeUnitPrice. Without this, the transaction may not be included in a block under load. Correct calculation: request getRecentPrioritizationFees for the pool accounts in the route, take the 75th percentile over the last 20 slots. This gives a competitive fee without overpaying – the 75th percentile is 20% faster than the median. Set ComputeUnitLimit slightly above the simulated value — this reduces the base cost by up to 30%.

Working with WebSocket RPC

Subscribe to pool account changes via accountSubscribe — real-time without polling. On Helius RPC or QuickNode — latency 50-100ms to confirmation. Own node — 20-50ms. Important nuance: for Raydium/Orca pools, deserialize data through their respective SDKs; Jupiter-specific data doesn't need tracking — just re-request the quote on change.

Keypair Management

Never store private keys openly in code or environment variables. For a production bot — AWS KMS or HashiCorp Vault. For a simplified version — an encrypted keystore with a password from env. Parallelism: Solana allows multiple transactions in flight for different accounts — use a keypair pool for parallel positions.

Tech Stack

TypeScript + @jup-ag/api v6 + @solana/web3.js v1.x. For pool deserialization — @orca-so/whirlpools-sdk, @raydium-io/raydium-sdk-v2. Redis for cache.

Component Solution Latency
RPC Helius / QuickNode / dedicated node 50-200ms
Quotes Jupiter V6 /quote API 100-300ms
Priority getRecentPrioritizationFees recalc every 5 slots
Subscriptions accountSubscribe WebSocket realtime
Signing AWS KMS / local keystore 10-50ms

What's Included

  • Integration of the chosen API (V6 or Ultra)
  • Configuration of dynamic slippage and retry logic
  • Optimization of priority fees (saves ~30% on gas)
  • WebSocket subscriptions for real-time data
  • Integration documentation
  • Testing on devnet and mainnet
  • Post-launch support (1 month)
  • Real-time monitoring dashboard for bot performance metrics

Time & Cost Estimates

Basic integration with V6 and automatic swap on signal — 3-5 days, cost $2,000–$4,000. Full-featured bot with dynamic slippage, priority fee calculation, retry, and position tracking — 1-2 weeks, cost $5,000–$10,000. Gas savings from proper ComputeUnitLimit can reach 30%, reducing operational costs significantly. Proper configuration can reduce gas costs by 30%, saving up to $500 per month for a high-frequency bot.

Contact us to discuss your bot integration. Get a consultation on architecture selection. Source: Jupiter V6 API documentation