Skip to main content
Discover which tables have been updated since your last sync without fetching every endpoint. The Trassets Data API GET /changes endpoint returns metadata for changed tables and supports conditional requests via ETag to skip polling when nothing is new.
Poll /changes every 15–60 minutes. The underlying sync runs as a daily batch, so polling more often will not surface newer data — it only spends more of your 500 req/h budget. Combine this with the since/ETag pattern below so unchanged polls stay cheap.
1

Poll for changed tables

Send a 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.
Example response:
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 ETag header from the first successful /changes response. On your next poll, send it back as If-None-Match.
If no tables have changed since the ETag was issued, the API returns 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
The since parameter must not be older than 30 days. Requests with a timestamp beyond this lookback window return an error. Run a full table refresh if your last successful sync was more than 30 days ago.