Service
Orca Whirlpools
Deposit and withdraw liquidity from Orca and Raydium concentrated liquidity pools on Solana. Specify a token pair, wallet, and amount — the API returns ready-to-sign Solana transactions. Supports pool search, quoting, position management, and one-shot deposits.
x402
mpp
Methods
7 methods available
POST/v1/deposit10000 USDC
/v1/depositOne-shot deposit into a concentrated liquidity pool. Handles pool selection, price range, and transaction creation automatically.
POST JSON body with wallet_address and either token symbols or pool_address, plus deposit amounts. Returns a base64 Solana transaction ready to sign, along with pool details, price bounds, and token amounts.
{
"body": {
"wallet_address": "string (required, user wallet address)",
"token_a": "string (optional, token A symbol e.g. 'SOL')",
"token_b": "string (optional, token B symbol e.g. 'USDC')",
"pool_address": "string (optional, override with specific pool address)",
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')",
"usd_amount": "number (optional, total USD value — requires stablecoin in pair)",
"token_a_amount": "number (optional, amount in human units e.g. 1.5 SOL)",
"token_b_amount": "number (optional, amount in human units e.g. 100 USDC)",
"range_percent": "number (optional, price range ±% from current price, default 10)",
"slippage_bps": "number (optional, 0-10000, default 50)"
}
}GET/v1/pools/{pool_address}0 USDC
/v1/pools/{pool_address}Get current on-chain state for a specific pool including tick data, price, liquidity, and TVL.
Replace {pool_address} with the pool account address. Returns pool info with token mints, symbols, tick data, sqrt price, liquidity, fee rate, and TVL.
{
"path": {
"pool_address": "string (required, pool account address)"
},
"query": {
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')"
}
}GET/v1/pools/search0 USDC
/v1/pools/searchSearch for concentrated liquidity pools by token pair, ordered by TVL.
GET with token_a and token_b query params. Returns matching pools with address, symbols, mints, tick spacing, TVL, and fee rate.
{
"query": {
"token_a": "string (required, token symbol e.g. 'SOL')",
"token_b": "string (required, token symbol e.g. 'USDC')",
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')"
}
}GET/v1/position/{position_mint}0 USDC
/v1/position/{position_mint}Fetch liquidity position state by NFT mint address including price bounds, token amounts, and accrued fees.
Replace {position_mint} with the position NFT mint. Returns position data with price bounds, liquidity, token amounts, accrued fees, and in-range status.
{
"path": {
"position_mint": "string (required, position NFT mint address)"
},
"query": {
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')"
}
}POST/v1/quote0 USDC
/v1/quoteCalculate liquidity and token amounts for a proposed deposit before building a transaction.
POST JSON body with price bounds and either token symbols or pool_address, plus at least one token amount. Returns liquidity, token amounts, maximums, ticks, and current price.
{
"body": {
"pool_address": "string (optional)",
"token_a": "string (optional, token A symbol)",
"token_b": "string (optional, token B symbol)",
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')",
"lower_price": "number (required, lower bound in token B per token A)",
"upper_price": "number (required, upper bound in token B per token A)",
"token_a_amount": "string (optional, amount in base units)",
"token_b_amount": "string (optional, amount in base units)",
"slippage_bps": "number (optional, 0-10000, default 50)"
}
}POST/v1/transaction10000 USDC
/v1/transactionBuild a ready-to-sign deposit transaction with explicit tick and liquidity parameters.
POST JSON body with wallet_address, tick boundaries, liquidity, and token maximums (from /v1/quote). Returns a base64 Solana transaction ready to sign.
{
"body": {
"wallet_address": "string (required)",
"pool_address": "string (optional)",
"token_a": "string (optional)",
"token_b": "string (optional)",
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')",
"lower_tick": "number (required, lower tick boundary)",
"upper_tick": "number (required, upper tick boundary)",
"liquidity": "string (required, liquidity amount)",
"token_a_max": "string (required, max token A in base units)",
"token_b_max": "string (required, max token B in base units)",
"position_mint": "string (optional, existing position mint — omit for new position)"
}
}POST/v1/withdraw0 USDC
/v1/withdrawBuild a withdrawal transaction for an existing liquidity position. If withdrawing 100%, also closes the position and burns the Orca NFT.
POST JSON body with position_mint and wallet_address. Returns a base64 Solana transaction, token amounts, accrued fees, and whether the position will be closed.
{
"body": {
"position_mint": "string (required, position NFT mint address)",
"wallet_address": "string (required, user wallet address)",
"withdraw_percent": "number (optional, 0-100, percentage of liquidity to remove, default 100)",
"slippage_bps": "number (optional, 0-10000, default 50)",
"protocol": "string (optional, 'orca' or 'raydium', default 'orca')"
}
}