Chuyển đến nội dung chính

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.

Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Trade API là một bộ điểm cuối đơn giản trên transaction-v1.raydium.io (và một số đường dẫn được sao chép trên api-v3.raydium.io) giúp lấy giá swap, xây dựng giao dịch Solana đã ký, và trả về nó trong một lần làm tròn. Đây là cùng một giao diện mà Raydium UI sử dụng. Hãy sử dụng nó khi bạn muốn định tuyến Raydium mà không cần bao gồm TS SDK — backends, Blinks handlers, chatbot Telegram, ứng dụng bên thứ ba.

Khi nào sử dụng Trade API so với SDK

Bạn muốn…Sử dụng
Tích hợp swap vào backend không thể bao gồm npm packages (ví dụ: bot Python, dịch vụ Go, dịch vụ Rust)Trade API
Render swap Blink trong bài viết xã hộiTrade API
Xây dựng ứng dụng trình duyệt nơi tiết kiệm kilobyte là quan trọngTrade API
Nhúng logic định tuyến bên trong chương trình Solana khác (CPI)Không — sử dụng sdk-api/rust-cpi
Xây dựng client giống DEX đầy đủ với xem trước tuyến tùy chỉnh, lớp phủ biểu đồ, heuristics phí ưu tiênTS SDK
Cần định giá ngoại tuyến xác định mà không có lượt vòng mạngTS SDK (với trạng thái pool cục bộ)
SDK phong phú hơn; Trade API đơn giản hơn. Cả hai bao bọc các chương trình CPMM/CLMM/AMM v4 cơ bản giống nhau, vì vậy lệnh swap trên chuỗi kết quả là giống hệt nhau.

Ba điểm cuối

1. GET /compute/swap-base-in

Với một số tiền đầu vào, chọn một tuyến và trả về một báo giá.
GET https://transaction-v1.raydium.io/compute/swap-base-in
  ?inputMint=So11111111111111111111111111111111111111112
  &outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  &amount=1000000000
  &slippageBps=50
  &txVersion=V0
Phản hồi:
{
  "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..." }
    ]
  }
}
Trường id là một xử lý báo giá không rõ được chuyển đến điểm cuối tiếp theo. Báo giá ổn định trong khoảng 30 giây; sau đó, hãy lấy giá lại.

2. GET /compute/swap-base-out

Dạng đảo: “Tôi muốn nhận chính xác N của đầu ra; hãy báo giá cho tôi đầu vào cần thiết.”
GET /compute/swap-base-out
  ?inputMint=<MINT_IN>
  &outputMint=<MINT_OUT>
  &amount=<DESIRED_OUTPUT_AMOUNT>
  &slippageBps=50
  &txVersion=V0
Hình dạng phản hồi đối xứng với swap-base-in; ngữ nghĩa trường amount lật ngược.

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

Lấy báo giá từ bước 1 và trả về giao dịch phiên bản đã ký sẵn sàng:
POST https://transaction-v1.raydium.io/transaction/swap-base-in
Content-Type: application/json

{
  "computeUnitPriceMicroLamports": "50000",
  "swapResponse": { ... paste the data object from swap-base-in ... },
  "txVersion": "V0",
  "wallet": "<user_pubkey>",
  "wrapSol": true,
  "unwrapSol": false,
  "inputAccount": "<optional_token_account>",
  "outputAccount": "<optional_token_account>"
}
Phản hồi:
{
  "id": "9f1c...",
  "success": true,
  "version": "V1",
  "data": [
    { "transaction": "<base64-encoded-versioned-transaction>" }
  ]
}
Nhiều giao dịch có thể được trả về nếu swap yêu cầu thiết lập (ví dụ: tạo ATA, bao SOL). Ký và gửi chúng theo thứ tự.

Ví dụ đầu cuối tối thiểu (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([...]))    # your signer

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}")
Đây là khoảng 20 dòng. Phương pháp tương đương với TS SDK là khoảng 30 dòng nhưng cung cấp cho bạn kiểm soát phong phú hơn (bộ chọn tuyến tùy chỉnh, ngân sách Compute Unit trên mỗi pool, siêu dữ liệu lỗi chi tiết).

Định tuyến và lựa chọn pool

