← API referenceChanges & events · API access unavailable
API REFERENCE / CHANGES
GET /v1/changes
Resume authorized metadata changes from a cursor. Webhooks provide prompt notification; the feed is the recovery path if an event is missed.
Request fields
| Location | Field | Type | Required | Description |
|---|---|---|---|---|
| Header | Authorization | string | Yes | Credential scoped to the authorized resource. |
| Query | cursor | string | No | Opaque checkpoint; omit for an authorized initial snapshot. |
Request example
Example request
GET /v1/changes?cursor=cursor_123
Authorization: Bearer <scoped token>HTTP status codes
| Status | Meaning |
|---|---|
200 OK | Success response shown below. |
400 Bad Request | Malformed cursor. |
401 Unauthorized | Missing, expired, or invalid credential. |
403 Forbidden | Credential is valid but lacks the required scope or role. |
410 Gone | Replay history expired; obtain a fresh authorized snapshot. |
429 Too Many Requests | Rate limit reached; honor Retry-After when provided. |
503 Service Unavailable | Service temporarily unavailable; retry safely. |
Response fields
| Field | Type | Example |
|---|---|---|
items | object[] | [1 shown] |
items[].id | string | change_234 |
items[].type | string | file.available |
items[].file_id | string | file_789 |
items[].version_id | string | ver_012 |
next_cursor | string | cursor_124 |
Response example
Example response
200 OK
Content-Type: application/json
{
"items": [
{
"id": "change_234",
"type": "file.available",
"file_id": "file_789",
"version_id": "ver_012"
}
],
"next_cursor": "cursor_124"
}How it works
Query parameter
cursorAn opaque checkpoint returned by an earlier page.Access changesPermission removal must stop future access and remove the applicable local projection.
Replay gapAn expired cursor must signal that a fresh authorized snapshot is needed, not silently skip changes.
Cursor retention, ordering, event schema, and snapshot bootstrap are not specified yet.
