Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Trade API adalah sekumpulan endpoint tipis di transaction-v1.raydium.io (dan beberapa path yang dicerminkan di api-v3.raydium.io) yang mengutip swap, membangun transaksi Solana yang siap ditandatangani, dan mengembalikannya dalam satu putaran. Ini adalah permukaan yang sama yang digunakan Raydium UI. Gunakan ketika Anda menginginkan routing Raydium tanpa mengikat TS SDK — backend, handler Blink, bot Telegram, aplikasi pihak ketiga.

Kapan menggunakan Trade API vs SDK

Anda ingin…Gunakan
Mengintegrasikan swap ke backend yang tidak dapat mengikat paket npm (misalnya bot Python, layanan Go, layanan Rust)Trade API
Merender swap Blink dalam posting media sosialTrade API
Membangun aplikasi browser di mana menghemat kilobyte pentingTrade API
Menyematkan logika routing di dalam program Solana lain (CPI)Tidak satupun — gunakan /id/sdk-api/rust-cpi
Membangun klien mirip DEX penuh dengan pratinjau rute kustom, overlay bagan, heuristik biaya prioritasTS SDK
Membutuhkan pengutipan offline deterministik tanpa putaran jaringanTS SDK (dengan status pool lokal)
SDK lebih kaya; Trade API lebih sederhana. Keduanya membungkus program CPMM/CLMM/AMM v4 yang mendasarinya, jadi swap on-chain yang dihasilkan identik.

Tiga endpoint

1. GET /compute/swap-base-in

Diberikan jumlah input, pilih rute dan kembalikan kutipan.
GET https://transaction-v1.raydium.io/compute/swap-base-in
  ?inputMint=So11111111111111111111111111111111111111112
  &outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  &amount=1000000000
  &slippageBps=50
  &txVersion=V0
Respons:
{
  "id": "b2e4...",
  "success": true,
  "version": "V1",
  "data": {
    "swapType": "BaseIn",
    "inputMint":  "So11111111111111111111111111111111111111112",
    "inputAmount":  "1000000000",
    "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "outputAmount": "165234567",
    "otherAmountThreshold": "164408394",
    "slippageBps": 50,
    "priceImpactPct": 0.0012,
    "referrerAmount": "0",
    "routePlan": [
      { "poolId": "58oQ...", "inputMint": "So11...", "outputMint": "USDC...", "feeAmount": "2500000", "feeMint": "So11..." }
    ]
  }
}
Bidang id adalah penangani kutipan opak yang dilewatkan ke endpoint berikutnya. Kutipan stabil selama ~30 detik; setelah itu, minta kutipan ulang.

2. GET /compute/swap-base-out

Bentuk terbalik: “Saya ingin menerima persis N dari output; berikan saya input yang diperlukan.”
GET /compute/swap-base-out
  ?inputMint=<MINT_IN>
  &outputMint=<MINT_OUT>
  &amount=<DESIRED_OUTPUT_AMOUNT>
  &slippageBps=50
  &txVersion=V0
Bentuk respons simetris dengan swap-base-in; semantik bidang amount berflip.

3. POST /transaction/swap-base-in dan /transaction/swap-base-out

Mengambil kutipan dari langkah 1 dan mengembalikan transaksi versioned yang siap ditandatangani:
POST https://transaction-v1.raydium.io/transaction/swap-base-in
Content-Type: application/json

{
  "computeUnitPriceMicroLamports": "50000",
  "swapResponse": { ... tempel objek data dari swap-base-in ... },
  "txVersion": "V0",
  "wallet": "<user_pubkey>",
  "wrapSol": true,
  "unwrapSol": false,
  "inputAccount": "<optional_token_account>",
  "outputAccount": "<optional_token_account>"
}
Respons:
{
  "id": "9f1c...",
  "success": true,
  "version": "V1",
  "data": [
    { "transaction": "<base64-encoded-versioned-transaction>" }
  ]
}
Beberapa transaksi dapat dikembalikan jika swap memerlukan pengaturan (misalnya membuat ATA, membungkus SOL). Tandatangani dan kirim dalam urutan.

Contoh end-to-end minimal (Python)

import base64, requests
from solders.transaction import VersionedTransaction
from solders.keypair import Keypair
from solana.rpc.api import Client

rpc = Client("https://api.mainnet-beta.solana.com")
kp = Keypair.from_bytes(bytes([...]))    # penanda Anda

SOL  = "So11111111111111111111111111111111111111112"
USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

quote = requests.get(
    "https://transaction-v1.raydium.io/compute/swap-base-in",
    params={
        "inputMint": SOL, "outputMint": USDC,
        "amount": 1_000_000_000, "slippageBps": 50, "txVersion": "V0",
    },
).json()

built = requests.post(
    "https://transaction-v1.raydium.io/transaction/swap-base-in",
    json={
        "computeUnitPriceMicroLamports": "50000",
        "swapResponse": quote,
        "txVersion": "V0",
        "wallet": str(kp.pubkey()),
        "wrapSol": True,
        "unwrapSol": False,
    },
).json()

