---
title: "Stream changes"
method: GET
path: "/v0/changes/stream"
tags: ["Changes"]
---

# Stream changes

`GET /v0/changes/stream`

## Request

- Base URL: `https://docs.quivr.thevibecompany.co` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.quivr.thevibecompany.co/v0/changes/stream`
- Auth: HTTP bearer

SSE over the same safe published journal with stable per-Record ordering and exact start-now semantics as polling. Cross-Record commit order is not guaranteed; resuming an older cursor can redeliver an event. Last-Event-ID takes precedence over query cursor on reconnect. id is an opaque Change Cursor; data.event_id is deduplication identity. Named change events carry ChangeEvent JSON. checkpoint events carry a cursor when no visible event is emitted, including initial start-now checkpoint. Resume cursor expires or scope changes: before headers use HTTP 410/409; after headers send stream_error with Error JSON then close, without advancing id. Use authenticated streaming fetch/http client. See contract for checkpoint framing and resync.

## Query parameters

- `cursor` string
- `corpus_id` string, required

## Headers

- `Last-Event-ID` string

## Response `200`

Successful response

## Other responses

- `default`: Structured error; see contract HTTP mapping.

---

[API](https://skmtc.dev/thevibecompany/apis/quivr-http-api.md) - [All operations](https://skmtc.dev/thevibecompany/apis/quivr-http-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thevibecompany/apis/quivr-http-api/revisions/4f4e30ba8f4e?raw)
