---
title: "Get News Events"
method: GET
path: "/api/v1/backtesting/news-events"
tags: ["Backtesting"]
---

# Get News Events

`GET /api/v1/backtesting/news-events`

## Request

- Base URL: `https://cryptodataapi.com`
- URL: `https://cryptodataapi.com/api/v1/backtesting/news-events`
- Auth: API key in header `X-API-Key`

Query the archived market-moving news tape, with market-response labels.

The backtestable form of ``/api/v1/news/market-moving``: every qualified
catalyst with its ``impact_score``, signed ``bias``, ``corroboration``, and
the MEASURED move that followed — ``ret_15m`` / ``ret_1h`` / ``ret_4h``,
``vol_mult`` (vs that coin's own 30-day baseline), ``oi_change_pct``,
``funding_shift`` and a combined ``abnormality``. That last set is what makes
the impact score calibratable rather than merely asserted.

Two constraints worth stating plainly:

* **Only qualified events are archived.** Stories that failed the noise gate
  or scored below the impact threshold were discarded at ingest and no row
  exists for them. Do not treat this as "all news".
* **History starts when this shipped and CANNOT be backfilled.** RSS serves a
  recent window only, so no earlier tape will ever exist — the same
  constraint as ``/regimes/history``.

Response columns are NULL for windows that have not matured yet, which means
"not yet measured", not "no reaction". Pro Plus.

## Query parameters

- `symbol` string: Filter by HL perp symbol (e.g. SOL, kPEPE) or MARKET; omit for all
- `start` string, required: Start time (ISO 8601 or unix ms)
- `end` string: End time (ISO 8601 or unix ms, defaults to now). EXCLUSIVE — the range is [start, end), so consecutive windows do not repeat a boundary row.
- `min_impact` number: Minimum impact_score
- `bounds` string: Interval convention for `start`/`end`. `half-open` (default) is [start, end) — `end` is EXCLUSIVE, so consecutive windows tile without repeating a boundary row. `closed` is [start, end] — `end` INCLUSIVE, the pre-2026-08-08 behaviour; use it only to keep an existing integration byte-identical.
- `limit` integer

## Response `200`

Successful Response

- BacktestNewsEventsResponse
  - `symbol` string, nullable, required
  - `count` integer, required
  - `data` BacktestNewsEvent[], required
    - `time` integer, required
    - `event_id` string, required
    - `symbol` string, required
    - `source` string, nullable
    - `title` string, nullable
    - `url` string, nullable
    - `category` string, nullable
    - `impact_score` number, nullable
    - `bias` number, nullable
    - `severity` number, nullable
    - `confidence` number, nullable
    - `match_mode` string, nullable
    - `corroboration` integer, nullable
    - `ret_15m` number, nullable
    - `ret_1h` number, nullable
    - `ret_4h` number, nullable
    - `vol_mult` number, nullable
    - `oi_change_pct` number, nullable
    - `funding_shift` number, nullable
    - `abnormality` number, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/cryptodataapi/apis/crypto-data-api.md) · [All operations](https://skmtc.dev/cryptodataapi/apis/crypto-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cryptodataapi/apis/crypto-data-api/revisions/8628b754ca81?raw)
