All services

Service

Orca Whirlpools

defi7 endpoints
Docs

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

basesolana

mpp

tempo

Methods

7 methods available

OpenAPI
POST/v1/deposit
10000 USDC

One-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

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/search
0 USDC

Search 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

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/quote
0 USDC

Calculate 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/transaction
10000 USDC

Build 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/withdraw
0 USDC

Build 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')"
  }
}