for entry in built["data"]:
    raw = base64.b64decode(entry["transaction"])
    tx = VersionedTransaction.from_bytes(raw)
    tx.sign([kp])
    sig = rpc.send_raw_transaction(bytes(tx)).value
    print(f"Sent: {sig}")
Ini adalah ~20 baris. Ekuivalen dengan TS SDK adalah ~30 tetapi memberi Anda kontrol yang lebih kaya (pemilih rute kustom, anggaran Compute Unit per pool, metadata kesalahan terperinci).

Routing dan pemilihan pool

Trade API melakukan routing di seluruh semua program Raydium (CPMM, CLMM, AMM v4) dan memilih eksekusi terbaik untuk ukuran yang dikutip. Karakteristik:
  • Multi-hop didukung. Swap SOL→USDC dapat merutekan melalui wSOL→JUP→USDC jika lebih murah.
  • Pemisahan multi-pool program yang sama tidak didukung. Satu kutipan melewati tepat satu jalur; jika Anda ingin membagi ukuran antar pool, lakukan secara client-side (dua kutipan, dua tx).
  • Stabil vs terkonsentrasi. Router lebih suka menggunakan CLMM ketika likuiditas in-range cukup, kembali ke CPMM untuk pasangan long-tail.
  • Inklusi AMM v4. Pool AMM v4 termasuk dalam routing tetapi hanya dipilih ketika menawarkan harga yang lebih baik daripada alternatif CPMM/CLMM.
Untuk memaksa routing melalui pool tertentu, gunakan SDK sebagai gantinya — Trade API tidak membuka parameter pool-pin.

Parameter referrer

Tambahkan &referrer=<wallet_pubkey> ke endpoint compute untuk mengambil potongan referral 1% pada swap. Lihat /id/user-flows/referrals-and-blinks untuk semantik. Ketika hadir:
  • referrerAmount dalam respons kutipan adalah jumlah absolut (dalam input mint) yang akan dialihkan ke referrer.
  • Transaksi akhir berisi transfer token SPL tambahan ke ATA referrer.

Biaya prioritas

computeUnitPriceMicroLamports dalam permintaan build menetapkan biaya prioritas untuk transaksi yang dikembalikan. Aturan praktis:
  • 50_000 (0,00005 lamports/CU × 200k CU ≈ 0,00001 SOL): minimal, bagus untuk momen non-kemacetan.
  • 200_000: kemacetan sedang.
  • 1_000_000: kemacetan berat.
Untuk penyetelan adaptif, panggil getRecentPrioritizationFees di RPC Anda terlebih dahulu dan lewatkan median. Lihat /id/integration-guides/priority-fee-tuning.

Versi transaksi

  • "V0" mengembalikan transaksi versioned (MessageV0) dengan tabel pencarian untuk akun umum. Lebih kecil, lebih cepat. Direkomendasikan.
  • "LEGACY" mengembalikan transaksi legacy. Lebih besar; hanya gunakan jika dompet/infra Anda tidak menangani V0.

Bentuk kesalahan

API mengembalikan HTTP 200 dengan success: false untuk kesalahan logis, HTTP 4xx/5xx untuk kesalahan transport / infra. Kesalahan logis umum:
  • "No route found" — tidak ada jalur antara dua mint pada ukuran ini. Kurangi amount atau pertimbangkan kembali pasangan.
  • "Insufficient liquidity" — rute ada tetapi akan melampaui slippageBps. Perluas slippage.
  • "Quote expired"swapResponse adalah >30s lama. Minta kutipan ulang.
  • "Unsupported mint" — mint tidak ada di alam semesta Raydium (unlisted, atau di program usang).

Batasan tingkat

  • Endpoint kutipan: 120 req/min per IP.
  • Endpoint build: 60 req/min per IP (biaya lebih tinggi di server).
  • Melampaui batas mengembalikan HTTP 429 dengan header Retry-After.
Untuk throughput lebih tinggi hubungi hubungan pengembang Raydium; kunci tingkat agregator tersedia.

Pola arsitektur untuk integrator

┌─────────────┐   quote   ┌───────────────┐   build   ┌───────────────┐   sign/send   ┌──────────┐
│ Front-end   │──────────►│ Trade API     │──────────►│ Trade API     │──────────────►│ Solana   │
│ Anda        │◄──────────│ /compute/...  │◄──────────│ /transaction/ │               │   RPC    │
└─────────────┘           └───────────────┘           └───────────────┘               └──────────┘
                              (stateless)                 (stateless)
Semuanya stateless — satu-satunya hal yang perlu Anda lewatkan antara panggilan kutipan dan panggilan build adalah badan respons kutipan itu sendiri.

Kemana selanjutnya

Sumber:
  • Endpoint langsung transaction-v1.raydium.io.
  • Inspeksi tab jaringan Raydium UI (permukaan yang sama dikonsumsi).