> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exponent.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# CLMM market state

> Retrieve a market by address, including tick state and principal totals.

export const ApiResponse = ({children, errors = {}}) => {
  const [status, setStatus] = useState("200");
  const statuses = ["200", ...Object.keys(errors)];
  return <section className="api-response" aria-label="Response">
      <div className="api-response-header not-prose">
        <h2>Response</h2>
        <div className="api-response-format">
          {statuses.length > 1 ? <select aria-label="Response status" value={status} onChange={event => setStatus(event.target.value)}>
              {statuses.map(code => <option key={code} value={code}>{code}</option>)}
            </select> : <span>200</span>}
          <span className="api-response-mime">application/json</span>
        </div>
      </div>
      <div hidden={status !== "200"}>{children}</div>
      {status !== "200" && <div aria-live="polite">
          {Object.entries(errors[status]).map(([name, value]) => <ResponseField key={name} name={name} type={value === null ? "null" : Array.isArray(value) ? "array" : typeof value}>
              {name === "error" ? "Error message describing why the request failed." : "Additional error details."}
            </ResponseField>)}
        </div>}
    </section>;
};

## Path parameters

<ParamField path="address" type="string" required>
  CLMM market address.
</ParamField>

## Query parameters

<ParamField query="include_frontend_hidden" type="boolean" default="false">
  Include markets whose vault is hidden from the production frontend.
</ParamField>

