GET /changes endpoint returns metadata for changed tables and supports conditional requests via ETag to skip polling when nothing is new.
1
Poll for changed tables
Send a Example response:
GET request to /changes with an ISO-8601 UTC since timestamp. The response lists every table whose last_sync_at is after that timestamp, including the corresponding endpoint URL.2
Fetch only changed tables
For each item returned by
/changes, request the corresponding endpoint only. Skip any table that is absent from the response. This avoids unnecessary data transfer and preserves your 500 req/h rate limit budget.3
Use conditional GET on subsequent polls
Store the If no tables have changed since the ETag was issued, the API returns
ETag header from the first successful /changes response. On your next poll, send it back as If-None-Match.304 Not Modified with an empty body and does not count the request against the change-data query cost.4
Advance the since parameter
After a successful sync, store the current timestamp and use it as the
since value for the next poll. This creates a sliding window so each run evaluates only the interval since the previous run.5
Full Python example
A complete poller that tracks the
since timestamp and ETag between runs, and only
processes tables that actually changed. Requires the
requests package.poll_changes.py