Offer feed
Every carrier offer created or changed after a point, oldest change first, for keeping a TMS in sync and reconciling missed webhooks. Start with updated_since, then pass next_cursor back as cursor while has_more is true. Store the last next_cursor to resume from there. updated_since is widened by 120 seconds and the last page’s cursor may sit up to 120 seconds behind the newest row, so an offer committed late is replayed. An offer that changes again appears again too, so dedupe by id and keep the row with the latest updated_at.
Authentication: Supports API key and bearer token authentication.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Headers
Query parameters
Start from offers changed on or after this time, less a 120-second overlap (ISO-8601). Ignored with cursor.
Continue after a previous page’s next_cursor
Response
Rows in (timestamp, id) order, oldest first
True when more rows follow; call again with next_cursor
Pass as cursor to continue after the last row returned. Present on every non-empty page, so a caller can store it and resume from exactly here next time. On the last page of a sync it may sit up to 120 seconds behind the newest row, so a row committed late is replayed on the next poll: dedupe by id.

