Catalog API filters
Use these filters on /stories, /moments, and /videos to retrieve only the content you need. The /ids endpoints ignore filters: see Fetching by ID.
Filters include primary filters (title, labels, status, geo, live, and dates) and entity filters (game, team, player, round, and season).
Primary filters
| Parameter | Type | Description |
|---|---|---|
Title | string | Filter by title (case-insensitive substring match) |
LabelsFilterExpression | string | Filter using a label expression (see below) |
Statuses | array of strings | Filter by current status (Draft or Active). Send Statuses=Active unless you need drafts: a Draft item's htmlUrl is an empty player. |
Geo | string | Return only content that can be shown in this country (ISO 3166 two-letter code). Case-sensitive: send gb, not GB |
OnlyLive | boolean | true returns only currently live content. Applies to /stories only |
UpdateTime.From | string (datetime) | Updated at or after this time |
UpdateTime.To | string (datetime) | Updated at or before this time |
CreateTime.From | string (datetime) | Created at or after this time |
CreateTime.To | string (datetime) | Created at or before this time |
Label expression filtering
LabelsFilterExpression takes a JSON array:
[operator, condition1, condition2, ...]
operatoris"and"or"or"- conditions are label values, or nested arrays of the same shape
| Example | Meaning |
|---|---|
["and", "football", "recap"] | both labels |
["or", "football", "basketball", "hockey"] | any of the three |
["and", ["or", "football", "basketball"], "highlight"] | football or basketball, and highlight |
["or", ["and", "football", "recap"], ["and", "basketball", "highlight"]] | either combination |
Label values are lowercased before matching, so Football and football behave identically. Use the identifier from labels[], not the title. There is no lookup endpoint for labels: harvest labels[].identifier from a page of content, then filter.
Date format
All date parameters should be in ISO 8601 format:
YYYY-MM-DDThh:mm:ssZ
Entity filters
An entity is a game, team, player, round, or season tied to the content.
To filter by entity, send an ID. Use either the WSC ID (wscId on the entity in the response) or the ID from the data service provider (providerId).
There is no lookup endpoint for these IDs. Request a page of content without entity filters and read metadata.game, metadata.team, metadata.player, metadata.round, and metadata.season. Each object can be null on a given item, so pull enough pages to collect the IDs you need. Most integrations pull once, build a local map, then filter against it.
There is no Sport field and no competition filter. To scope a feed to one sport, filter returned items by metadata.competitions[].wscId. metadata.competition is only the first competition on the item.
Entities.IdType tells the API which ID you are sending: WscId or ServiceProviderId. If you omit it, the API uses WscId. If you send any Entities.*.ServiceProviderId, also send Entities.IdType=ServiceProviderId. Otherwise that entity filter is ignored. An invalid value returns 400.
| Parameter | Entity | Type | ID source |
|---|---|---|---|
Entities.Game.WscId | Game | integer | WSC ID |
Entities.Game.ServiceProviderId | Game | string | Data service provider |
Entities.Team.WscId | Team | integer | WSC ID |
Entities.Team.ServiceProviderId | Team | string | Data service provider |
Entities.Player.WscId | Player | integer | WSC ID |
Entities.Player.ServiceProviderId | Player | string | Data service provider |
Entities.Round.WscId | Round | integer | WSC ID |
Entities.Round.ServiceProviderId | Round | string | Data service provider |
Entities.Season.WscId | Season | integer | WSC ID |
Entities.Season.ServiceProviderId | Season | string | Data service provider |
Entities.IdType | All | string | Which ID you sent: WscId or ServiceProviderId |
Example requests
# Football content created in the last 24 hours
GET /v1/stories?LabelsFilterExpression=["and","football"]&CreateTime.From=2026-09-07T00:00:00Z
# Content featuring one player
GET /v1/moments?Entities.Player.WscId=12345
# Everything for one team
GET /v1/videos?Entities.Team.WscId=678Updated about 1 month ago
