Skip to content

Solana

Solana is supported as a first-class chain in Suwappu with its own dedicated swap routing through the Jupiter aggregator.

PropertyValue
Chain TypeSolana
Keysolana
Aliassol
Native TokenSOL
Address FormatBase58 (not 0x)
Token StandardSPL

Key Differences from EVM

  • Wallet addresses are Base58-encoded (e.g., 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU), not hexadecimal 0x addresses.
  • Token addresses are also Base58-encoded (e.g., EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v for USDC).
  • Managed wallets for Solana are separate from EVM wallets. When you create a wallet via POST /wallets, the response includes a chain_type field indicating "solana" or "evm".
  • Swap routing uses the Jupiter aggregator instead of Li.Fi.
  • Quote responses for Solana return price_impact and route fields instead of exchange_rate and gas_usd.

Common Tokens

TokenAddressDecimals
SOLSo111111111111111111111111111111111111111129
WSOLSo111111111111111111111111111111111111111129
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6
USDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB6
BONKDezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB2635
WIFEKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm6
JUPJUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN6
RAY4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R6
PYTHHZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt36
JTOjtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL9
ORCAorcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE6
MNDEMNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey9
MSOLmSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So9
JITOSOLJ1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn9

Note: SOL and WSOL share the same mint address. The API handles wrapping and unwrapping automatically when needed for swaps.

Example: Swap SOL to USDC on Solana

Get a Quote

-kw">curl -X POST https://api.suwappu.bot/v1/agent/quote \

-H -str">"Authorization: Bearer suwappu_sk_your_api_key" \

-H -str">"Content-Type: application/json" \

-d -str">'{

-str">"from_token": -str">"SOL",

-str">"to_token": -str">"USDC",

-str">"amount": -str">"1.0",

-str">"chain": -str">"solana"

}'

#### Example Response

{

"hl-key">"success": true,

"hl-key">"quote_id": "qt_sol_a1b2c3d4",

"hl-key">"from_token": "SOL",

"hl-key">"to_token": "USDC",

"hl-key">"amount": "1.0",

"hl-key">"expected_output": "142.85",

"hl-key">"price_impact": "0.02",

"hl-key">"route": ["SOL", "USDC"],

"hl-key">"chain": "solana",

"hl-key">"expires_at": "2026-03-07T12:05:00Z"

}

Note that Solana quotes include price_impact (percentage) and route (swap path) instead of the EVM fields exchange_rate and gas_usd.

Execute the Swap

-kw">curl -X POST https://api.suwappu.bot/v1/agent/swap/execute \

-H -str">"Authorization: Bearer suwappu_sk_your_api_key" \

-H -str">"Content-Type: application/json" \

-d -str">'{-str">"quote_id": -str">"qt_sol_a1b2c3d4"}'

Python Example

import requests

API_KEY = class="hl-str">"suwappu_sk_your_api_key"

BASE_URL = class="hl-str">"https:class="hl-commentclass="hl-str">">//api.suwappu.bot/v1/agent"

headers = {class="hl-str">"Authorization": fclass="hl-str">"Bearer {API_KEY}"}

class=class="hl-str">"hl-comment"># Get a quote for SOL → USDC

quote = requests.post(

fclass="hl-str">"{BASE_URL}/quote",

headers=headers,

json={

class="hl-str">"from_token": class="hl-str">"SOL",

class="hl-str">"to_token": class="hl-str">"USDC",

class="hl-str">"amount": class="hl-str">"2.5",

class="hl-str">"chain": class="hl-str">"solana",

},

).json()

print(fclass="hl-str">"Expected output: {quote[class="hl-str">'expected_output']} USDC") print(fclass="hl-str">"Price impact: {quote[class="hl-str">'price_impact']}%") class=class="hl-str">"hl-comment"># Execute the swap

swap = requests.post(

fclass="hl-str">"{BASE_URL}/swap/execute",

headers=headers,

json={class="hl-str">"quote_id": quote[class="hl-str">"quote_id"]},

).json()

print(fclass="hl-str">"Swap ID: {swap[class="hl-str">'swap_id']}, Status: {swap[class="hl-str">'status']}")

TypeScript Example

const API_KEY = class="hl-str">"suwappu_sk_your_api_key";
const BASE_URL = class="hl-str">"https:class="hl-commentclass="hl-str">">//api.suwappu.bot/v1/agent";
const headers = {

Authorization: Bearer ${API_KEY},

class="hl-str">"Content-Type": class="hl-str">"application/json",

};

class=class="hl-str">"hl-comment">// Get a quote for SOL → USDC const quoteRes = await fetch(${BASE_URL}/quote, {

method: class="hl-str">"POST",

headers,

body: JSON.stringify({

from_token: class="hl-str">"SOL",

to_token: class="hl-str">"USDC",

amount: class="hl-str">"2.5",

chain: class="hl-str">"solana",

}),

});

const quote = await quoteRes.json();

console.log(Expected output: ${quote.expected_output} USDC);

console.log(Price impact: ${quote.price_impact}%);

class=class="hl-str">"hl-comment">// Execute the swap const swapRes = await fetch(${BASE_URL}/swap/execute, {

method: class="hl-str">"POST",

headers,

body: JSON.stringify({ quote_id: quote.quote_id }),

});

const swap = await swapRes.json();

console.log(Swap ID: ${swap.swap_id}, Status: ${swap.status});

Discovering Solana Tokens

Use the tokens endpoint to find available Solana tokens:

-kw">curl -str">"https://api.suwappu.bot/v1/agent/tokens?chain=solana" \

-H -str">"Authorization: Bearer suwappu_sk_your_api_key"