OSAPI.os.tv
Guide

Pagination & filtering

GET /v1/registry/origins pages over canonical origins — never over carriage rows. An origin with many presentations still occupies exactly one row and can never be split across pages.

Paging

ParameterDefaultNotes
page11-based page number.
limit50Origins per page, 1–200.

Each response carries a page block with the pre-pagination total:

"page": { "page": 1, "limit": 50, "offset": 0, "returned": 21, "total": 21 }

Ordering is stable (by network address, then origin id), so a sequential sweep covers every origin exactly once — no duplicates, no omissions.

curl -H "Authorization: Bearer <token>" \
  "https://api.os.tv/v1/registry/origins?page=1&limit=50"

Filters

Filters compose (AND). Each maps to an authoritative predicate — none are inferred.

FilterValuesSelects
governance_stategoverned · ungovernedBy active governance edge.
allocation_stateallocated · unallocatedWhether a BANS allocation exists.
publication_statuspublished · heldAllocation publication state.
transportiptv · ovp · ota · fastOrigins with a resolved presentation on that transport.
has_presentationstrue · falseWhether any carriage resolves to the origin.
network_ididOrigins under one network.
station_idstation numberOrigins addressed to one station.
searchtextSubstring match on origin name or registry id.

The applied filters are echoed back under filters_applied.

curl -H "Authorization: Bearer <token>" \
  "https://api.os.tv/v1/registry/origins?governance_state=governed&publication_status=held"

See the full list example.