Endpoint-level docs live in the API Reference tab. Every endpoint there has an interactive Try it panel powered by Mintlify’s OpenAPI playground — fill in parameters in the browser and hit live mainnet (or devnet, where available) directly. This page is the narrative companion: what services exist, when to use which, and the conventions that span all of them. If you are looking for “what does
GET /pools/info/ids accept”, click through to API Reference; if you are looking for “which service should I integrate”, read on.The eleven services at a glance
Raydium runs eleven public HTTP services. Each is documented as its own group in the API Reference tab and has an OpenAPI spec backing the interactive playground.
Versioning lives in the hostname for the v3 / v1 services — there is no further path-level versioning. Breaking changes ship as a new host with overlap; the team has publicly committed to at least 6 months of overlap on any v3 → v4 migration.
Pick a service
Cross-cutting conventions
Response envelope
Every service except IPFS returns the same JSON envelope:error.code integer (API v3 uses this for stable error identifiers across minor versions). See each service’s overview page for the exact shape.
Authentication
Two patterns appear:- No auth — every service except Forum. Hit them anonymously over HTTPS.
- Wallet-signed handshake — required by LaunchLab Forum API. Sign a Solana ed25519 message of the form
time:<unix-seconds>with your wallet, send the signature + wallet address to LaunchLab Auth API/request-token, receive a JWT back, and pass it as theray-tokenrequest header on subsequent forum calls.
ray-token in the auth panel before sending forum requests; the value is held in your browser only.
Rate limits
All hosts sit behind Cloudflare with progressive rate limiting per source IP. Published guidance for integrators: Bursts above the published limits returnHTTP 429 with a Retry-After header. Aggregators or bots that need higher limits should contact the Raydium team rather than hammering the public hosts — running your own indexer against the on-chain program IDs is also an option for read-heavy workloads.
Caching and consistency
- Most API v3 read endpoints are cached at the edge for 5–60 seconds; specific TTLs are noted on each endpoint’s API Reference page.
- The cache is invalidated by the indexer on program-touching events it observes.
- During large reorgs or congestion, there can be a 1–2 slot divergence between the API’s view and on-chain state. The SDK and direct RPC reads are always more current — if a client is about to sign a transaction, re-fetch the relevant accounts via RPC, never trust an API value blind.
Error format
Errors come back as HTTP 4xx/5xx with the same envelope (success: false, populated msg). API v3 additionally includes a stable error.code:
error.code is stable across minor API versions; treat it as the primary signal in client logic and msg as the human-readable surface.
Mint-pair argument convention
Many API v3 endpoints acceptmint1=…&mint2=… and require mint1 < mint2 (ascending pubkey byte order). This is so the API can return the same canonical pool regardless of caller’s preferred argument order. Sort the two mints client-side before building the URL — endpoint-level docs in API Reference repeat this constraint where it applies.
Recommended client patterns
- Hydrate once, refresh lazily. Pull
GET /main/infoandGET /mint/list(both on API v3) at app load and cache locally with a 1-hour TTL. Both are heavily edge-cached and rarely change. - Bulk where the endpoint allows it.
GET /pools/info/ids?ids=…accepts a comma-separated list — fetch ten pools in one request, not ten requests. - Avoid hot-path price fetches.
GET /mint/priceis fine for UI rendering; never loop it in a bot. For trading bots, run an indexer or subscribe to RPCprogramSubscribeevents directly. - Mirror or proxy for high throughput. Anything over the published rate-limit ceiling should be served from your own cache layer, not directly off the public hosts. Aggregators with sustained
>120 req/minagainsttransaction-v1should be running their own quote / route engine. - Re-fetch right before signing. API responses can be 5–60s stale. For an actually-correct pool snapshot at sign time, re-read the relevant accounts via the SDK or a direct RPC
getMultipleAccountscall. Treat API values as a lookup hint, not a settlement source. - Use the Transaction API for low-friction integration. If you do not want to bundle the SDK in your client (mobile native, bot in a constrained environment), the Transaction API will return a base64-encoded versioned transaction for the user to sign. The
swapResponseit returns embeds a quote — treat it as valid for ~30 seconds.
Where to go next
- Endpoint reference (interactive) — API Reference. Every service has its own group; click any endpoint for parameters, response shape, code samples, and a Try-it panel.
- TypeScript SDK —
sdk-api/typescript-sdk. The SDK consumes API v3 internally for several paths; for transaction building it always re-fetches state from RPC, never trusts the API blind. - Trade API integration —
integration-guides/aggregator. Patterns for wiring Raydium liquidity into a multi-DEX aggregator. - AI-friendly docs —
sdk-api/ai-integration. Pointers for AI coding agents that need to call these APIs.

