Before you start
Choose the following before your first request:- A scope filter supported by the endpoint, such as
sponsor_id,sponsor_name,categories, orpublication_url. - One or more explicit platforms:
youtube,instagram,podcast,substack, ortiktok. - A durable place to save
next_sync_token.
since, until, and days_back filter when content was published;
they do not determine where activity polling resumes. If you omit them, the
endpoint uses its default rolling 90-day lookback. You can change these filters
when starting a later poll with sync_token; keep them unchanged only while
following next_cursor. Usually omit until so later polls can include newly
published content.
Poll for activity
1
Start with a timestamp
Send The response includes a page cursor when more results are available and a
sync token for starting the next poll:
activity_after as an ISO 8601 timestamp with a timezone offset:2
Process the results you want
To process every result, follow Continue until
next_cursor with the same filters. Omit
activity_after and sync_token while paging:has_more is false. Do not change filters, platforms,
publication dates, or sort order between pages.If you only want the highest-ranked results from each poll, process the
first page and intentionally leave the remaining pages behind. The same
next_sync_token appears on every page.3
Save the sync token
After successfully processing the pages you intend to keep, save
next_sync_token. If processing fails, retain your previously saved token
or current page cursor and retry without advancing.4
Start the next poll
Send the saved value as Treat the token as opaque. Do not decode, edit, or construct it yourself.
sync_token:Choose complete delivery or top results
The page cursor and sync token support different workflows:- Use
next_cursorto continue through the current set of results. - Use
next_sync_tokento move to the next poll, leaving any remaining pages behind.
Delivery and billing
A sponsorship appears in activity when it is first added to Upriver. Later corrections, deletions, or changes that make an older placement eligible are outside this feed. An empty result is valid and still includesnext_sync_token. Save it to avoid
searching the same interval again.
Existing result-based prices apply to every request. Retries and overlapping
workers can return and charge for the same rows again. Run one worker for a
given page cursor, and advance the saved sync token only after processing the
results you intend to keep.
See Sponsor names and IDs before building
saved sponsor filters or deduplication.