<RequestExample dropdown>
  ```bash cURL theme={null}
  curl https://api.exponent.finance/clmm/7NSpRqs1ZNiZharyTwKyprfanQsaPprZSm1z84nVsbKn
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.exponent.finance/clmm/7NSpRqs1ZNiZharyTwKyprfanQsaPprZSm1z84nVsbKn", timeout=30)
  response.raise_for_status()
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.exponent.finance/clmm/7NSpRqs1ZNiZharyTwKyprfanQsaPprZSm1z84nVsbKn");
  if (!response.ok) {
    throw new Error(`Request failed: ${response.status}`);
  }
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ApiResponse errors={{}}>
  <ResponseField name="address" type="string">
    CLMM market public key.
  </ResponseField>

  <ResponseField name="vault_address" type="string">
    Associated yield vault public key.
  </ResponseField>

  <ResponseField name="id" type="number">
    Indexed market ID.
  </ResponseField>

  <ResponseField name="is_active" type="boolean">
    Whether the market is active.
  </ResponseField>

  <ResponseField name="current_spot_price" type="number">
    Multiplicative annual rate: `1.07` corresponds to 7% implied APY.
  </ResponseField>

  <ResponseField name="current_implied_apy" type="number | null">
    Implied APY as a decimal: `0.07` means 7%.
  </ResponseField>

  <ResponseField name="tick_space" type="number">
    Spacing between ticks in the market’s rate representation.
  </ResponseField>

  <ResponseField name="liquidity_balance" type="number">
    Raw CLMM liquidity units.
  </ResponseField>

  <ResponseField name="sy_balance" type="number">
    Raw SY token balance in the pool.
  </ResponseField>

  <ResponseField name="pt_balance" type="number">
    Raw PT token balance in the pool.
  </ResponseField>

  <ResponseField name="treasury_fee_bps" type="number">
    Treasury fee in basis points.
  </ResponseField>

  <ResponseField name="ln_fee_rate_root" type="number">
    Logarithmic fee-rate parameter used by the CLMM.
  </ResponseField>

  <ResponseField name="admin_address" type="string | null">
    Market administrator.
  </ResponseField>

  <ResponseField name="additional_address_lookup_table" type="string | null">
    Additional Solana address lookup table for transaction construction.
  </ResponseField>

  <ResponseField name="created_at" type="string">
    Indexed creation timestamp.
  </ResponseField>

  <ResponseField name="updated_at" type="string">
    Latest indexed update timestamp.
  </ResponseField>

  <ResponseField name="emissions" type="object | null">
    Indexed emission state.
  </ResponseField>

  <ResponseField name="lp_farm" type="object | null">
    Indexed LP farm state.
  </ResponseField>

  <ResponseField name="tickState" type="object | null">
    Latest indexed tick state, or `null` when unavailable.

    <Expandable title="child attributes">
      <ResponseField name="address" type="string">
        Ticks account public key.
      </ResponseField>

      <ResponseField name="market_address" type="string">
        CLMM market public key.
      </ResponseField>

      <ResponseField name="current_tick" type="number">
        Current tick index.
      </ResponseField>

      <ResponseField name="current_spot_price" type="number">
        Multiplicative annual rate at the current tick.
      </ResponseField>

      <ResponseField name="current_prefix_sum" type="number">
        Active liquidity at the current tick.
      </ResponseField>

      <ResponseField name="last_seen_slot" type="number">
        Latest indexed Solana slot.
      </ResponseField>

      <ResponseField name="last_updated_at" type="string">
        Tick-state update timestamp.
      </ResponseField>

      <ResponseField name="last_tx_signature" type="string">
        Transaction associated with the latest tick state.
      </ResponseField>

      <ResponseField name="fee_growth_index_global_pt" type="number">
        Global PT fee growth index.
      </ResponseField>

      <ResponseField name="fee_growth_index_global_sy" type="number">
        Global SY fee growth index.
      </ResponseField>

      <ResponseField name="ticks_tree" type="object[]">
        Indexed tick entries.

        <Expandable title="child attributes">
          <ResponseField name="impliedRate" type="number">
            Tick’s multiplicative annual rate.
          </ResponseField>

          <ResponseField name="apyBasePoints" type="number">
            Tick rate in the program’s scaled representation.
          </ResponseField>

          <ResponseField name="principalPt" type="string | number">
            Raw PT principal at this tick.
          </ResponseField>

          <ResponseField name="principalSy" type="string | number">
            Raw SY principal at this tick.
          </ResponseField>

          <ResponseField name="liquidityNet" type="string | number">
            Net liquidity change across this tick.
          </ResponseField>

          <ResponseField name="liquidityGross" type="string | number">
            Gross liquidity at this tick.
          </ResponseField>

          <ResponseField name="feeGrowthOutsidePt" type="string | number">
            PT fee growth outside this tick.
          </ResponseField>

          <ResponseField name="feeGrowthOutsideSy" type="string | number">
            SY fee growth outside this tick.
          </ResponseField>

          <ResponseField name="principalShareSupply" type="string | number">
            Raw principal-share supply.
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="tickPrincipalTotals" type="object | null">
    Sum of indexed tick principal, or `null` if no tick tree is available.

    <Expandable title="child attributes">
      <ResponseField name="principalPtTotal" type="string">
        Total raw PT principal across ticks.
      </ResponseField>

      <ResponseField name="principalSyTotal" type="string">
        Total raw SY principal across ticks.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="tvlInBaseToken" type="number | null">
    Pool value in raw base-token units; `null` when pricing inputs are unavailable.
  </ResponseField>

  <ResponseField name="yield_rates" type="object | null">
    Yield breakdown, or `null` when unavailable.

    <Expandable title="child attributes">
      <ResponseField name="ptApyWeighted" type="number">
        PT yield contribution, weighted by pool composition; decimal APY.
      </ResponseField>

      <ResponseField name="syApyWeighted" type="number">
        SY yield contribution, weighted by pool composition; decimal APY.
      </ResponseField>

      <ResponseField name="tradingFeeRate" type="number">
        Indexed trading fee rate. Use `tradingFeeApy` for the annualized APY display.
      </ResponseField>

      <ResponseField name="tradingFeeApy" type="number">
        Trading fee APY as a decimal, when available.
      </ResponseField>

      <ResponseField name="tradingFeePeriodLabel" type="string">
        Lookback label for trading fee APY, when available.
      </ResponseField>
    </Expandable>
  </ResponseField>
</ApiResponse>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": 4805,
    "address": "7NSpRqs1ZNiZharyTwKyprfanQsaPprZSm1z84nVsbKn",
    "vault_address": "BwBn7Sro6RzDp3A59cDC7WoxWdT7yTaWuaHwvR7Gvypa",
    "current_spot_price": 1.05880742600823,
    "tick_space": 1000,
    "liquidity_balance": 188416412427504,
    "treasury_fee_bps": 3500,
    "ln_fee_rate_root": 0.00199800266267306,
    "created_at": "2026-06-01T13:38:43.703352+00:00",
    "updated_at": "2026-10-14T14:56:42.924+00:00",
    "current_implied_apy": 0.0588074260082285,
    "is_active": true,
    "admin_address": "DheMp3RPekY4sfym67RrvHoCnyS1sMv8D23AR8tqweW7",
    "sy_balance": 5819690243960,
    "pt_balance": 1376618098317,
    "emissions": {
      "trackers": []
    },
    "lp_farm": {
      "farmEmissions": [
        {
          "mint": "BULKoNSGzxtCqzwTvg5hFJg8fx6dqZRScyXe5LYMfxrn",
          "index": {
            "0": [
              "0eb150a9",
              "00",
              "00",
              "00"
            ]
          },
          "tokenRate": "53e8",
          "startTimestamp": 1782154707,
          "expiryTimestamp": 1784730702
        }
      ],
      "lastSeenTimestamp": 1791989802
    },
    "additional_address_lookup_table": "Fvt2LEZWn23A34gupKbeCLpSSuGaksUknruS1Sao57VP",
    "tickState": {
      "address": "39jfQydyVZzkgVACV8Jd3uNPaYDUuwvKopzyMPjT6m5t",
      "ticks_tree": [
        {
          "farms": [
            {
              "lastSeenIndex": 9.2720634e-05
            },
            {
              "lastSeenIndex": 0
            }
          ],
          "emissions": [
            {
              "lastSeenIndex": 0,
              "lastPositionIndex": 0
            },
            {
              "lastSeenIndex": 0,
              "lastPositionIndex": 0
            }
          ],
          "impliedRate": 1.1,
          "principalPt": "0",
          "principalSy": "55144833811",
          "liquidityNet": "33590735438442",
          "apyBasePoints": 100000,
          "lastSplitEpoch": "7",
          "liquidityGross": "76975945636500",
          "splitParentIdx": 0,
          "frozenLiquidity": "100",
          "splitParentEpoch": "0",
          "feeGrowthOutsidePt": "2554783445907164",
          "feeGrowthOutsideSy": "346322102581652",
          "principalShareSupply": "29110634086239061495858"
        },
        {
          "farms": [
            {
              "lastSeenIndex": 0
            },
            {
              "lastSeenIndex": 0
            }
          ],
          "emissions": [
            {
              "lastSeenIndex": 0,
              "lastPositionIndex": 0
            },
            {
              "lastSeenIndex": 0,
              "lastPositionIndex": 0
            }
          ],
          "impliedRate": 1.15,
          "principalPt": "0",
          "principalSy": "7661114581",
          "liquidityNet": "-54420654219941",
          "apyBasePoints": 150000,
          "lastSplitEpoch": "0",
          "liquidityGross": "54420654220697",
          "splitParentIdx": 0,
          "frozenLiquidity": "100",
          "splitParentEpoch": "0",
          "feeGrowthOutsidePt": "0",
          "feeGrowthOutsideSy": "0",
          "principalShareSupply": "7661114578995462523536"
        }
      ],
      "current_tick": 61,
      "last_seen_slot": 456879441,
      "market_address": "7NSpRqs1ZNiZharyTwKyprfanQsaPprZSm1z84nVsbKn",
      "last_updated_at": "2026-10-14T14:56:42.924+00:00",
      "last_tx_signature": "26zWTdvo5WSBFpXgWRrxB3JBZNE87accsHQHDDhj17hC5aSoPyAhErKTY6WgXphHhyXx1ACUgGWuwo6X5Ho2GhAq",
      "current_prefix_sum": 103655378665510,
      "current_spot_price": 1.05880742600823,
      "fee_growth_index_global_pt": 4918431758764886,
      "fee_growth_index_global_sy": 809172577079767
    },
    "tickPrincipalTotals": {
      "principalPtTotal": "1369287904763",
      "principalSyTotal": "5817882053722"
    },
    "tvlInBaseToken": 7797571722352,
    "yield_rates": {
      "ptApyWeighted": 0.010354897187662747,
      "syApyWeighted": 0.038853123696729365,
      "tradingFeeRate": 8.095798809442651e-13,
      "tradingFeeApy": 0.00022924240565291853,
      "tradingFeePeriodLabel": "Last 7d"
    }
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.