Trade API định tuyến trên tất cả chương trình Raydium (CPMM, CLMM, AMM v4) và chọn thực thi tốt nhất cho kích thước được báo giá. Đặc điểm:
  • Hỗ trợ multi-hop. Swap SOL→USDC có thể định tuyến qua wSOL→JUP→USDC nếu đó là giá rẻ hơn.
  • Chia nhỏ nhiều pool cùng chương trình không được hỗ trợ. Một báo giá duy nhất đi qua chính xác một tuyến; nếu bạn muốn chia nhỏ kích thước trên các pool, hãy làm điều đó phía client (hai báo giá, hai txs).
  • Ổn định so với tập trung. Bộ định tuyến ưu tiên sử dụng CLMM khi thanh khoản nằm trong phạm vi đủ, quay lại CPMM cho các cặp đuôi dài.
  • Bao gồm AMM v4. Các pool AMM v4 được bao gồm trong định tuyến nhưng chỉ được chọn khi chúng cung cấp giá tốt hơn các giải pháp CPMM/CLMM.
Để buộc định tuyến thông qua một pool cụ thể, hãy sử dụng SDK thay vì — Trade API không public một tham số pool-pin.

Tham số referrer

Thêm &referrer=<wallet_pubkey> vào điểm cuối tính toán để lấy 1% cắt giá giới thiệu trên swap. Xem user-flows/referrals-and-blinks cho ngữ nghĩa. Khi có:
  • referrerAmount trong phản hồi báo giá là số tiền tuyệt đối (trong mint đầu vào) sẽ được định tuyến đến người giới thiệu.
  • Giao dịch cuối cùng chứa một chuyển token SPL bổ sung đến ATA của người giới thiệu.

Phí ưu tiên

computeUnitPriceMicroLamports trong yêu cầu xây dựng đặt phí ưu tiên cho giao dịch được trả về. Nguyên tắc chung:
  • 50_000 (0.00005 lamports/CU × 200k CU ≈ 0.00001 SOL): tối thiểu, tốt cho những khoảnh khắc không tắc nghẽn.
  • 200_000: tắc nghẽn vừa phải.
  • 1_000_000: tắc nghẽn nặng.
Để điều chỉnh thích ứng, hãy gọi getRecentPrioritizationFees trên RPC của bạn trước tiên và chuyển giá trị trung bình. Xem integration-guides/priority-fee-tuning.

Phiên bản giao dịch

  • "V0" trả về giao dịch phiên bản (MessageV0) với bảng tra cứu cho các tài khoản chung. Nhỏ hơn, nhanh hơn. Được khuyến cáo.
  • "LEGACY" trả về giao dịch legacy. Lớn hơn; chỉ sử dụng nếu ví/cơ sở hạ tầng của bạn không xử lý V0.

Hình dạng lỗi

API trả về HTTP 200 với success: false cho các lỗi logic, HTTP 4xx/5xx cho các lỗi vận chuyển / cơ sở hạ tầng. Lỗi logic phổ biến:
  • "No route found" — không có đường dẫn giữa hai mint ở kích thước này. Giảm amount hoặc xem xét lại cặp.
  • "Insufficient liquidity" — một tuyến tồn tại nhưng sẽ vượt quá slippageBps. Mở rộng slippage.
  • "Quote expired"swapResponse cũ hơn 30 giây. Lấy giá lại.
  • "Unsupported mint" — mint không nằm trong vũ trụ Raydium (không được liệt kê hoặc trên chương trình không dùng nữa).

Giới hạn tốc độ

  • Điểm cuối báo giá: 120 req/phút trên mỗi IP.
  • Điểm cuối xây dựng: 60 req/phút trên mỗi IP (chi phí cao hơn trên máy chủ).
  • Vượt quá giới hạn trả về HTTP 429 với tiêu đề Retry-After.
Để có thông lượng cao hơn, hãy liên hệ với các quan hệ nhà phát triển Raydium; khóa cấp aggregator có sẵn.

Mô hình kiến trúc cho những người tích hợp

┌─────────────┐   quote   ┌───────────────┐   build   ┌───────────────┐   sign/send   ┌──────────┐
│ Your front  │──────────►│ Trade API     │──────────►│ Trade API     │──────────────►│ Solana   │
│   end       │◄──────────│ /compute/...  │◄──────────│ /transaction/ │               │   RPC    │
└─────────────┘           └───────────────┘           └───────────────┘               └──────────┘
                              (stateless)                 (stateless)
Tất cả đều không có trạng thái — điều duy nhất bạn cần truyền giữa cuộc gọi báo giá và cuộc gọi xây dựng là chính nội dung phản hồi báo giá.

Bước tiếp theo

Nguồn:
  • transaction-v1.raydium.io điểm cuối trực tiếp.
  • Kiểm tra thẻ mạng Raydium UI (cùng một bề mặt được tiêu thụ).