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

# Changelog

> Track all updates and changes to DexPaprika API

This page contains all significant updates, improvements, and bug fixes for the DexPaprika API. We're committed to making our product better with each release. Check our [API reference](/api-reference) for the latest version.

<Update label="2026-06-03" description="Reserves stream restructure + request_id correlation" tags={["Streaming", "Breaking", "Feature"]}>
  ## Changed

  * **Reserves stream restructure.** The `/sse/reserves` feed no longer emits a single shared `reserve_update` event. Each subscription method now has its own event name, so you match on the method you asked for:
    * `method=pool_reserves` emits a `pool_reserves` event with the full pool snapshot. That means the `tokens` array with per-token reserve and delta, plus two new fields: `timestamp` and `block_timestamp`.
    * `method=token_reserves` emits a `token_reserves` event flattened to the subscribed token's reserve state in the affected pool, plus two new fields: `updated_at` and `timestamp`.
    * If you were matching on `reserve_update`, stop. Switch your handler to the method-named event or you will receive nothing.

  ## Added

  * **`request_id` correlation on streams.** Every SSE endpoint (`/sse/prices` and `/sse/reserves`, both GET and POST) now takes an optional `request_id` query parameter, and the POST body accepts it per asset. The server echoes it back on data events as an SSE `request_id:` line, which is what you want when several subscriptions share one multiplexed POST connection. It is omitted from `ping`, `warning`, and `error` events. The value has to be a non-negative integer (`0` to `4294967295`); send anything non-numeric and the request is rejected with `{"message": "invalid query parameters: request_id (must be a number)"}`. On the POST body the default is the asset's array index.

  ## Notes

  * Stream `error` events always carry a single `{"message": "..."}` payload. That is now stated explicitly in the streaming reference.
</Update>

<Update label="2026-05-15" description="MCP v2.0.0" tags={["MCP", "Breaking", "Feature"]}>
  Hosted MCP server (`mcp.dexpaprika.com`) refactored end-to-end. All 17 tools now emit `structuredContent` (MCP 2025-06-18+), declare `outputSchema`, and ship with read-only/idempotent annotations so well-behaved clients stop safe-prompting every call.

  ## Breaking changes

  * **`getTokenMultiPrices` response shape.** Previously returned a bare array of price entries; now returns an object `{ prices: [...], missing_tokens: [...] }`. Tokens that upstream cannot price (invalid address, no liquidity, unknown contract) are surfaced in `missing_tokens` rather than silently dropped.
    * **Migration:** replace `response.map(...)` with `response.prices.map(...)`. Check `response.missing_tokens.length > 0` to detect partial failures.
  * **`search` response `pools[].dex_id` renamed to `factory_id`.** In `search.pools[]`, upstream emits the DEX factory contract address under `dex_id`, while `getNetworkPools` emits the slug under the same key. The MCP layer now renames this to `factory_id` in search responses, matching `getPoolDetails` and `getPoolTransactions` which already use `factory_id` for this concept.
    * **Migration:** if you read `search.pools[].dex_id` expecting a slug, read `dex_name` (human-readable) or look up `factory_id` against `getNetworkDexes`.

  ## Added

  * **Network synonym resolution.** Common alternate names (`eth`, `matic`, `avax`, `bnb`, `sol`, `arb`, `op`, `pol`, `cro`, `mnt`, `ftm`, `trx`, etc.) now resolve to their canonical network IDs at the wire layer. `getCapabilities.network_synonyms` advertised these previously; now the upstream actually honors them on every endpoint that takes a `network` parameter.
  * **`search` optional `limit` parameter.** Caps items returned per category (tokens, pools, dexes). Applies independently to each category — `limit=3` returns up to 3 hits in each of the 5 categories.
  * **`getCapabilities.tools_count`** field exposing the canonical 17-tool count.
  * **`getTokenMultiPrices.missing_tokens`** array surfacing tokens upstream could not price.
  * **`getPoolOHLCV.interval`** now accepts `1m` and `10m` (in addition to existing `5m`/`15m`/`30m`/`1h`/`6h`/`12h`/`24h`).
  * **Canonical alias parameters** added alongside legacy names. Both accepted; canonical is recommended for new code:
    * `sort_dir` (canonical) / `sort` (legacy alias) — sort direction
    * `sort_by` (canonical) / `order_by` (legacy alias) — sort field
    * `paired_token_address` (canonical) / `address` (legacy alias) — second-token filter on `getTokenPools`
    * `inversed` (canonical) / `reorder` (legacy alias) — pair-perspective flip on `getTokenPools` and `getPoolDetails`
  * **`outputSchema`** declared on every tool. Strict-validating MCP clients (Cursor, Claude Desktop) now validate responses against documented shapes.
  * **`structuredContent`** emitted on every tool result (MCP spec 2025-06-18+). Agents can consume parsed objects directly instead of re-parsing `content[0].text`.
  * **Tool annotations** (`readOnlyHint`, `idempotentHint`, `destructiveHint`, `openWorldHint`) on every tool so hosts stop safe-prompting reads.
  * **Server-level `instructions`** field in the MCP `initialize` response — a curated onboarding doc for agents.

  ## Fixed

  * **`getNetworkDexes` `limit` parameter.** Upstream `/networks/{network}/dexes` silently ignored `limit` and always reported `page_info.total_items=0, total_pages=0`. The MCP layer now slices client-side to the requested limit and patches `page_info` to reflect the real total count.
  * **`getTokenDetails` strict-validation rejection.** Previously failed on strict-validating MCP clients with `-32602 "data must NOT have additional properties"` when upstream returned fields beyond the declared schema. Outer `outputSchema` is now permissive (`additionalProperties: true`) while declared fields remain typed. Same fix applied across all single-item-object tools (`getTokenDetails`, `getPoolDetails`, etc.).

  ## Changed

  * **`server.version`** bumped from `1.4.0` to `2.0.0`.
  * **JSON Schema dialect on `/json-rpc`** transport upgraded from `draft-07` to `2020-12`, aligning with the underlying OpenAPI 3.1 contract. SDK-managed `/sse` and `/streamable-http` transports still emit `draft-07` (Zod v3 limitation); full 2020-12 alignment pending a future Zod v4 Mini migration.
  * **Rationale boilerplate** in tool descriptions shortened from 506 to 249 characters to reduce input-token cost on every tool registration.
  * **`submitFeedback`** field descriptions now document the 500-character caps on `expected` and `observed` (exceeding triggers `-32602` input validation).

  ## Known limitations

  * `liquidity_usd` values returned by `getNetworkPoolsFilter`, `getTopTokens`, and `getTokenDetails.summary` are currently unreliable upstream — filter results may be empty and reported values may be incorrect. Upstream fix pending.
  * `total_supply` decimal handling differs across endpoints (raw units in pool listings, decimal-adjusted in `getTokenDetails`). Upstream consistency pending.
  * `getTopTokens` reports `fdv: 0` for some major stablecoins (USDT, DAI). Upstream data quality fix pending.
  * Field naming varies across endpoints (`id` vs `address` for token references; `fdv` vs `fdv_usd`; response wrappers `pools`/`results`/`tokens`). Naming alignment is on the roadmap.
