Skip to main content
GET /v1/changes lists every table whose last successful sync happened after the timestamp in since. Each entry carries the endpoint_url to fetch the table from. Use it to find out which tables you have to reload instead of fetching every table on each run. For the complete workflow, see Delta Sync and Incremental Sync.
There is no row-level delta. A table listed here was reloaded in full, so fetch it in full again via its endpoint_url and replace your local copy. See Sync Cycle.

Request

Response

200 OK with a JSON array, newest sync first. The array is empty if nothing changed.
Only tables with a completed sync are listed. Tables that are not released for your account do not appear.

ETag and conditional requests

Store the ETag together with the since and category it was issued for, and send it back as If-None-Match on the next poll. If the sync state has not changed, the API returns 304 Not Modified without a body. The ETag changes when a table finishes a new sync, when since or category differ, and — for transformed keys — when the key’s access permissions change. A 304 still counts toward the rate limit.

Key types

See Key types.

Errors

Errors use the problem JSON format.

Examples

The Python example polls /v1/changes and reloads every listed table in full through its endpoint_url, following next_cursor until it is null (see Pagination).
reload_changed_tables.py