---
title: "API version history with breaking-change flags"
method: GET
path: "/changelog"
tags: ["Meta"]
---

# API version history with breaking-change flags

`GET /changelog`

## Request

- Base URL: `https://docs.backquant.com/v2`
- URL: `https://docs.backquant.com/v2/changelog`
- Auth: API key in header `X-API-Key`

Returns the v2 release log plus the lifecycle status of v1. Customers integrating against either version use this to decide when to schedule re-integration work — `breaking: true` on any release is the signal to test, and `v1_status` flips to `deprecated` / `sunset` long before v1 is ever turned off.

Response is static — no I/O, sub-millisecond — so polling it from a CI job daily is free.

## Headers

- `X-API-Key` string, nullable

## Response `200`

Successful Response

- ChangelogResponse
  - `success` true
  - `data` ChangelogData, required
    - `current_version` string, required
    - `v1_status` 'stable' | 'deprecated' | 'sunset', required: Lifecycle status of the v1 API. `stable` = fully supported indefinitely. `deprecated` = still serving but no new features; migrate to v2. `sunset` = scheduled removal date in changes[].
    - `releases` ChangelogEntry[], required
      - `version` string, required
      - `released_at` string, required: ISO date.
      - `breaking` boolean: True if any change in this release breaks existing client code.
      - `summary` string, required
      - `changes` string[]
    - `docs_url` string
    - `openapi_url` string
  - `meta` V2Meta, required: The meta block returned alongside every v2 response. Every field after `version`/`timestamp` is optional because endpoints attach different combinations — e.g. `/v2/status` skips `symbol`, the chain endpoint sets `extra.filter_hash`, etc. Listing them here means SDKs get a typed accessor for each instead of a generic `meta: dict`.
    - `version` '2.0', required: API version tag.
    - `timestamp` string, required: ISO 8601 wall-clock when the response was built.
    - `request_id` string, nullable: X-Request-ID for tracing across logs / Sentry.
    - `symbol` string, nullable: Symbol the response is about, if applicable.
    - `spot_price` number, nullable: Current spot price for the symbol.
    - `computed_at` string, nullable: ISO 8601 of when the underlying cache value was last written.
    - `freshness_seconds` number, nullable: `now - computed_at` in seconds; useful for staleness alarms.
    - `source` string[], nullable: Upstream venue list the data flowed through.
    - `exchanges_filtered` string[], nullable: Echo of the `?exchanges=` filter when one was applied.
    - `rate_limit` object, nullable: `{limit, remaining, reset}` echo of the rate-limit headers.
    - `extra` object, nullable: Open dict for endpoint-specific metadata (filter_hash, etc.).

## Other responses

- `401`: Unauthorized
- `404`: No data available for the requested resource
- `422`: Validation error on query parameters
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/backquant/apis/backquant-api-v2.md) · [All operations](https://skmtc.dev/backquant/apis/backquant-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/backquant/apis/backquant-api-v2/revisions/3c1c96b3cc24?raw)