</Update>

<Update label="2026-04-14" description="v1.7.0" tags={["API", "Feature"]}>
  ## Added

  * `GET /networks/{network}/pools/{pool_address}/transactions`: new optional `from` and `to` query parameters (UNIX timestamps, int64) to filter transactions by time range.
    * `from` is inclusive, `to` is exclusive. Results are always capped to the last 7 days.
  * Token schema: new `telegram` and `twitter` string fields for official social links.
</Update>

<Update label="2026-03-27" description="v1.6.0" tags={["API", "Feature", "Docs"]}>
  ## Added

  * New endpoint: `GET /networks/{network}/tokens/filter` for [advanced token filtering](/api-reference/tokens/advanced-token-filtering-on-a-network).
    * Filter tokens by volume (`volume_24h`, `volume_7d`, `volume_30d`), liquidity (`liquidity_usd`), FDV (`fdv_min`, `fdv_max`), transaction count (`txns_24h_min`), and creation date (`created_after`, `created_before`).
    * Sort by `volume_24h`, `volume_7d`, `volume_30d`, `liquidity_usd`, `txns_24h`, `created_at`, or `fdv`.
    * Paginated response with `page_info`.
  * New endpoint: `GET /networks/{network}/tokens/top` for [top tokens on a network](/api-reference/tokens/get-top-tokens-on-a-network).
    * Ranked token list with enriched metadata and multi-timeframe metrics (24h, 1h, 5m).
    * Order by `volume_24h`, `price_usd`, `liquidity_usd`, `txns`, or `price_change`.
    * Each token includes buy/sell counts, volume, and price change per interval.
  * New schemas: `TokenFilterResponse`, `TokenSearchResult`, `TopTokenResponse`, `TopTokenItem`, `TopTokenTimeData`.

  ## Changed

  * `GET /networks` response schema updated from `Network` to `NetworkMetrics` with new fields: `volume_usd_24h`, `txns_24h`, `pools_count`.
  * `GET /networks/{network}/dexes` response enriched with `dex_id`, `volume_usd_24h`, `txns_24h`, `pools_count` per DEX.
  * `GET /networks/{network}/pools/filter`: `PoolSearchResult` now extends `PoolWithPrices` via `allOf`, adding `volume_usd_7d` and `liquidity_usd`.
  * Pool filter parameters `volume_7d_min`, `liquidity_usd_min`, and `liquidity_usd_max` are now functional.
  * New pool filter parameters: `volume_7d_max`, `volume_30d_max`.

  ## Known limitations

  * `volume_30d_min` and `volume_30d_max` parameters on pool and token filter endpoints are documented but not yet functional.
