---
title: "Cross-family delta feed since a cursor"
method: GET
path: "/changes"
tags: ["changes"]
---

# Cross-family delta feed since a cursor

`GET /changes`

## Request

- Base URL: `https://kresmion.com/v1`
- URL: `https://kresmion.com/v1/changes`
- Auth: HTTP bearer

Return only the rows in each product family that are newer than your cursor, in one call. Poll this instead of re-fetching whole family payloads every tick: it exists to cut agent token cost. Start with since (an ISO-8601 timestamp, at most 7 days old), then pass the previous response's meta.next_cursor back as cursor: it holds one position per family, so every row is delivered exactly once, including the rest of a family that hit limit_per_family (meta.truncated[family] true means more rows are pending for that family; poll again with next_cursor to get them). meta.next_since (also as_of) is a single timestamp kept for older clients: it never skips a row, but after a truncated poll it is held back to that family's last fully delivered timestamp, so re-polling with it can re-deliver rows of the other families (dedupe on id), and meta.next_since_stalled names a family whose next page cannot be reached that way (more than limit_per_family rows on one timestamp). Empty arrays mean nothing changed. A cursor is tied to the symbol filter it was issued for and expires 7 days after it was issued. Each family returns its own compact column set: signals (asset_signals), whale (whale_transactions), prediction (polymarket_markets), funding (funding_rate_history), etf_flow (crypto_etf_aggregate; has no per-symbol column so the symbol filter is ignored for it; each row carries total_kind, reported_subtotal_usd, funds_known and funds_active, total_net_flow_usd is set only when total_kind is 'total', and BTC/ETH rows for an NYSE session are served with total_kind 'withheld' and null flow values because the only session figures held for them carry no redistribution licence), gamma (options_gamma_exposure), confluence (compound_signals symbol_confluence and symbol_divergence rows; composites with a crypto-options family are not served). The optional symbol filter is case-insensitive and applies per family that has a symbol column. For deeper history than 7 days use the per-family endpoints or /v1/bulk.

## Query parameters

- `since` string, nullable: ISO-8601 timestamp to start from: rows strictly newer are returned. Must be within the last 7 days. Required unless cursor is given.
- `cursor` string, nullable: The previous response's meta.next_cursor. Resumes every family exactly where it stopped (exactly-once). Takes precedence over since.
- `families` string: Comma-separated family names. Valid: signals, whale, prediction, funding, etf_flow, gamma, confluence.
- `symbol` string, nullable: Optional symbol filter (case-insensitive), e.g. BTC or NVDA. Ignored for families with no symbol column.
- `limit_per_family` integer: Max rows returned per family (truncation is flagged in meta).

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

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