---
title: "Global change feed"
method: GET
path: "/v1/changes"
---

# Global change feed

`GET /v1/changes`

## Request

- Base URL: `https://domaindrift.io`
- URL: `https://domaindrift.io/v1/changes`
- Auth: API key in header `X-DomainDrift-Key`

Material infrastructure changes detected across the catalog, from the recent-observation window (last 24h). Two modes: feed (default, newest first) and sync (pass since and/or cursor - ordered (detected_at, id) ascending with keyset pagination for incremental data pulls).

## Query parameters

- `limit` integer
- `domain` string
- `type` string
- `since` string, date-time
- `cursor` string

## Response `200`

Recent changes

- object
  - `changes` object[]
    - `id` string
    - `domain` string
    - `detected_at` string, date-time
    - `change_count` integer
    - `change_summary` string
    - `changes` DeltaChange[]
      - `type` string
      - `field` string
      - `action` 'added' | 'removed' | 'changed' | 'warning'
      - `old_value` string, nullable
      - `new_value` string, nullable
  - `next_cursor` string, nullable: Sync mode only: opaque cursor for the next page, or null when this page is the end. Absent in feed mode.

## Other responses

- `400`: Unparseable since timestamp or cursor

---

[API](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api.md) · [All operations](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api/revisions/eb8e3f45736c?raw)
