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

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Headers

X-Organization-IDstring or nullOptional

Query parameters

updated_sincedatetime or nullOptional

Start from offers changed on or after this time, less a 120-second overlap (ISO-8601). Ignored with cursor.

cursorstring or nullOptional

Continue after a previous page’s next_cursor

statusenum or nullOptional
Only offers in this status
Allowed values:
tms_load_idstring or nullOptional
Only offers on the load with this TMS id
limitintegerOptional1-100Defaults to 100
Page size

Response

Successful Response
datalist of objects

Rows in (timestamp, id) order, oldest first

has_moreboolean

True when more rows follow; call again with next_cursor

next_cursorstring or nullOptional

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.

Errors

401
Unauthorized Error
403
Forbidden Error
422
Unprocessable Entity Error
429
Too Many Requests Error