Seashail

Jupiter vs Uniswap vs 1inch

Compare swap providers to understand which aggregator routes your trades.

Seashail automatically selects the best swap provider based on the chain you're trading on. This comparison explains the differences and when you might want to explicitly choose a provider.

Feature Comparison

FeatureJupiterUniswap1inch
ChainSolanaEVM chainsEVM chains
Auto-selected forSolana swapsEVM swaps (default)EVM swaps (alternative)
Provider param"jupiter""uniswap""1inch"
Route aggregationMulti-hop via Jupiter APIUniswap router1inch aggregation
Slippage controlslippage_bpsslippage_bpsslippage_bps
Token formatSPL mint addressERC-20 contract addressERC-20 contract address

The provider: "auto" parameter (default) automatically selects the best provider for your chain:

  • Solana swaps → Jupiter
  • EVM swaps → Uniswap (default)

Most users should use provider: "auto" and let Seashail handle routing.

When to Use Explicit Provider Selection

You might explicitly choose a provider when:

  • You want to use 1inch for EVM swaps (requires 1inch API configuration)
  • You're comparing routes across providers
  • You have a specific requirement for a particular aggregator

Usage Examples

Swap on Solana (auto-selects Jupiter):

{
  "chain": "solana",
  "token_in": "native",
  "token_out": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "amount_in": "1",
  "amount_units": "ui",
  "provider": "auto"
}

Swap on Base (auto-selects Uniswap):

{
  "chain": "base",
  "token_in": "native",
  "token_out": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "amount_in": "0.1",
  "amount_units": "ui",
  "provider": "auto"
}

Explicit Provider Selection

Use Jupiter explicitly on Solana:

{
  "chain": "solana",
  "token_in": "native",
  "token_out": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "amount_in": "1",
  "amount_units": "ui",
  "provider": "jupiter"
}

Use Uniswap explicitly on Ethereum:

{
  "chain": "ethereum",
  "token_in": "native",
  "token_out": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  "amount_in": "0.1",
  "amount_units": "ui",
  "provider": "uniswap"
}

Use 1inch explicitly on Arbitrum (requires 1inch configuration):

{
  "chain": "arbitrum",
  "token_in": "native",
  "token_out": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
  "amount_in": "0.1",
  "amount_units": "ui",
  "provider": "1inch"
}

See Also

On this page