---
name: raydium
creator: raunit-dev
description: Complete Raydium Protocol SDK - the single source of truth for integrating Raydium on Solana. Covers SDK, Trade API, CLMM, CPMM, AMM pools, LaunchLab token launches, farming, CPI integration, and all Raydium tools.
---

# Raydium Protocol - Complete Integration Guide

The definitive guide for integrating Raydium - Solana's leading AMM and liquidity infrastructure powering DeFi since 2021.

## What is Raydium?

Raydium is a decentralized exchange on Solana providing:
- **Token Swapping** - Fast, cheap swaps via smart routing across all pool types
- **Liquidity Provision** - Earn trading fees and rewards by providing liquidity
- **Token Launches** - LaunchLab for permissionless token launches with bonding curves
- **Perpetual Trading** - Leverage trading on crypto assets

### Key Statistics
- Most widely integrated liquidity infrastructure on Solana
- 35,000+ tokens launched via LaunchLab (2025)
- Multiple pool types for different use cases

## Core Products

### Pool Types
| Type | Description | Best For |
|------|-------------|----------|
| **CLMM** | Concentrated Liquidity Market Maker | Professional LPs, stablecoin pairs, active management |
| **CPMM** | Constant Product (x*y=k) with Token22 | New token launches, simple integrations |
| **AMM V4** | Classic AMM + OpenBook CLOB | Existing markets, hybrid liquidity |

### Additional Features
- **LaunchLab** - Permissionless token launches with bonding curves
- **Farms** - Yield farming and staking rewards
- **Burn & Earn** - Permanent liquidity locking
- **Trade API** - HTTP API for swap routing

## API Overview

### 1. SDK (TypeScript)
**Package:** `@raydium-io/raydium-sdk-v2`

For programmatic integration with full control over pools, positions, and transactions.

### 2. Trade API (HTTP)
**Base URL:** `https://transaction-v1.raydium.io`

For swap routing - get quotes and serialized transactions via HTTP.

### 3. Data API
**Base URL:** `https://api-v3.raydium.io`

For pool data, token lists, farm info, and configurations.

## Quick Start

### Installation

```bash
npm install @raydium-io/raydium-sdk-v2
# or
yarn add @raydium-io/raydium-sdk-v2
```

### Basic Setup

```typescript
import { Raydium } from '@raydium-io/raydium-sdk-v2';
import { Connection, Keypair } from '@solana/web3.js';
import bs58 from 'bs58';

// Setup connection and wallet
const connection = new Connection('https://api.mainnet-beta.solana.com');
const owner = Keypair.fromSecretKey(bs58.decode('YOUR_SECRET_KEY'));

// Initialize SDK
const raydium = await Raydium.load({
  connection,
  owner,
  cluster: 'mainnet',
  disableLoadToken: false, // Load token list
});

// Access token data
const tokenList = raydium.token.tokenList;
const tokenMap = raydium.token.tokenMap;

// Access account data
const tokenAccounts = raydium.account.tokenAccounts;
```

## Pool Types

### CLMM (Concentrated Liquidity)

Allows LPs to concentrate liquidity in specific price ranges for higher capital efficiency.

```typescript
// Fetch CLMM pool
const poolId = 'POOL_ID_HERE';
const poolInfo = await raydium.clmm.getPoolInfoFromRpc(poolId);

// Or from API (mainnet only)
const poolData = await raydium.api.fetchPoolById({ ids: poolId });
```

### CPMM (Constant Product)

Simplified AMM without OpenBook market requirement, supports Token22.

```typescript
// Fetch CPMM pool
const cpmmPool = await raydium.cpmm.getPoolInfoFromRpc(poolId);
```

### AMM (Legacy)

Classic AMM integrated with OpenBook central limit order book.

```typescript
// Fetch AMM pool
const ammPool = await raydium.liquidity.getPoolInfoFromRpc({ poolId });
```

## Core Operations

### Swap

```typescript
import { CurveCalculator } from '@raydium-io/raydium-sdk-v2';

// Calculate swap
const { amountOut, fee } = CurveCalculator.swapBaseInput({
  poolInfo,
  amountIn: 1000000n, // lamports
  mintIn: inputMint,
  mintOut: outputMint,
});

// Execute CPMM swap
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount: 1000000n,
  inputMint,
  slippage: 0.01, // 1%
  txVersion: 'V0',
});

await execute({ sendAndConfirm: true });
```

### Add Liquidity

```typescript
// CPMM deposit
const { execute } = await raydium.cpmm.addLiquidity({
  poolInfo,
  inputAmount: 1000000n,
  baseIn: true,
  slippage: 0.01,
});

await execute({ sendAndConfirm: true });
```

### Create Pool

```typescript
// Create CPMM pool
const { execute } = await raydium.cpmm.createPool({
  mintA,
  mintB,
  mintAAmount: 1000000n,
  mintBAmount: 1000000n,
  startTime: new BN(0),
  feeConfig, // from API
  txVersion: 'V0',
});

const { txId } = await execute({ sendAndConfirm: true });
```

## Program IDs

| Program | Mainnet | Devnet |
|---------|---------|--------|
| AMM | `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` | `DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav` |
| CLMM | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | `devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH` |
| CPMM | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | `CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW` |

## API Endpoints

