Skip to content

Pull the unified note + attachment change feed

GET
/sync/changes
curl --request GET \
--url https://api.engram.page/sync/changes \
--header 'Authorization: Bearer <token>'

Pulls one ordered page of the merged note and attachment change feed, each entry tagged with its type, using keyset pagination via an opaque cursor (has_more + next_cursor). fields=meta strips note content; limit is capped at 500. The cursor the client sends is recorded as its durably-applied device watermark, and a cursor older than the retention window returns 410.

limit
integer

Max rows (≤500)

fields
string

“meta” or “all”

cursor
string

Opaque keyset cursor

Changes page

Media typeapplication/json
SyncChangesResponse
object
changes
required
Array<object>
SyncChange
object
content

Note body — present only when fields=all.

string
nullable
content_hash
string
nullable
deleted
boolean
nullable
id
string format: uuid
nullable
path
string
seq
required

Per-vault ordering key.

integer
type
required
string
Allowed values: note attachment
has_more
required
boolean
next_cursor

Opaque keyset cursor; null on the last page.

string
nullable
Example
{
"changes": [
{
"type": "note"
}
]
}

Invalid cursor

Media typeapplication/json
MessageError
object
error
required
string
Example
{
"error": "not found"
}

Cursor older than retention window

Media typeapplication/json
MessageError
object
error
required
string
Example
{
"error": "not found"
}