</Update>

<Update label="2026-03-02" description="v1.5.0" tags={["API", "Feature", "Docs"]}>
  ## Added

  * New endpoint: `GET /networks/{network}/pools/filter` for [advanced pool filtering](/api-reference/pools/advanced-pool-filtering-on-a-network).
    * Filter pools by 24h volume range (`volume_24h_min`, `volume_24h_max`), transaction count (`txns_24h_min`), and creation date (`created_after`, `created_before`).
    * Sort by `volume_24h`, `volume_7d`, `volume_30d`, `liquidity`, `txns_24h`, or `created_at` with `asc`/`desc` direction.
    * Paginated response with `page_info` including `total_items` and `total_pages`.
  * New schemas: `PoolFilterResponse` and `PoolSearchResult`.

  ## Known limitations

  * `volume_7d_min`, `volume_30d_min`, `liquidity_usd_min`, and `liquidity_usd_max` parameters are documented but not yet functional. These will be enabled in a future update.
</Update>

<Update label="2025-10-16" description="v1.4.1" tags={["API", "Docs"]}>
  ## Changed

  * `GET /networks/{network}/multi/prices`: requests are now limited to a maximum of 10 `tokens` per call.
  * Parameter encoding updated to a single comma-separated `tokens` list (`explode=false`).

  ## Error handling

  * Requests with more than 10 tokens return `400 Bad Request`.
  * Requests with zero tokens still return `400 Bad Request` (unchanged).

  ## Docs

  * Updated API reference, tutorial, and MCP notes to reflect the cap, edge-case behavior, and comma-separated encoding.
</Update>

<Update label="2025-10-14" description="v1.4.0" tags={["API", "Feature", "Docs", "Compatibility"]}>
  ## Added

  * New endpoint: `GET /networks/{network}/multi/prices` for batch token price retrieval on a network.
    * Request: repeatable `tokens` query parameter (e.g., `?tokens=0x...&tokens=0x...`).
    * Response: array of `{ id, chain, price_usd }` objects for tokens with available prices; unknown/unpriced tokens are omitted.

  ## Changed

  * `AssetPrice` schema added and documented in OpenAPI.
  * Internals: performance optimization to fetch token summaries conditionally.

  ## Compatibility

  * Certain price-related fields now use `omitempty` semantics in responses. If you previously relied on nulls for absent values, note these keys may now be omitted when data is unavailable.

  ## Docs

  * New API page: [Get batched token prices on a network](/api-reference/tokens/get-batched-token-prices-on-a-network).
  * Updated tutorials and references to include batch pricing guidance.
</Update>

<Update label="2025-06-17" description="v1.3.1" tags={["API", "Schema", "Docs"]}>
  ## Enhanced

  * **Transaction Schema:**
    * Added `token_0_symbol` and `token_1_symbol` fields to transaction objects for explicit token symbol tracking.
    * Added `price_0`, `price_1`, `price_0_usd`, and `price_1_usd` fields to transaction objects for detailed price reporting.
    * Added `created_at` field to transaction objects for precise transaction timestamping.

  ## Migration/Compatibility

  * No breaking changes to existing endpoints, but clients parsing transaction objects should update their models to support the new fields for full compatibility.
</Update>

### FAQs

<AccordionGroup>
  <Accordion title="How often is the API updated?">
    We ship changes continuously. Breaking changes are called out explicitly with migration guidance.
  </Accordion>

  <Accordion title="Where do I find migration paths?">
    Each breaking change section includes steps and replacement endpoints when applicable.
  </Accordion>

  <Accordion title="How can I stay notified?">
    Watch this changelog and our Discord announcements; major updates are posted there.
  </Accordion>
</AccordionGroup>

<script type="application/ld+json">
  {JSON.stringify({
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {"@type": "Question","name": "How often is the API updated?","acceptedAnswer": {"@type": "Answer","text": "We ship changes continuously; breaking changes include migration guidance."}},
        {"@type": "Question","name": "Where do I find migration paths?","acceptedAnswer": {"@type": "Answer","text": "See the breaking change sections for steps and replacement endpoints."}},
        {"@type": "Question","name": "How can I stay notified?","acceptedAnswer": {"@type": "Answer","text": "Follow this changelog and our Discord announcements for major updates."}}
      ]
    })}