```typescript
// Mainnet API
const API_URL = 'https://api-v3.raydium.io';

// Devnet API
const DEVNET_API = 'https://api-v3.raydium.io/main/';

// Common endpoints
const endpoints = {
  tokenList: '/mint/list',
  poolList: '/pools/info/list',
  poolById: '/pools/info/ids',
  farmList: '/farms/info/list',
  clmmConfigs: '/clmm/configs',
};
```

## Transaction Options

```typescript
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount,
  inputMint,
  slippage: 0.01,
  txVersion: 'V0', // or 'LEGACY'
  computeBudgetConfig: {
    units: 600000,
    microLamports: 100000, // priority fee
  },
});

// Execute with options
const { txId } = await execute({
  sendAndConfirm: true,
  skipPreflight: true,
});

console.log(`https://solscan.io/tx/${txId}`);
```

## Key Features

| Feature | CLMM | CPMM | AMM |
|---------|------|------|-----|
| Concentrated Liquidity | Yes | No | No |
| Token22 Support | Limited | Yes | No |
| OpenBook Required | No | No | Yes |
| Custom Price Ranges | Yes | No | No |
| LP NFT Positions | Yes | No | No |

## LaunchLab (New)

LaunchLab simplifies token launches on Solana with customizable bonding curves:

```typescript
// Create token with bonding curve via LaunchLab
const { execute } = await raydium.launchLab.createToken({
  name: "My Token",
  symbol: "MTK",
  uri: "https://arweave.net/metadata.json",
  initialSupply: 1_000_000_000n,
  bondingCurve: "linear", // or "exponential"
  graduationThreshold: 85_000_000_000n, // 85 SOL
  txVersion: "V0",
});

const { txId } = await execute({ sendAndConfirm: true });
```

### Bonding Curve Migration

Tokens automatically migrate to AMM pools once they hit the graduation threshold (default: 85 SOL). Creators earn 10% of trading fees post-migration.

### Key Milestones (2025)
- **35,000+** tokens launched via LaunchLab
- **Orb Explorer** launched for on-chain analytics

## V3 Protocol (Coming)

Raydium V3 introduces a hybrid liquidity model combining:
- AMM pools with OpenBook's decentralized order book
- Access to **40% more liquidity** across Solana DeFi
- Enhanced capital efficiency for LPs

## Resources

- **SDK**: https://github.com/raydium-io/raydium-sdk-V2
- **Demos**: https://github.com/raydium-io/raydium-sdk-V2-demo
- **IDL**: https://github.com/raydium-io/raydium-idl
- **CLMM Program**: https://github.com/raydium-io/raydium-clmm
- **CPMM Program**: https://github.com/raydium-io/raydium-cp-swap
- **AMM Program**: https://github.com/raydium-io/raydium-amm
- **CPI Examples**: https://github.com/raydium-io/raydium-cpi

## Skill Structure

```
raydium/
├── SKILL.md                      # This file - complete integration guide
├── resources/
│   ├── sdk-api-reference.md      # Complete SDK API
│   ├── trade-api.md              # HTTP Trade API reference
│   ├── program-ids.md            # All program addresses
│   ├── pool-types.md             # Pool type comparison
│   ├── launchlab.md              # LaunchLab documentation
│   └── github-repos.md           # GitHub repositories reference
├── examples/
│   ├── swap/README.md            # Token swap examples
│   ├── clmm-pool/README.md       # CLMM pool creation
│   ├── clmm-position/README.md   # CLMM position management
│   ├── cpmm-pool/README.md       # CPMM pool operations
│   ├── liquidity/README.md       # Liquidity management
│   ├── farming/README.md         # Farming and staking
│   └── launchlab/README.md       # LaunchLab token launches
├── templates/
│   └── raydium-setup.ts          # SDK setup template
└── docs/
    ├── clmm-guide.md             # CLMM deep dive
    └── troubleshooting.md        # Common issues
```

## GitHub Repositories

| Repository | Description |
|------------|-------------|
| [raydium-sdk-V2](https://github.com/raydium-io/raydium-sdk-V2) | TypeScript SDK |
| [raydium-sdk-V2-demo](https://github.com/raydium-io/raydium-sdk-V2-demo) | SDK examples |
| [raydium-clmm](https://github.com/raydium-io/raydium-clmm) | CLMM program (Rust) |
| [raydium-cp-swap](https://github.com/raydium-io/raydium-cp-swap) | CPMM program (Rust) |
| [raydium-amm](https://github.com/raydium-io/raydium-amm) | AMM V4 program (Rust) |
| [raydium-cpi](https://github.com/raydium-io/raydium-cpi) | CPI integration examples |
| [raydium-idl](https://github.com/raydium-io/raydium-idl) | IDL definitions |

## Verify

- A real RPC/SDK call was issued (mainnet, devnet, or local validator) and the response payload is captured in the transcript, not just paraphrased
- Every transaction was simulated (`simulateTransaction` or equivalent) before any signing/sending step; simulation logs are attached
- For any signed/sent transaction, the resulting signature is recorded and confirmed on chain (status returned by `getSignatureStatuses` or an explorer URL)
- Slippage, priority-fee, and compute-unit limits were set explicitly with concrete numeric values, not left to library defaults
- Account addresses, mints, and program IDs used in the run match the documented raydium-amm addresses for the targeted cluster (no mainnet/devnet mix-up)
- Failure path was exercised at least once (insufficient balance, stale oracle, expired blockhash, etc.) and the agent's error handling produced a human-readable message
