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

# Changelog

> Product updates, new endpoints, and release notes for the Solana Tracker Data API, Datastream WebSockets, Raptor swap API, and Solana RPC.

<div className="w-full max-w-[960px] mx-auto">
  <Tabs>
    <Tab title="All Updates">
      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA V2 — full support and indexing for recurring orders</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA V2

          Jupiter DCA V2 orders (`openDcaV2`) are now fully supported and indexed across the DCA API and Datastream feeds. Previously hidden DCA V2 positions are now visible in REST responses and live WebSocket events.

          Existing `/dca/*` endpoints and `dca:jupiter` rooms automatically include V2 orders — no query changes required. Order objects include `openInstruction: "openDcaV2"` to distinguish V2 accounts.

          [Jupiter DCA API →](/data-api/dca)<br />
          [Jupiter DCA Datastream →](/datastream/dca)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Ridge custom RPC — Address Lookup Tables & SNS Domains</div>
        </div>

        <div className="changelog-card-body">
          ## Address Lookup Tables & SNS Domains — Custom RPC Methods

          Eight new Ridge DB-powered RPC methods for address lookup table queries and Solana Name Service (`.sol`) resolution. Each method costs **1 credit** per call.

          ### Address Lookup Tables

          * **`getLookupTablesByAuthority`** — LUTs owned by a wallet authority
          * **`getLookupTablesByAccount`** — LUTs containing a specific account
          * **`getLookupTablesByMint`** — LUTs containing a token mint
          * **`getLookupTablesByAccounts`** — LUTs containing all listed accounts, or a minimal LUT set with `bestSet: true`

          ### SNS Domains

          * **`getPrimaryDomain`** — Primary `.sol` domain for a wallet
          * **`getMultiplePrimaryDomains`** — Batch primary domains (up to 100 wallets)
          * **`getAllDomains`** — All `.sol` names owned by a wallet
          * **`resolveSolDomain`** — Forward resolution: `name.sol` → owner

          ```json theme={null}
          {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "getPrimaryDomain",
            "params": ["9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p"]
          }
          ```

          Resolve SNS identity and find LUTs for transaction compression in a single RPC call — no need to chain `getAccountInfo` / `getMultipleAccounts`.

          [Address Lookup Tables →](/solana-rpc/http/getlookuptablesbyauthority)<br />
          [SNS Domains →](/solana-rpc/http/getprimarydomain)<br />
          [Credits and rate limits →](/solana-rpc/credits-and-rate-limits)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">Wallet identity: SNS primary `.sol` domain tag</div>
        </div>

        <div className="changelog-card-body">
          ## PnL V2: SNS primary domain

          Wallet `identity` now includes an optional **`sns`** tag and **`identity.sns.domain`**, the wallet's primary **`.sol` domain** (Solana Name Service).

          Returned on all `/v2/pnl/*` responses that include `identity`, plus `GET /tokens/:tokenAddress/holders?enrich=identity` (and `?enrich=all`).

          [PnL V2 SNS primary domain guide →](/guides/pnl-v2/sns-identity)<br />
          [Solana Wallet Tags guide →](/guides/pnl-v2/wallet-tags)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Search — Coin Communities filters, sorting, and response fields</div>
        </div>

        <div className="changelog-card-body">
          ## Search — Coin Communities

          **`GET /search`** now includes Coin Communities live message activity.

          ### New query parameters

          * **`hasCoinCommunity`** — Filter tokens with or without monitored community messages (`true` / `false`)
          * **`minCommunityMessages`** / **`maxCommunityMessages`** — Filter by live message count range (inclusive)

          ### Sorting

          * **`sortBy=communityMessages`** — Sort by live community message count (use with `sortOrder=asc` or `desc`)

          ### Response fields

          Each result now includes **`hasCoinCommunity`** (`boolean`) and **`communityMessages`** (`integer`).

          [Search — Coin Communities guide →](/guides/search-coin-communities)<br />
          [Search API reference →](/data-api/search/token-search)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA — recurring order REST API and live WebSocket feeds</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA

          Track Jupiter recurring (DCA) orders on Solana: query live positions over REST and subscribe to open, fill, close, deposit, withdraw, fee, and position updates over Datastream. Jupiter is available today (`program=jupiter`); responses include a `program` id for when more platforms are added.

          ## Data API

          New endpoints under `/dca/*`. Full reference: [Jupiter DCA](/data-api/dca).

          * **`GET /dca/programs`** — List supported DCA programs (`id`, `label`, `programId`)
          * **`GET /dca/wallet/{wallet}`** — All DCA orders for a wallet with status summary
          * **`GET /dca/wallet/{wallet}/orders`** — Paginated wallet orders (`cursor`, `sort`, `status`, `program`)
          * **`GET /dca/order/{address}`** — Single DCA account by pubkey
          * **`GET /dca/token/{mint}`** — Token buy/sell flow overview
          * **`GET /dca/token/{mint}/buyers`** — Orders buying this token (output mint)
          * **`GET /dca/token/{mint}/sellers`** — Orders selling this token (input mint)
          * **`GET /dca/token/{mint}/users`** — Top wallets by DCA activity on this token
          * **`GET /dca/pair/{inputMint}/{outputMint}`** — Orders for a trading pair

          Query helpers: `program` (aliases `dex`, `platform`), `limit`, `cursor`, `sort` / `sortBy` (`volume`, `deposited`, `remaining`, `progress`, `recent`, `created`, `status`), and `status` (`active`, `paused`, `completed`, `pending`, `all`). Orders include USD fields when price data is available.

          ## Live Jupiter DCA streams

          New WebSocket rooms on Premium, Business, and Enterprise plans. Reference: [Jupiter DCA Datastream](/datastream/dca).

          Join with `{ "type": "join", "room": "<room>" }`. Each event is delivered to the global room, the matching event-type room, and any scoped rooms that apply.

          | Room                              | Use                               |
          | --------------------------------- | --------------------------------- |
          | **`dca:jupiter`**                 | All Jupiter DCA events            |
          | **`dca:jupiter:opened`**          | New DCA opened                    |
          | **`dca:jupiter:filled`**          | Cycle fill                        |
          | **`dca:jupiter:closed`**          | DCA closed                        |
          | **`dca:jupiter:deposit`**         | Deposit                           |
          | **`dca:jupiter:withdraw`**        | Withdraw                          |
          | **`dca:jupiter:collected_fee`**   | Fee collected                     |
          | **`dca:jupiter:position`**        | Account snapshot (no `eventName`) |
          | **`dca:jupiter:{mint}:buyers`**   | DCAs buying this token            |
          | **`dca:jupiter:{mint}:sellers`**  | DCAs selling this token           |
          | **`dca:jupiter:wallet:{wallet}`** | Any event for that owner          |
          | **`dca:jupiter:{dcaAddress}`**    | Any event for that DCA account    |

          Transaction events include a full **`order`** object (same shape as REST). Position updates include **`order`** and **`writeVersion`**.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">PnL V2 fuller responses, faster trending & volume endpoints, and improved search</div>
        </div>

        <div className="changelog-card-body">
          ## PnL V2 API

          * **`GET /v2/pnl/wallets/{wallet}/positions`** and **`GET /v2/pnl/tokens/{mint}/traders`** now return the full available data set (not a reduced field subset).
          * **Average hold time** added to the wallet PnL summary (`GET /v2/pnl/wallets/{wallet}`).
          * General PnL V2 bug fixes.

          ## Performance

          * **Up to 10× faster in the EU** and **up to 20× faster in the US** for:
            * **`/tokens/trending/*`**
            * **`/tokens/volume/*`**
            * **`/top-performers`**
            * **`/tokens/multi/all`**
          * **Improved spam token filtering** on trending, volume, and top performers for more accurate lists.
          * **Faster live holder count updates.**

          ## Search

          * **Better results** when queries contain special characters such as `-` and `"`.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">Expanded holder token PnL enrichment; legacy PnL endpoints now powered by PnL V2</div>
        </div>

        <div className="changelog-card-body">
          ## Holder token PnL enrichment

          When you call `/tokens/:tokenAddress/holders` with `?enrich=walletPnl` or `?enrich=all`, the `pnl.token` object now returns full position detail for that mint — not just `realized`, `unrealized`, and `total`.

          New fields include trade counts (`buys`, `sells`, `totalTrades`), ROI, position size (`balance`, `costBasis`, `value`, `price`), volume (`totalBought`, `totalSold`, `avgBuy`, `avgSell`), and timing (`firstBuy`, `lastBuy`, `firstSell`, `lastSell`, `firstTrade`, `lastTrade`).

          ## Legacy PnL endpoints use PnL V2 data

          The deprecated PnL endpoints now read from the PnL V2 engine under the hood. Request paths and response shapes are unchanged, but the underlying numbers match `/v2/pnl/*`.

          * **`GET /pnl/{wallet}`** — wallet PnL across all positions
          * **`GET /pnl/{wallet}/{token}`** — wallet PnL for one token
          * **`GET /first-buyers/{token}`** — first 100 buyers with PnL
          * **`GET /top-traders/all`** and **`GET /top-traders/all/{page}`** — top traders across all tokens
          * **`GET /top-traders/{token}`** — top traders for one token

          We still recommend migrating to the PnL V2 endpoints for richer fields, sorting, filters, wallet labels, and batch lookups. See the [PnL V2 overview](/guides/pnl-v2/overview).
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">PnL V2 launch: wallet profit/loss, trader lists, wallet labels, and live PnL streams</div>
        </div>

        <div className="changelog-card-body">
          ## PnL V2 API

          PnL means profit and loss. PnL V2 adds new endpoints under `/v2/pnl/*` so you can see how wallets and traders are doing.

          <img src="https://mintcdn.com/solanatracker/ZM5vWoSAJUJFeh6A/images/guides/pnl-chart.png?fit=max&auto=format&n=ZM5vWoSAJUJFeh6A&q=85&s=9a2eb20d19fc7bfada16fb86785be20d" alt="PnL V2 chart showing wallet profit and loss over time" width="2690" height="1010" data-path="images/guides/pnl-chart.png" />

          ### Wallet PnL

          Use these endpoints when you want to study one wallet:

          * **`GET /v2/pnl/wallets/:wallet`** — Shows the wallet's total profit/loss, ROI, win rate, and trade counts.
          * **`GET /v2/pnl/wallets/:wallet/positions`** — Lists every token position for the wallet. You can sort and filter the list.
          * **`GET /v2/pnl/wallets/:wallet/tokens/:token`** — Shows one wallet's history with one token.
          * **`GET /v2/pnl/wallets/:wallet/history`** — Shows daily PnL over time.
          * **`GET /v2/pnl/wallets/:wallet/performance`** — Shows best day, worst day, streaks, drawdown, and daily totals.
          * **`GET /v2/pnl/wallets/:wallet/highlights`** — Shows the biggest wins, losses, bags, flips, and most active tokens.
          * **`GET /v2/pnl/wallets/:wallet/risk`** — Shows where the wallet is most exposed.
          * **`GET /v2/pnl/wallets/:wallet/chart`** — Gives chart points ready to draw.

          ### Token PnL

          Use these endpoints when you want to study one token:

          * **`GET /v2/pnl/tokens/:token/traders`** — Lists wallets that traded the token. It shows PnL for this token and lifetime wallet PnL.
          * **`GET /v2/pnl/tokens/:token/first-buyers`** — Lists the earliest buyers first. Use `/traders` if you need sorting by ROI, PnL, size, or latest trade.

          ### Leaderboards

          Use these endpoints to rank wallets:

          * **`GET /v2/pnl/leaderboard/top`** — Ranks top Solana traders for `1`, `7`, `30`, or `90` days.
          * **`GET /v2/pnl/leaderboard/kols`** — Ranks tracked KOL wallets for all time.
          * **`GET /v2/pnl/leaderboard/kols/period`** — Ranks KOL wallets for a time range.
          * **`GET /v2/pnl/leaderboard/kols/calendar`** — Shows KOL PnL by day for a month.
          * **`GET /v2/pnl/leaderboard/kols/date`** — Shows KOL activity for one day.

          ### Batch Lookups

          Use batch endpoints when you need many results in one request:

          * **`POST /v2/pnl/wallets/:wallet/positions/batch`** — One wallet, up to 100 tokens.
          * **`POST /v2/pnl/tokens/:token/positions/batch`** — One token, up to 200 wallets.
          * **`POST /v2/pnl/positions/batch`** — Up to 200 wallet-token pairs.
          * **`POST /v2/pnl/wallets/batch`** — Up to 100 wallet summaries with labels and tags.

          ## New Features

          ### `pnlMode`

          Some positions can look wrong. For example, a wallet may show more sold than bought. `pnlMode` lets you choose how to handle those rows.

          | Mode               | What it does                                                            |
          | ------------------ | ----------------------------------------------------------------------- |
          | `strict` (default) | Safest view. Flagged positions count as **0** realized PnL.             |
          | `adjusted`         | Keeps flagged positions, but caps the PnL with a safer cost-basis rule. |
          | `raw`              | No filtering. Shows the raw realized PnL number.                        |

          Supported responses return the mode they used. Position rows also include `realizedRaw`, so your app can show both filtered and raw numbers.

          ### Wallet Labels

          PnL V2 can now return an `identity` object for wallets. A wallet can have more than one label.

          Common labels:

          * **`kol`** — known public wallet, with name, Twitter handle, and avatar.
          * **`bot`** — known bot wallet.
          * **`pool`** — pool vault, authority, LP mint, or bonding curve account.
          * **`developer`** — token creator, pool deployer, or mint authority.
          * **`arbitrage`** / **`potential_bot`** — confirmed or likely arbitrage-style wallet.
          * **`hacker`** — known exploit, scam, or attacker wallet.
          * **`spam_dusting`** — known spam-dusting wallet.
          * **`exchange`** — known exchange hot wallet.
          * **Platform tags** — `axiom`, `bloom`, and `photon`. `axiom-flash` also works and returns as `axiom`.

          Token endpoints also show wallet roles for that exact token. This helps you spot developers, pools, LPs, and early buyers without another request.

          ### Holder Enrichment

          `/tokens/:tokenAddress/holders` now supports `?enrich=`.

          * `?enrich=identity` — Adds wallet labels for each holder.
          * `?enrich=walletPnl` — Adds lifetime wallet PnL and this-token PnL.
          * `?enrich=all` — Adds both.

          If you do not pass `enrich`, the endpoint works the same as before.

          ## Live PnL Streams

          New WebSocket rooms send PnL updates in real time. They are available on Premium, Business, and Enterprise plans.

          * **`pnl:{wallet}:{token}`** — Live PnL for one wallet and one token.
          * **`pnl:{wallet}`** — Live PnL for every token a wallet trades.
          * **`pnl:{wallet}:summary`** — Live total PnL summary for one wallet.

          Use REST once to load the starting data. Then use these rooms to keep the data live.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">April 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
            <span className="changelog-tag">Solana RPC</span>
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">Performance improvements, new load balancers, and reduced latency</div>
        </div>

        <div className="changelog-card-body">
          ## Infrastructure

          * **Improved shred delivery** — Faster shred delivery for improved block propagation.
          * **New global load balancer for Data API** — Added a global load balancer for the Data API.
          * **New US-based Data API load balancer** — Dedicated US load balancer for lower-latency access.
          * **Colocated US servers** — Some endpoints dropped from 600ms response times to under 100ms.
          * **Migrated and upgraded ClickHouse cluster** — Better latency and faster queries across the API.

          ## Data API

          * **Improved trades endpoint speeds** — All trades endpoints are now faster.
          * **Improved `/chart` response speed** — Faster chart data retrieval.
          * **Improved `/tokens/:token` response time** — Faster token detail lookups.
          * **Improved metadata retrieval speed** — Faster metadata fetching across endpoints.
          * **Improved `/wallet/:wallet/chart` endpoint** — Now returns a chart even with only 1 data point.
          * **Fixed pagination bug on ascending trades** — Fixed a pagination issue when fetching trades in ascending order.
          * **Fixed Meteora DAMM liquidity** — Resolved a liquidity calculation issue on some older Meteora DAMM pools.
          * **Fixed PumpFun token creation edge cases** — Resolved edge cases on token creation events.
          * **Imported all missing PumpFun curve data** — Backfilled 15M+ tokens of PumpFun curve data.
          * **Fixed curve pools on `/tokens/:token`** — Curve pools (5+) now always appear after migration.
          * **Fixed Axiom transaction fee parser** — Moved from transfer to internal CPI call for accurate fee parsing.
          * **`uniqueTokens` query param on deployers API** — Returns latest graduated pool and first non-graduated pool in the regular list.
          * **Raydium LaunchLab tweaks** — Adjustments for Raydium LaunchLab support.
          * **Raydium CPMM improvements** — Improved Raydium CPMM handling.
          * **Search API bug fixes** — Various fixes to the search endpoint.

          ## Ridge DB

          * **Improved performance** — Improved indexes and response times across several queries.
          * **Globally load balanced** — US RPC users can now call methods like `getProgramAccounts`, `getProgramAccountsV2`, etc. around 200–400ms faster.
          * **Fixed frozen token account decoding** — Frozen token accounts now always show and decode properly.

          ## Datastream

          * **Improved Datastream performance** — Improved price, pool, and transaction update latency.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">March 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Bags.fm creator updates</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Updated Bags.fm creators** — Updated creator data for Bags.fm tokens.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">February 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Search & deployer improvements, pool creation data</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Multiple markets filter** — `/search` `market` parameter now accepts comma-separated values (e.g. `?market=raydium,orca,pumpfun`). Single values still work as before.
          * **Multiple launchpads filter** — `/search` `launchpad` parameter now accepts comma-separated values (e.g. `?launchpad=pumpfun,boop`). Single values still work as before.
          * **Launchpad filter on `/deployer`** — The `?launchpad=` parameter now works on `/deployer/{wallet}` (previously silently ignored).
          * **Full token format** — `/search` and `/deployer/{wallet}` now support `?format=full`, which returns results as full token objects (same shape as `/tokens/:token` — with token, pools, events, risk, buys, sells, txns, holders).
          * **Lower page limit for full format** — When `format=full`, the max per-page limit is capped at 100 (instead of 500) to keep queries efficient.

          [Search docs →](/data-api/search/token-search)<br />
          [Deployer docs →](/data-api/tokens/get-tokens-by-deployer)

          ## Datastream

          * **Pool creation data** — The `latest` and `graduated` rooms now include a `creation` object on each pool with `creator`, `created_tx`, and `created_time`.  (This is currently only available on the websocket for Pools. Token creation is also available on the Data API)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">February 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">New stats total and volume rooms</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **New total stats rooms**
            * `stats:token:{tokenAddress}:total`
            * `stats:pool:{poolId}:total`
          * **New volume rooms**
            * `volume:token:{tokenAddress}`
            * `volume:pool:{poolId}`

          [Total Token Stats →](/datastream/websockets/tokenstatisticstotal)<br />
          [Total Pool Stats →](/datastream/websockets/poolstatisticstotal)<br />
          [Token Volume →](/datastream/websockets/tokenvolume)<br />
          [Pool Volume →](/datastream/websockets/poolvolume)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Price, charts, and streaming improvements</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Improved price change percentages** — More accurate percent change calculations.
          * **Improved chart wicks** — Chart API shows more accurate wicks via a new aggregation technique.
          * **Fixed chart volume in some cases** — Ensures volume uses all pools when not filtering by pool.
          * **Added Humidifi, Tessera, and Solfi V1/V2 support.**

          ## Datastream

          * **Fixed price change percentages on stats room** — Corrected percent change calculations in the stats room.
          * **Improved pool selection** — Better pool selection on token and price rooms.
          * **Transaction monitor updates** — Added Raptor to the transaction monitor
          * **Added Humidifi, Tessera, and Solfi V1/V2 support.**
          * **Stability improvements** — Fixed and improved stability of transaction and price updates.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Chart currency option</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Chart currency option** — `/chart/{token}` and `/chart/{token}/{pool}` now support `currency=usd|sol|eur` (default `usd`).

          [View documentation →](/data-api/chart/get-ohlcv-data-for-a-token#parameter-currency)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Bundlers endpoint and new token data</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **New bundlers endpoint** — Use `/tokens/{token}/bundlers` to fetch bundler wallet stats for a token.
          * **Risk now includes bundlers** — The `risk` object returned on token responses includes bundler analysis.
          * **Search improvements** — `/search` now returns `riskScore` and bundler-related fields.

          ### Risk scores

          * **Bundlers** — New count-based + percentage-based scoring from new bundler data.
          * **Suspicious volume** — Flags extreme buy/sell imbalance.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Bundler tracking room</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **New room:** `bundlers:{tokenAddress}` — Real-time bundler wallet updates (wallet, current/previous amount & %, and totalBundlerPercentage).
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Top performers endpoint</div>
        </div>

        <div className="changelog-card-body">
          ## Top Performers

          * **Top performers endpoint** — Added `/top-performers/{timeframe}` to retrieve top performing tokens launched today.
          * **Timeframes** — Supports `5m`, `15m`, `30m`, `1h`, `6h`, `12h`, and `24h`.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">December 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Data accuracy and trade enhancements</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **First buyers endpoint accuracy** — Improved accuracy for first buyers endpoints to match with other PnL endpoints
          * **Pricing and volume fixes** — Fixed pricing and volume calculation bug on some trades
          * **Exact token price at trade time** — Added exact token price at time of trade for each token when using the `showMeta` flag on `/trades`

          ## Datastream - Trade rooms

          * **Global Load Balancer** - Added a global load balancer for the Datastream that routes to US or EU based Datastream servers automatically.
          * **Enhanced Datastream trade rooms** — Added `price` and `marketCap` to each token in Datastream trade rooms for better accuracy (uses main pool data). The main object `priceUsd` can be considered the exchange rate.

          ## Image proxy

          * **Image proxy filtering** — Enhanced image proxy filtering for invalid SVGs with reduced false positives
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">API and Datastream improvements</div>
        </div>

        <div className="changelog-card-body">
          * **Faster transaction and price updates** — Reduced latency for real-time data delivery
          * **Enhanced tokens overview API** — Pulse/Memescope now features improved filters and dramatically better performance
          * **Upgraded Yellowstone gRPC** — New Rust client delivers faster streaming performance

          ## Data Accuracy & Reliability

          Major improvements to data quality and consistency:

          * **Program filtering** — Excluded unknown programs that could cause invalid data from arbitrage bots and other sources
          * **Pool data updates** — Liquidity changes now trigger pool updates even without swaps
          * **Time accuracy improvements** — Edge case handling now uses `blockTime` when gRPC is behind or transaction parsing is delayed by more than a few seconds

          ## New Features

          **Automatic Pool Rotation**

          * Main pool rotation now happens automatically for `price:token:{address}` and `token:{primary}` rooms — no client-side changes required

          **Aggregated Price Room**

          * New **`price:aggregated:{token}`** room provides min, average, median, and max price updates
          * Aggregates price data across top 10 valid pools
          * Each update includes individual pool prices for full transparency

          **Pumpfun Mayhem Mode**

          * Added support for Pumpfun Mayhem mode
          * Pool data now includes `tokenProgram` and `isMayhemMode` fields

          ## Infrastructure

          **Redis Server Upgrade**

          * Deployed new Redis infrastructure
          * Eliminates random 500/503 errors during high load periods
          * Improved overall platform stability
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Aggregated Price Stream</div>
        </div>

        <div className="changelog-card-body">
          ## Aggregated Price Updates

          We've added a new WebSocket room that provides aggregated price data across multiple liquidity pools for any token.

          ### What's New

          **`price:aggregated:{tokenAddress}`**

          * **Multi-pool aggregation** — Get median, average, min, and max prices calculated across top liquidity pools
          * **Top pools data** — Detailed breakdown of the 10 highest liquidity pools with individual prices
          * **Real-time updates** — Live price aggregation as pools update
          * **Pool count tracking** — Know exactly how many pools contributed to the aggregated data
          * **Automatic pool rotation** - No need to subscribe to new rooms after token migration.

          ### Why Use Aggregated Pricing?

          Single pool prices can be manipulated or show temporary volatility. Aggregated pricing gives you:

          * **More accurate market prices** — Median and average across multiple sources
          * **Manipulation resistance** — Harder to distort when aggregating across pools
          * **Price range visibility** — See min/max spread to identify arbitrage opportunities
          * **Liquidity-weighted insights** — Focus on pools that matter most

          ```json theme={null}
          {
              "type": "message",
              "data": {
                  "token": "So11111111111111111111111111111111111111112",
                  "timestamp": 1762964449215,
                  "price": 153.70666202103925,
                  "pool": "3nMFwZXwY1s1M5s8vYAHqd4wGs4iSxXE4LRoUMMYqEgF",
                  "aggregated": {
                      "median": 153.6850599485249,
                      "average": 153.6735820182654,
                      "min": 153.36863801111053,
                      "max": 153.71662179961638,
                      "poolCount": 10
                  },
                  "topPools": [
                      {
                          "poolId": "3ucNos4NbumPLZNWztqGHNFFgkHeRMBQAVemeeomsUxv",
                          "price": 153.68241854665007,
                          "liquidity": 17950616.091940343,
                          "market": "raydium-clmm"
                      },
                      ...
                  ]
              },
              "room": "price:aggregated:So11111111111111111111111111111111111111112"
          }
          ```

          Perfect for trading interfaces, price oracles, and portfolio tracking applications that need reliable, manipulation-resistant pricing.

          [View documentation →](/datastream/websockets/priceaggregated)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Batch Token Balance Queries</div>
        </div>

        <div className="changelog-card-body">
          ## getTokenAccountsByOwners — Batch Balance Lookups

          We've added a new Ridge DB-powered RPC method that lets you query token balances for multiple wallets in a single request.

          ### What's New

          **`getTokenAccountsByOwners`**

          * **Batch up to 250 wallets** — Query hundreds of addresses in one call instead of making individual requests
          * **Multiple accounts support** — Automatically returns all token accounts if a wallet has multiple for the same mint
          * **Zero balance handling** — Wallets without a token account return a clean zero balance response
          * **Slot tracking** — Each account includes the slot when the balance was last updated

          ### Use Cases

          Perfect for:

          * Portfolio tracking across multiple wallets
          * Airdrop eligibility verification
          * Multi-wallet dashboards
          * Token distribution snapshots

          ```json theme={null}
          {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "getTokenAccountsByOwners",
            "params": [
              ["wallet1...", "wallet2...", "wallet3..."],
              "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            ]
          }
          ```

          This method drastically reduces API calls and latency when you need to check token holdings across many addresses at once.

          [View documentation →](/solana-rpc/http/gettokenaccountsbyowners)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Ridge Stream Launch</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge Stream — Enhanced Holder Data

          All holder endpoints and real-time streams have been migrated to **Ridge Stream**, from our new high-performance service RidgeDB

          ### What's New

          **REST Endpoints**

          * **`/tokens/{token}/holders`** — Get top 100 holders (use /tokens/{token}/holders/pagination for pagination and higher limits )
          * **`/tokens/{token}/holders/top`** — Fetch top holders by balance (excluding known wallets like lp)
          * **`/holders/multi`** — Multi-token holder count lookups
          * **`/holders/chart`** — Historical holder charts with more datapoints (now also includes SOL, USDC, and more)

          **Real-Time Streams**

          * **Holder count updates** — Live tracking of total holders
          * **Wallet balance updates** — Now includes native SOL with improved reliability
          * **Top 100 holders** — Real-time rankings of largest holders
          * **Snipers and insiders** — Track early buyers and insider activity

          You can now also get holder data for **large tokens** like WSOL, USDC, and USD1 that weren't available before. All holder counts and top 100 rankings work for these tokens via both API and real-time streaming.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 28 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Search Filters</div>
        </div>

        <div className="changelog-card-body">
          ## New Search Filters

          Added new filters to the token search endpoint:

          * **`launchpad`** — Filter by launch platform (`pumpfun`, `moonshot`, `letsbonk.fun`, `believe`)
          * **`image`** — Search by exact image URL
          * **`hasImage`** — Filter tokens that have/don't have images (`true`/`false`)

          [View documentation →](/data-api/search/token-search)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 22 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Paginated Token Holders</div>
        </div>

        <div className="changelog-card-body">
          ## Paginated Token Holders Endpoint

          We've launched a new endpoint for fetching all token holders with cursor-based pagination.

          ### What's New

          **`GET /tokens/{tokenAddress}/holders/paginated`**

          * **Cursor pagination** — Navigate through all holders efficiently
          * **Up to 5,000 per page** — Fetch large batches in a single request
          * **Ridge DB powered** — Fast queries even for tokens with millions of holders
          * **Complete holder data** — Returns wallet, token account, amount, USD value, total holder count and ownership percentage

          ### The Improvement

          Previously limited to 100 holders, this endpoint now handles tokens with any number of holders while maintaining consistent performance.

          ```bash theme={null}
          GET /tokens/{tokenAddress}/holders/paginated?limit=1000&cursor=nextPageCursor
          ```

          [View documentation →](/data-api/tokens/get-all-token-holders-paginated)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 21 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">RPC Enhancements</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge DB Performance & Features Update

          We've shipped several improvements to our Ridge DB-powered RPC methods to give you even more control and speed.

          ### What's New

          * **Total count support** — `getProgramAccountsV2` and `getTokenAccountsByOwnerV2` now return `totalCount` in responses, making pagination and UI updates easier
          * **Faster queries** — New indexes dramatically improve response times for certain account lookups
          * **Stability improvements** — Bug fixes and optimizations

          These updates build on our Ridge DB launch, delivering better performance and more developer-friendly responses.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 16 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Ridge DB Launch</div>
        </div>

        <div className="changelog-card-body">
          ## Solana Ridge DB

          We've rolled out **two new RPC methods** powered by **Ridge DB** — our high-performance engine designed for lightning-fast account lookups on Solana.

          ### 🧭 New Methods

          #### `getProgramAccountsV2`

          Supercharged program account queries with:

          * **`changedSince`** — Fetch only accounts updated after a given slot (great for incremental syncs)
          * **`excludeZero`** — Automatically skip empty token accounts
          * **Cursor pagination** — Retrieve up to 10,000 accounts per request

          #### `getTokenAccountsByOwnerV2`

          Optimized token account retrieval, featuring the same Ridge DB speed and:

          * **`changedSince`** — Get only new or updated token accounts
          * **`excludeZero`** — Filter out dust or empty balances
          * **Cursor pagination** — Smoothly handle large token sets

          ### 💡 Why Ridge DB?

          Ridge DB isn't your standard RPC backend. It's a purpose-built system for account-heavy workloads that delivers:

          * Faster response times
          * Slot-based incremental updates
          * Cursor pagination for big datasets

          In short — faster queries, cleaner data, and a smoother developer experience.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">Documentation Launch</div>
        </div>

        <div className="changelog-card-body">
          ## New Documentation Site

          We've launched a brand-new documentation hub that brings all our products and APIs together, complete with guides and hands-on examples.

          You can now explore detailed docs for:

          * **Yellowstone gRPC** — Real-time Solana data streaming
          * **Data API** — REST access to historical and live Solana data
          * **Datastream** — WebSocket-based live data feeds
          * **Solana RPC** — Enhanced endpoints powered by Ridge DB
          * **Swap API** — High-performance token swaps and routing

          The new docs include interactive code samples, and best practices to help you build faster and smarter on Solana.
        </div>
      </div>
    </Tab>

    <Tab title="Solana RPC">
      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Ridge custom RPC — Address Lookup Tables & SNS Domains</div>
        </div>

        <div className="changelog-card-body">
          ## Address Lookup Tables & SNS Domains — Custom RPC Methods

          Eight new Ridge DB-powered RPC methods for address lookup table queries and Solana Name Service (`.sol`) resolution. Each method costs **1 credit** per call.

          ### Address Lookup Tables

          * **`getLookupTablesByAuthority`** — LUTs owned by a wallet authority
          * **`getLookupTablesByAccount`** — LUTs containing a specific account
          * **`getLookupTablesByMint`** — LUTs containing a token mint
          * **`getLookupTablesByAccounts`** — LUTs containing all listed accounts, or a minimal LUT set with `bestSet: true`

          ### SNS Domains

          * **`getPrimaryDomain`** — Primary `.sol` domain for a wallet
          * **`getMultiplePrimaryDomains`** — Batch primary domains (up to 100 wallets)
          * **`getAllDomains`** — All `.sol` names owned by a wallet
          * **`resolveSolDomain`** — Forward resolution: `name.sol` → owner

          [Address Lookup Tables →](/solana-rpc/http/getlookuptablesbyauthority) · [SNS Domains →](/solana-rpc/http/getprimarydomain) · [Credits →](/solana-rpc/credits-and-rate-limits)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">April 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Ridge DB performance and reliability improvements</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge DB

          * **Improved performance** — Improved indexes and response times across several queries.
          * **Globally load balanced** — US RPC users can now call methods like `getProgramAccounts`, `getProgramAccountsV2`, etc. around 200–400ms faster.
          * **Fixed frozen token account decoding** — Frozen token accounts now always show and decode properly.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Batch Token Balance Queries</div>
        </div>

        <div className="changelog-card-body">
          ## getTokenAccountsByOwners — Batch Balance Lookups

          We've added a new Ridge DB-powered RPC method that lets you query token balances for multiple wallets in a single request.

          ### What's New

          **`getTokenAccountsByOwners`**

          * **Batch up to 250 wallets** — Query hundreds of addresses in one call instead of making individual requests
          * **Multiple accounts support** — Automatically returns all token accounts if a wallet has multiple for the same mint
          * **Zero balance handling** — Wallets without a token account return a clean zero balance response
          * **Slot tracking** — Each account includes the slot when the balance was last updated

          ### Use Cases

          Perfect for:

          * Portfolio tracking across multiple wallets
          * Airdrop eligibility verification
          * Multi-wallet dashboards
          * Token distribution snapshots

          ```json theme={null}
          {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "getTokenAccountsByOwners",
            "params": [
              ["wallet1...", "wallet2...", "wallet3..."],
              "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            ]
          }
          ```

          This method drastically reduces API calls and latency when you need to check token holdings across many addresses at once.

          [View documentation →](/solana-rpc/http/gettokenaccountsbyowners)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 21 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">RPC Enhancements</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge DB Performance & Features Update

          We've shipped several improvements to our Ridge DB-powered RPC methods to give you even more control and speed.

          ### What's New

          * **Total count support** — `getProgramAccountsV2` and `getTokenAccountsByOwnerV2` now return `totalCount` in responses, making pagination and UI updates easier
          * **Faster queries** — New indexes dramatically improve response times for certain account lookups
          * **Stability improvements** — Bug fixes and optimizations

          These updates build on our Ridge DB launch, delivering better performance and more developer-friendly responses.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 16 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Solana RPC</span>
          </div>

          <div className="changelog-card-desc">Ridge DB Launch</div>
        </div>

        <div className="changelog-card-body">
          ## Solana Ridge DB

          We've rolled out **two new RPC methods** powered by **Ridge DB**, our high-performance engine designed for lightning-fast account lookups on Solana.

          ### 🧭 New Methods

          #### `getProgramAccountsV2`

          Supercharged program account queries with:

          * **`changedSince`** — Fetch only accounts updated after a given slot (great for incremental syncs)
          * **`excludeZero`** — Automatically skip empty token accounts
          * **Cursor pagination** — Retrieve up to 10,000 accounts per request

          #### `getTokenAccountsByOwnerV2`

          Optimized token account retrieval, featuring the same Ridge DB speed and:

          * **`changedSince`** — Get only new or updated token accounts
          * **`excludeZero`** — Filter out dust or empty balances
          * **Cursor pagination** — Smoothly handle large token sets

          ### 💡 Why Ridge DB?

          Ridge DB isn't your standard RPC backend. It's a purpose-built system for account-heavy workloads that delivers:

          * Faster response times
          * Slot-based incremental updates
          * Cursor pagination for big datasets

          In short — faster queries, cleaner data, and a smoother developer experience.
        </div>
      </div>
    </Tab>

    <Tab title="Yellowstone gRPC">
      <div className="text-gray-500 py-8 text-center">
        No updates yet. Check back soon!
      </div>
    </Tab>

    <Tab title="Data API">
      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA V2 orders — full REST indexing</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA V2

          Jupiter DCA V2 orders (`openDcaV2`) are now fully indexed across all `/dca/*` endpoints. Previously hidden V2 positions now appear in wallet, token, and pair queries.

          No query changes required. Orders include `openInstruction: "openDcaV2"` when applicable.

          [Jupiter DCA API →](/data-api/dca)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">Wallet identity: SNS primary `.sol` domain tag</div>
        </div>

        <div className="changelog-card-body">
          ## PnL V2: SNS primary domain

          Wallet `identity` now includes an optional **`sns`** tag and **`identity.sns.domain`**, the wallet's primary **`.sol` domain** (Solana Name Service).

          Returned on all `/v2/pnl/*` responses that include `identity`, plus holder enrichment (`?enrich=identity`, `?enrich=all`).

          [Guide →](/guides/pnl-v2/sns-identity) · [Wallet tags →](/guides/pnl-v2/wallet-tags)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Search — Coin Communities filters, sorting, and response fields</div>
        </div>

        <div className="changelog-card-body">
          ## Search — Coin Communities

          **`GET /search`** now supports Coin Communities activity:

          * **`hasCoinCommunity`** — Filter tokens with or without monitored community messages
          * **`minCommunityMessages`** / **`maxCommunityMessages`** — Message count range filter
          * **`sortBy=communityMessages`** — Sort by live message count
          * Response fields: **`hasCoinCommunity`**, **`communityMessages`**

          [Guide →](/guides/search-coin-communities) · [API reference →](/data-api/search/token-search)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA REST API for recurring orders</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA

          New endpoints under `/dca/*` for Jupiter recurring orders. Full reference: [Jupiter DCA](/data-api/dca).

          * **`GET /dca/programs`** — Supported DCA programs
          * **`GET /dca/wallet/{wallet}`** — Wallet orders + summary
          * **`GET /dca/wallet/{wallet}/orders`** — Paginated wallet orders
          * **`GET /dca/order/{address}`** — Single DCA account
          * **`GET /dca/token/{mint}`** — Token flow overview
          * **`GET /dca/token/{mint}/buyers`** — Orders buying this token
          * **`GET /dca/token/{mint}/sellers`** — Orders selling this token
          * **`GET /dca/token/{mint}/users`** — Top users by DCA activity
          * **`GET /dca/pair/{inputMint}/{outputMint}`** — Orders for a trading pair

          Use `?program=jupiter` (aliases `dex`, `platform`), plus `limit`, `cursor`, `sort`, and `status` on list endpoints.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">PnL V2 fuller responses, faster trending & volume endpoints, and improved search</div>
        </div>

        <div className="changelog-card-body">
          ## PnL V2 API

          * **`GET /v2/pnl/wallets/{wallet}/positions`** and **`GET /v2/pnl/tokens/{mint}/traders`** — full available data on every response.
          * **Average hold time** on wallet summary.
          * General PnL V2 bug fixes.

          ## Performance

          * Up to **10× faster (EU)** and **20× faster (US)** on `/tokens/trending/*`, `/tokens/volume/*`, `/top-performers`, and `/tokens/multi/all`.
          * Improved spam filtering on trending, volume, and top performers.
          * Faster live holder count updates.

          ## Search

          * Better handling of special characters (`-`, `"`) in search queries.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">PnL V2</span>
          </div>

          <div className="changelog-card-desc">Expanded holder token PnL enrichment; legacy PnL endpoints now powered by PnL V2</div>
        </div>

        <div className="changelog-card-body">
          ## Holder token PnL enrichment

          When you call `/tokens/:tokenAddress/holders` with `?enrich=walletPnl` or `?enrich=all`, the `pnl.token` object now returns full position detail for that mint — not just `realized`, `unrealized`, and `total`.

          New fields include trade counts (`buys`, `sells`, `totalTrades`), ROI, position size (`balance`, `costBasis`, `value`, `price`), volume (`totalBought`, `totalSold`, `avgBuy`, `avgSell`), and timing (`firstBuy`, `lastBuy`, `firstSell`, `lastSell`, `firstTrade`, `lastTrade`).

          ## Legacy PnL endpoints use PnL V2 data

          The deprecated PnL endpoints now read from the PnL V2 engine under the hood. Request paths and response shapes are unchanged, but the underlying numbers match `/v2/pnl/*`.

          * **`GET /pnl/{wallet}`** — wallet PnL across all positions
          * **`GET /pnl/{wallet}/{token}`** — wallet PnL for one token
          * **`GET /first-buyers/{token}`** — first 100 buyers with PnL
          * **`GET /top-traders/all`** and **`GET /top-traders/all/{page}`** — top traders across all tokens
          * **`GET /top-traders/{token}`** — top traders for one token

          We still recommend migrating to the PnL V2 endpoints for richer fields, sorting, filters, wallet labels, and batch lookups. See the [PnL V2 overview](/guides/pnl-v2/overview).
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">April 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">Performance improvements and new load balancers</div>
        </div>

        <div className="changelog-card-body">
          ## Infrastructure

          * **Improved shred delivery** — Faster shred delivery for improved block propagation.
          * **New global load balancer for Data API** — Added a global load balancer for the Data API.
          * **New US-based Data API load balancer** — Dedicated US load balancer for lower-latency access.
          * **Colocated US servers** — Some endpoints dropped from 600ms response times to under 100ms.
          * **Migrated and upgraded ClickHouse cluster** — Better latency and faster queries across the API.

          ## Data API

          * **Improved trades endpoint speeds** — All trades endpoints are now faster.
          * **Improved `/chart` response speed** — Faster chart data retrieval.
          * **Improved `/tokens/:token` response time** — Faster token detail lookups.
          * **Improved metadata retrieval speed** — Faster metadata fetching across endpoints.
          * **Improved `/wallet/:wallet/chart` endpoint** — Now returns a chart even with only 1 data point.
          * **Fixed pagination bug on ascending trades** — Fixed a pagination issue when fetching trades in ascending order.
          * **Fixed Meteora DAMM liquidity** — Resolved a liquidity calculation issue on some older Meteora DAMM pools.
          * **Fixed PumpFun token creation edge cases** — Resolved edge cases on token creation events.
          * **Imported all missing PumpFun curve data** — Backfilled 15M+ tokens of PumpFun curve data.
          * **Fixed curve pools on `/tokens/:token`** — Curve pools (5+) now always appear after migration.
          * **Fixed Axiom transaction fee parser** — Moved from transfer to internal CPI call for accurate fee parsing.
          * **`uniqueTokens` query param on deployers API** — Returns latest graduated pool and first non-graduated pool in the regular list.
          * **Raydium LaunchLab tweaks** — Adjustments for Raydium LaunchLab support.
          * **Raydium CPMM improvements** — Improved Raydium CPMM handling.
          * **Search API bug fixes** — Various fixes to the search endpoint.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">March 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Bags.fm creator updates</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Updated Bags.fm creators** — Updated creator data for Bags.fm tokens.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">February 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Search & deployer improvements</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Multiple markets filter** — `/search` `market` parameter now accepts comma-separated values (e.g. `?market=raydium,orca,pumpfun`). Single values still work as before.
          * **Multiple launchpads filter** — `/search` `launchpad` parameter now accepts comma-separated values (e.g. `?launchpad=pumpfun,boop`). Single values still work as before.
          * **Launchpad filter on `/deployer`** — The `?launchpad=` parameter now works on `/deployer/{wallet}` (previously silently ignored).
          * **Full token format** — `/search` and `/deployer/{wallet}` now support `?format=full`, which returns results as full token objects (same shape as `/tokens/:token` — with token, pools, events, risk, buys, sells, txns, holders).
          * **Lower page limit for full format** — When `format=full`, the max per-page limit is capped at 100 (instead of 500) to keep queries efficient.

          [Search docs →](/data-api/search/token-search)<br />
          [Deployer docs →](/data-api/tokens/get-tokens-by-deployer)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Price, charts, and streaming improvements</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Improved price change percentages** — More accurate percent change calculations.
          * **Improved chart wicks** — Chart API shows more accurate wicks via a new aggregation technique.
          * **Fixed chart volume in some cases** — Ensures volume uses all pools when not filtering by pool.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Chart currency option</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **Chart currency option** — `/chart/{token}` and `/chart/{token}/{pool}` now support `currency=usd|sol|eur` (default `usd`).

          [View documentation →](/data-api/chart/get-ohlcv-data-for-a-token#parameter-currency)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Bundlers endpoint and new token data</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **New bundlers endpoint** — Use `/tokens/{token}/bundlers` to fetch bundler wallet stats for a token.
          * **Risk now includes bundlers** — The `risk` object returned on token responses includes bundler analysis.
          * **Search improvements** — `/search` now returns `riskScore` and bundler-related fields.

          ### Risk scores

          * **Bundlers** — New count-based + percentage-based scoring from new bundler data.
          * **Suspicious volume** — Flags extreme buy/sell imbalance.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Top performers endpoint</div>
        </div>

        <div className="changelog-card-body">
          ## Top Performers

          * **Top performers endpoint** — Added `/top-performers/{timeframe}` to retrieve top performing tokens launched today.
          * **Timeframes** — Supports `5m`, `15m`, `30m`, `1h`, `6h`, `12h`, and `24h`.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">December 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Data accuracy and trade enhancements</div>
        </div>

        <div className="changelog-card-body">
          ## Data API

          * **First buyers endpoint accuracy** — Improved accuracy for first buyers endpoints to match with other PnL endpoints
          * **Pricing and volume fixes** — Fixed pricing and volume calculation bug on some trades
          * **Exact token price at trade time** — Added exact token price at time of trade for each token when using the `showMeta` flag on `/trades`

          ## Datastream - Trade rooms

          * **Global Load Balancer** - Added a global load balancer for the Datastream that routes to US or EU based Datastream servers automatically.
          * **Enhanced Datastream trade rooms** — Added `price` and `marketCap` to each token in Datastream trade rooms for better accuracy (uses main pool data). The main object `priceUsd` can be considered the exchange rate.

          ## Image proxy

          * **Image proxy filtering** — Enhanced image proxy filtering for invalid SVGs with reduced false positives
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Ridge Stream Launch</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge Stream — Enhanced Holder Data

          All holder endpoints and real-time streams have been migrated to **Ridge Stream**, from our new high-performance service RidgeDB

          ### What's New

          **REST Endpoints**

          * **`/tokens/{token}/holders`** — Get top 100 holders (use /tokens/{token}/holders/pagination for pagination and higher limits )
          * **`/tokens/{token}/holders/top`** — Fetch top holders by balance (excluding known wallets like lp)
          * **`/holders/multi`** — Multi-token holder count lookups
          * **`/holders/chart`** — Historical holder charts with more datapoints (now also includes SOL, USDC, and more)

          **Real-Time Streams**

          * **Holder count updates** — Live tracking of total holders
          * **Wallet balance updates** — Now includes native SOL with improved reliability
          * **Top 100 holders** — Real-time rankings of largest holders
          * **Snipers and insiders** — Track early buyers and insider activity

          You can now also get holder data for **large tokens** like WSOL, USDC, and USD1 that weren't available before. All holder counts and top 100 rankings work for these tokens via both API and real-time streaming.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 28 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Search Filters</div>
        </div>

        <div className="changelog-card-body">
          ## New Search Filters

          Added new filters to the token search endpoint:

          * **`launchpad`** — Filter by launch platform (`pumpfun`, `moonshot`, `letsbonk.fun`, `believe`)
          * **`image`** — Search by exact image URL
          * **`hasImage`** — Filter tokens that have/don't have images (`true`/`false`)

          [View documentation →](/data-api/search/token-search)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 22 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
          </div>

          <div className="changelog-card-desc">Paginated Token Holders</div>
        </div>

        <div className="changelog-card-body">
          ## Paginated Token Holders Endpoint

          We've launched a new endpoint for fetching all token holders with cursor-based pagination.

          ### What's New

          **`GET /tokens/{tokenAddress}/holders/paginated`**

          * **Cursor pagination** — Navigate through all holders efficiently
          * **Up to 5,000 per page** — Fetch large batches in a single request
          * **Ridge DB powered** — Fast queries even for tokens with millions of holders
          * **Complete holder data** — Returns wallet, token account, amount, USD value, total holder count and ownership percentage

          ### The Improvement

          Previously limited to 100 holders, this endpoint now handles tokens with any number of holders while maintaining consistent performance.

          ```bash theme={null}
          GET /tokens/{tokenAddress}/holders/paginated?limit=1000&cursor=nextPageCursor
          ```

          [View documentation →](/data-api/tokens/get-all-token-holders-paginated)
        </div>
      </div>
    </Tab>

    <Tab title="Datastream">
      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">June 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA V2 orders — live stream support</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA V2 streams

          Jupiter DCA V2 orders (`openDcaV2`) are now included in all existing `dca:jupiter` WebSocket rooms. Previously hidden V2 positions surface in opened, fill, close, deposit, withdraw, fee, and position events.

          No subscription changes required.

          [Jupiter DCA Datastream →](/datastream/dca)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">May 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Jupiter DCA live WebSocket rooms</div>
        </div>

        <div className="changelog-card-body">
          ## Jupiter DCA streams

          New WebSocket rooms for Jupiter recurring orders (Premium, Business, and Enterprise). Reference: [Jupiter DCA Datastream](/datastream/dca).

          Join with `{ "type": "join", "room": "<room>" }`:

          * **`dca:jupiter`** — all events
          * **`dca:jupiter:opened`**, **`dca:jupiter:filled`**, **`dca:jupiter:closed`**, **`dca:jupiter:deposit`**, **`dca:jupiter:withdraw`**, **`dca:jupiter:collected_fee`**, **`dca:jupiter:position`**
          * **`dca:jupiter:{mint}:buyers`** / **`dca:jupiter:{mint}:sellers`** — mint-scoped feeds
          * **`dca:jupiter:wallet:{wallet}`** — by owner
          * **`dca:jupiter:{dcaAddress}`** — by DCA account

          Each event is fanned out to the global room, the event-type room, and matching scoped rooms. Transaction payloads include a full **`order`** object; position updates include **`order`** and **`writeVersion`**.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">April 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Improved update latency</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **Improved Datastream performance** — Improved price, pool, and transaction update latency.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">February 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Pool creation data in latest & graduated rooms</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **Pool creation data** — The `latest` and `graduated` rooms now include a `creation` object on each pool with `creator`, `created_tx`, and `created_time`. (This is currently only available on the websocket for Pools. Token creation is also available on the Data API)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">February 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">New stats total and volume rooms</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **New total stats rooms**
            * `stats:token:{tokenAddress}:total`
            * `stats:pool:{poolId}:total`
          * **New volume rooms**
            * `volume:token:{tokenAddress}`
            * `volume:pool:{poolId}`
          * **SDK-aligned payloads**
            * Total stats rooms emit `TokenStatsTotal`
            * Volume rooms emit `VolumeTokenUpdate` / `VolumePoolUpdate`

          [Token stats total docs →](/datastream/websockets/tokenstatisticstotal)<br />
          [Pool stats total docs →](/datastream/websockets/poolstatisticstotal)<br />
          [Token volume docs →](/datastream/websockets/tokenvolume)<br />
          [Pool volume docs →](/datastream/websockets/poolvolume)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Price, charts, and streaming improvements</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **Fixed price change percentages on stats room** — Corrected percent change calculations in the stats room.
          * **Improved pool selection** — Better pool selection on token and price rooms.
          * **Transaction monitor updates** — Added Raptor to the transaction monitor; added Humidifi, Tessera, and Solfi V1/V2 support.
          * **Stability improvements** — Fixed and improved stability of transaction and price updates.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">January 2026</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Bundler tracking room</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream

          * **New room:** `bundlers:{tokenAddress}` — Real-time bundler wallet updates (wallet, current/previous amount & %, and totalBundlerPercentage).
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">December 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Data accuracy and trade enhancements</div>
        </div>

        <div className="changelog-card-body">
          ## Datastream - Trade rooms

          * **Global Load Balancer** - Added a global load balancer for the Datastream that routes to US or EU based Datastream servers automatically.
          * **Enhanced Datastream trade rooms** — Added `price` and `marketCap` to each token in Datastream trade rooms for better accuracy (uses main pool data). The main object `priceUsd` can be considered the exchange rate.
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">API and Datastream improvements</div>
        </div>

        <div className="changelog-card-body">
          * **Faster transaction and price updates** — Reduced latency for real-time data delivery
          * **Enhanced tokens overview API** — Pulse/Memescope now features improved filters and dramatically better performance
          * **Upgraded Yellowstone gRPC** — New Rust client delivers faster streaming performance

          ## Data Accuracy & Reliability

          Major improvements to data quality and consistency:

          * **Program filtering** — Excluded unknown programs that could cause invalid data from arbitrage bots and other sources
          * **Pool data updates** — Liquidity changes now trigger pool updates even without swaps
          * **Time accuracy improvements** — Edge case handling now uses `blockTime` when gRPC is behind or transaction parsing is delayed by more than a few seconds

          ## New Features

          **Automatic Pool Rotation**

          * Main pool rotation now happens automatically for `price:token:{address}` and `token:{primary}` rooms — no client-side changes required

          **Aggregated Price Room**

          * New **`price:aggregated:{token}`** room provides min, average, median, and max price updates
          * Aggregates price data across top 10 valid pools
          * Each update includes individual pool prices for full transparency

          **Pumpfun Mayhem Mode**

          * Added support for Pumpfun Mayhem mode
          * Pool data now includes `tokenProgram` and `isMayhemMode` fields

          ## Infrastructure

          **Redis Server Upgrade**

          * Deployed new Redis infrastructure
          * Eliminates random 500/503 errors during high load periods
          * Improved overall platform stability
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Aggregated Price Stream</div>
        </div>

        <div className="changelog-card-body">
          ## Aggregated Price Updates

          We've added a new WebSocket room that provides aggregated price data across multiple liquidity pools for any token.

          ### What's New

          **`price:aggregated:{tokenAddress}`**

          * **Multi-pool aggregation** — Get median, average, min, and max prices calculated across top liquidity pools
          * **Top pools data** — Detailed breakdown of the 10 highest liquidity pools with individual prices
          * **Real-time updates** — Live price aggregation as pools update
          * **Pool count tracking** — Know exactly how many pools contributed to the aggregated data
          * **Automatic pool rotation** - No need to subscribe to new rooms after token migration.

          ### Why Use Aggregated Pricing?

          Single pool prices can be manipulated or show temporary volatility. Aggregated pricing gives you:

          * **More accurate market prices** — Median and average across multiple sources
          * **Manipulation resistance** — Harder to distort when aggregating across pools
          * **Price range visibility** — See min/max spread to identify arbitrage opportunities
          * **Liquidity-weighted insights** — Focus on pools that matter most

          ```json theme={null}
          {
              "type": "message",
              "data": {
                  "token": "So11111111111111111111111111111111111111112",
                  "timestamp": 1762964449215,
                  "price": 153.70666202103925,
                  "pool": "3nMFwZXwY1s1M5s8vYAHqd4wGs4iSxXE4LRoUMMYqEgF",
                  "aggregated": {
                      "median": 153.6850599485249,
                      "average": 153.6735820182654,
                      "min": 153.36863801111053,
                      "max": 153.71662179961638,
                      "poolCount": 10
                  },
                  "topPools": [
                      {
                          "poolId": "3ucNos4NbumPLZNWztqGHNFFgkHeRMBQAVemeeomsUxv",
                          "price": 153.68241854665007,
                          "liquidity": 17950616.091940343,
                          "market": "raydium-clmm"
                      },
                      ...
                  ]
              },
              "room": "price:aggregated:So11111111111111111111111111111111111111112"
          }
          ```

          Perfect for trading interfaces, price oracles, and portfolio tracking applications that need reliable, manipulation-resistant pricing.

          [View documentation →](/datastream/websockets/priceaggregated)
        </div>
      </div>

      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">November 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">Data API</span>
            <span className="changelog-tag">Datastream</span>
          </div>

          <div className="changelog-card-desc">Ridge Stream Launch</div>
        </div>

        <div className="changelog-card-body">
          ## Ridge Stream — Enhanced Holder Data

          All holder endpoints and real-time streams have been migrated to **Ridge Stream**, from our new high-performance service RidgeDB

          ### What's New

          **Real-Time Streams**

          * **Holder count updates** — Live tracking of total holders
          * **Wallet balance updates** — Now includes native SOL with improved reliability
          * **Top 100 holders** — Real-time rankings of largest holders
          * **Snipers and insiders** — Track early buyers and insider activity
        </div>
      </div>
    </Tab>

    <Tab title="Swap API">
      <div className="text-gray-500 py-8 text-center">
        No updates yet. Check back soon!
      </div>
    </Tab>

    <Tab title="General">
      <div className="changelog-card">
        <div className="changelog-card-header">
          <div className="changelog-card-date">October 2025</div>

          <div className="changelog-card-tags">
            <span className="changelog-tag">General</span>
          </div>

          <div className="changelog-card-desc">Documentation Launch</div>
        </div>

        <div className="changelog-card-body">
          ## New Documentation Site

          We've launched a brand-new documentation hub that brings all our products and APIs together — complete with guides, SDKs, and hands-on examples.

          You can now explore detailed docs for:

          * **Yellowstone gRPC** — Real-time Solana data streaming
          * **Data API** — REST access to historical and live Solana data
          * **Datastream** — WebSocket-based live data feeds
          * **Solana RPC** — Enhanced endpoints powered by Ridge DB
          * **Swap API** — High-performance token swaps and routing

          The new docs include interactive code samples, SDK walkthroughs, and best practices to help you build faster and smarter on Solana.
        </div>
      </div>
    </Tab>
  </Tabs>
</div>