</script>

<Update label="2025-01-27" description="v1.3.0" tags={["API", "Breaking Changes", "Deprecation"]}>
  ## Deprecated

  * **BREAKING**: The [`/pools`](/api-reference/pools/get-top-x-pools) endpoint has been permanently deprecated and now returns `410 Gone`
  * Users should migrate to [`/networks/{network}/pools`](/api-reference/pools/get-top-x-pools-on-a-network) to get top pools for each specific network

  ## Changed

  * Enhanced deprecation messaging with clear migration paths for affected endpoints

  ## Migration guide

  Instead of using the deprecated global pools endpoint:

  ```
  GET /pools
  ```

  Use the network-specific pools endpoint for each blockchain:

  ```
  GET /networks/ethereum/pools
  GET /networks/solana/pools
  GET /networks/fantom/pools
  ```

  This change provides better performance and more relevant results by focusing on network-specific data.
</Update>

<Update label="2025-05-12" description="v1.2.1" tags={["API", "Feature", "Docs"]}>
  ## Added

  * Introduced the optional `reorder` query parameter to the [`/networks/{network}/tokens/{token_address}/pools`](/api-reference/tokens/get-top-x-pools-for-a-token) endpoint. This allows clients to reorder pool data so the specified token becomes the primary token for all metrics and calculations.
</Update>

<Update label="2025-04-10" description="v1.2.0" tags={["API", "Breaking Changes"]}>
  ## Added

  * Added operation IDs to all endpoints for better client code generation
  * Added fully diluted valuation (`fdv`) field to token responses
  * Added detailed license information and contact details in API specification
  * Added `buy_usd` and `sell_usd` fields to provide monetary values for trades
  * Added `last_price_usd_change` field to all time intervals (24h, 6h, 1h, 30m, 15m, 5m, 1m)
  * Added organized API tags with descriptions for better navigation

  ## Changed

  * Updated OpenAPI specification from 3.0.3 to 3.1.0 for improved documentation
  * Changed [OHLCV endpoint](/api-reference/pools/get-ohlcv-data-for-a-pool-pair) response format from wrapped object to direct array of records (Breaking Change)
  * Renamed `buy`/`sell` fields to `buys`/`sells` for consistency (Breaking Change)
  * Changed [network](/api-reference/networks) response format from object to array for cleaner consumption
  * Updated network schema with improved field naming (`display_name` instead of just `name`)
  * Standardized ID field in Network schema to use string identifiers instead of numeric IDs
  * Enhanced token schema with additional fields: chain, total\_supply, added\_at, last\_updated
  * Improved parameter documentation with examples and clearer descriptions

  ## Fixed

  * Improved consistency in representing null values in responses
  * Updated example responses to more accurately reflect actual API behavior
  * Fixed formatting inconsistencies in API documentation

  ## Improved

  * Enhanced OHLCV schema with time\_open and time\_close fields to clearly define candlestick periods
  * Improved validation for time intervals and limits in OHLCV endpoint
  * Added explicit error response documentation for the /stats endpoint
  * Enhanced descriptions for all endpoints and parameters
</Update>

<Update label="2025-03-15" description="v1.1.0" tags={["API", "Feature"]}>
  ## Added

  * Support for buy/sell volume metrics across all time intervals
  * Added transaction counts to pool details
  * Added initial support for price tracking

  ## Changed

  * Improved error messaging with more specific error codes
  * Enhanced documentation with more descriptive examples

  ## Fixed

  * Corrected timestamp format inconsistencies across endpoints
  * Fixed incorrect price calculations in some edge cases
</Update>

<Update label="2025-02-01" description="v1.0.0" tags={["API", "Initial Release"]}>
  ## Added

  * Initial public beta release
  * Support for Solana network
  * Basic endpoints for [networks](/api-reference/networks), [DEXes](/api-reference/dexes/get-a-list-of-available-dexes-on-a-network), [pools](/api-reference/pools/get-top-x-pools), and [tokens](/api-reference/tokens/get-a-tokens-latest-data-on-a-network)
  * [Search functionality](/api-reference/search/search-for-tokens-pools-and-dexes) across tokens, pools, and DEXes
  * OHLCV data for historical price tracking
  * Transaction history for pools
</Update>

<Update label="2025-01-15" description="v0.9.0" tags={["API", "Beta"]}>
  ## Added

  * Pool and token details endpoints
  * Initial version of search functionality

  ## Changed

  * Improved error handling and response formats
  * Enhanced documentation with examples
</Update>

<Update label="2024-12-01" description="v0.8.0" tags={["API", "Alpha"]}>
  ## Added

  * Initial development release
  * Preliminary endpoints for pools and DEXes
</Update>
