Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.orca.so/llms.txt

Use this file to discover all available pages before exploring further.

API Schemas

Complete reference for all data models returned by the Orca Public API.

PublicWhirlpool

The primary data structure for Whirlpool liquidity pools.
interface PublicWhirlpool {
  // Identity
  address: string;                    // Pool account address
  whirlpoolsConfig: string;           // Whirlpools config account

  // Pool Configuration
  tickSpacing: number;                // Tick spacing (determines fee tier)
  feeRate: number;                    // Fee rate (hundredths of basis point)
  protocolFeeRate: number;            // Protocol fee (basis points)
  feeTierIndex: number;               // Fee tier index
  poolType: "splashpool" | "whirlpool";

  // Liquidity State
  liquidity: string;                  // Current liquidity (Q64.64)
  sqrtPrice: string;                  // Square root price (Q64.64)
  tickCurrentIndex: number;           // Current tick index

  // Token Information
  tokenMintA: string;                 // Token A mint address
  tokenMintB: string;                 // Token B mint address
  tokenVaultA: string;                // Token A vault address
  tokenVaultB: string;                // Token B vault address
  tokenA: PublicToken;                // Token A details
  tokenB: PublicToken;                // Token B details
  tokenBalanceA: string;              // Token A balance in pool
  tokenBalanceB: string;              // Token B balance in pool

  // Pricing & Value
  price: string;                      // Current price (Token B per Token A)
  tvlUsdc: string;                    // Total Value Locked in USDC

  // Fee Growth
  feeGrowthGlobalA: string;           // Global fee growth for Token A
  feeGrowthGlobalB: string;           // Global fee growth for Token B
  protocolFeeOwedA: string;           // Protocol fees owed in Token A
  protocolFeeOwedB: string;           // Protocol fees owed in Token B

  // Adaptive Fees
  adaptiveFeeEnabled: boolean;        // Whether adaptive fees are enabled
  adaptiveFee?: AdaptiveFee;          // Adaptive fee configuration

  // Status
  hasWarning: boolean;                // Pool has warning flag

  // Statistics (by time period)
  stats: {
    [period: string]: PublicWhirlpoolStats;  // "5m", "24h", "7d", etc.
  };

  // Rewards
  rewards: WhirlpoolRewardInfoExt[];  // Active reward emissions

  // Locked Liquidity
  lockedLiquidityPercent: LockInfo[]; // Locked liquidity providers

  // Metadata
  updatedAt: string;                  // ISO 8601 timestamp
  updatedSlot: number;                // Solana slot number
}

PublicWhirlpoolStats

Time-period statistics for a Whirlpool.
interface PublicWhirlpoolStats {
  volume: string;      // Trading volume in USDC
  fees: string;        // Fees collected in USDC
  rewards: string;     // Rewards distributed in USDC
  yieldOverTvl: string; // Yield as ratio of TVL (APR indicator)
}

Available Time Periods

PeriodDescription
5mLast 5 minutes
15mLast 15 minutes
30mLast 30 minutes
1hLast hour
2hLast 2 hours
4hLast 4 hours
8hLast 8 hours
24hLast 24 hours
7dLast 7 days
30dLast 30 days

PublicToken

Token metadata and information.
interface PublicToken {
  address: string;         // Token mint address
  symbol: string | null;   // Token symbol (e.g., "SOL")
  name: string | null;     // Full token name
  decimals: number;        // Decimal places
  imageUrl: string | null; // Logo URL
  programId: string;       // SPL Token program ID
  tags: string;            // Comma-separated extension tags
}

AdaptiveFee

Configuration for pools with adaptive fees.
interface AdaptiveFee {
  currentRate: number;              // Current fee rate
  maxRate: number;                  // Maximum fee rate
  constants: AdaptiveFeeConstants;  // Static configuration
  variables: AdaptiveFeeVariables;  // Dynamic state
}

interface AdaptiveFeeConstants {
  filterPeriod: number;
  decayPeriod: number;
  reductionFactor: number;
  variableFeeControl: number;
  maxVolatilityAccumulator: number;
  minBinId: number;
  maxBinId: number;
}

interface AdaptiveFeeVariables {
  volatilityAccumulator: number;
  volatilityReference: number;
  indexReference: number;
  lastUpdateTimestamp: number;
}

WhirlpoolRewardInfoExt

Reward emission configuration for incentivized pools.
interface WhirlpoolRewardInfoExt {
  mint: string;                   // Reward token mint address
  vault: string;                  // Reward vault address
  authority: string;              // Reward authority
  emissionsPerSecond: string;     // Emissions rate (human readable)
  emissionsPerSecondX64: string;  // Emissions rate (Q64.64 format)
  growthGlobalX64: string;        // Global growth accumulator
  active: boolean;                // Whether rewards are active
}

LockInfo

Information about locked liquidity in a pool.
interface LockInfo {
  name: string;                    // Lock provider name
  lockedPercentage: string | null; // Percentage of liquidity locked
}

ProtocolInfo

Protocol-wide statistics.
interface ProtocolInfo {
  tvl: string;            // Total Value Locked in USDC
  volume24hUsdc: string;  // 24-hour volume in USDC
  fees24hUsdc: string;    // 24-hour fees in USDC
  revenue24hUsdc: string; // 24-hour revenue in USDC
}

ProtocolInfoOrcaToken

ORCA token information.
interface ProtocolInfoOrcaToken {
  symbol: string;            // "ORCA"
  name: string;              // "Orca"
  description: string;       // Token description
  imageUrl: string;          // Logo URL
  price: string;             // Current USD price
  circulatingSupply: string; // Circulating supply
  totalSupply: string;       // Total supply
  stats: {
    "24h": {
      volume: string;        // 24-hour trading volume
    };
  };
}

API Response Wrapper

All API responses use this wrapper format.
interface ApiResponse<T> {
  data: T;
  meta: {
    next: string | null;     // Cursor for next page
    previous: string | null; // Cursor for previous page
  };
}

Enums

SortField

Available sort fields for pool queries.
type SortField =
  | "volume" | "volume5m" | "volume15m" | "volume30m"
  | "volume1h" | "volume2h" | "volume4h" | "volume8h"
  | "volume24h" | "volume7d" | "volume30d"
  | "tvl"
  | "fees" | "fees5m" | "fees15m" | "fees30m"
  | "fees1h" | "fees2h" | "fees4h" | "fees8h"
  | "fees24h" | "fees7d" | "fees30d"
  | "rewards" | "rewards5m" | "rewards15m" | "rewards30m"
  | "rewards1h" | "rewards2h" | "rewards4h" | "rewards8h"
  | "rewards24h" | "rewards7d" | "rewards30d"
  | "yieldovertvl" | "yieldovertvl5m" | "yieldovertvl15m"
  | "yieldovertvl30m" | "yieldovertvl1h" | "yieldovertvl2h"
  | "yieldovertvl4h" | "yieldovertvl8h" | "yieldovertvl24h"
  | "yieldovertvl7d" | "yieldovertvl30d"
  | "lockedliquiditypercent";

SortDirection

type SortDirection = "asc" | "desc";

TokenSortField

type TokenSortField = "address" | "mint_id" | "volume_24h";

PoolType

type PoolType = "splashpool" | "whirlpool";