Discovery lists
GET /v1/series, /v1/events, and /v1/markets return paginated catalogs:
- Pass
cursor=metadata.next_cursoron the next request. - Retain the same filters (
search,tags, date bounds,sort,order). - When
next_cursorisnull, you have reached the final page.
Enumerating the full catalog
The default ordering isupdated_at descending, and market rows are re-touched
constantly as prices and liquidity move — roughly 1,200 markets per minute. With a
descending sort, anything newly touched jumps to the front of the ordering, which
shifts every page you have not read yet. A multi-page walk will then miss rows.
Sort ascending when you need a complete pass. New and updated rows then land at
the end, behind your cursor, so pages you have already read stay put:
sort=start_date is the better choice for a full pass because start_at belongs to
the parent event and does not change once set, so a row never moves position
mid-walk. updated_at ascending is stable against reshuffling but a row that gets
updated moves behind your cursor and can appear a second time.
One caveat remains for any ordering: a market inserted mid-walk whose sort value
falls before your cursor will not be seen on that pass. If you are mirroring the
catalog, re-run periodically rather than assuming a single walk is exhaustive.
Historical time series
History endpoints paginate time buckets within[start_ts, end_ts):
start_ts, end_ts, and resolution from the initial request.