Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/gracenote-collections-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Nexus API v1.1.5 Collections API
description: This is the OpenAPI spec for Gracenote's Nexus API.
contact:
email: nexusengineering@nielsen.com
version: v1.1.5
servers:
- url: /proxy/nexus/v1
tags:
- name: Collections
description: API endpoints related to curated content collections.
paths:
/collections:
get:
tags:
- Collections
description: Fetch curated collections for the specified contentMarket. The video program collections will be filtered based on the apiKey's entitled streaming catalogs and optional parameter `omitCatalogIDs`.
parameters:
- $ref: '#/components/parameters/apiKeyParam'
- $ref: '#/components/parameters/collectionCategoryParam'
- $ref: '#/components/parameters/collectionItemTypesParam'
- $ref: '#/components/parameters/omitCatalogsParam'
- $ref: '#/components/parameters/languageParam'
- $ref: '#/components/parameters/contentMarketParam'
- $ref: '#/components/parameters/encodingParam'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionsResponse'
'400':
$ref: '#/components/responses/errorResponse400'
'401':
$ref: '#/components/responses/errorResponse401'
'403':
$ref: '#/components/responses/errorResponse403'
'404':
$ref: '#/components/responses/errorResponse404'
'429':
$ref: '#/components/responses/errorResponse429'
4XX:
$ref: '#/components/responses/errorResponse4XX'
5XX:
$ref: '#/components/responses/errorResponse5XX'
summary: Get collections
x-summary-source: derived
operationId: getCollections
x-operation-id-source: derived
/collections/{collectionID}:
get:
tags:
- Collections
description: 'Fetch collections identified by the _collectionID_.
Note that for sports entity collections like teams and leagues, you should use the _teamID_, _leagueID_ and _conferenceID_ as the _collectionID_.'
parameters:
- $ref: '#/components/parameters/apiKeyParam'
- name: collectionID
in: path
required: true
description: The unique identifier of the collection.
schema:
type: string
- $ref: '#/components/parameters/collectionItemTypesParam'
- $ref: '#/components/parameters/languageParam'
- $ref: '#/components/parameters/contentMarketParam'
- $ref: '#/components/parameters/omitCatalogsParam'
- $ref: '#/components/parameters/encodingParam'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionsResponse'
'400':
$ref: '#/components/responses/errorResponse400'
'401':
$ref: '#/components/responses/errorResponse401'
'403':
$ref: '#/components/responses/errorResponse403'
'404':
$ref: '#/components/responses/errorResponse404'
'429':
$ref: '#/components/responses/errorResponse429'
4XX:
$ref: '#/components/responses/errorResponse4XX'
5XX:
$ref: '#/components/responses/errorResponse5XX'
summary: Get collections by collection id
x-summary-source: derived
operationId: getCollectionsByCollectionID
x-operation-id-source: derived
components:
schemas:
CollectionCategory:
type: string
description: note that GENERAL has been deprecated. Please use CATEGORY for radio station collections organized by Radio Station Category like 'Adult Pop' or 'Local & Community' and TOPIC for podcast collections organized by topics like 'Health & Living' and 'News & Politics'. GENRE is used for VIDEOPROGRAMS (program bundle) collections.
enum:
- NEWS
- CATEGORY
- TOPIC
- GENRE
- TEAM
- LEAGUE
- CONFERENCE
- SPORT
- CITY
- STATE
- COUNTRY
- GENERAL
URLObject:
type: object
additionalProperties: false
required:
- URL
- type
- content
- contentType
properties:
URL:
type: string
type:
type: string
enum:
- web
- mobile
- desktop
content:
type:
- string
- 'null'
enum:
- MEDIA
- FEED
- WEBSITE
- STREAM
contentType:
type:
- string
- 'null'
examples:
- audio/mpeg
CollectionTag:
type: object
additionalProperties: false
description: Tag object for collection metadata. Populated for VIDEOPROGRAMS collections (genreType, programType); unused for other itemTypes.
required:
- genreType
- programType
properties:
genreType:
type: string
description: Video collection genre (e.g. COMEDY, SCIENCE-FICTION). Empty string when not applicable.
programType:
type: string
description: Whether the collection contains movies or series. Empty string when not applicable.
enum:
- MOVIES
- SERIES
DabData:
type:
- object
- 'null'
properties:
eid:
type:
- string
- 'null'
sid:
type:
- string
- 'null'
scids:
type:
- string
- 'null'
serviceLabel:
type:
- string
- 'null'
serviceLabelShort:
type:
- string
- 'null'
PodcastEpisodeLink:
type: object
additionalProperties: false
required:
- URL
- contentType
- sizeBytes
properties:
URL:
type: string
contentType:
type:
- string
- 'null'
examples:
- audio/mpeg
sizeBytes:
type:
- integer
- 'null'
RadioStationTeam:
type: object
additionalProperties: false
required:
- teamID
- teamName
- language
- flagship
properties:
teamID:
type: string
description: Gracenote sports team ID.
teamName:
type: string
description: Name of the sports team.
language:
type: string
description: Language of the broadcast affiliation.
flagship:
type: boolean
description: Indicates if this station is a flagship station for the team.
Image:
type: object
additionalProperties: false
required:
- orientation
- type
- URL
- contentType
properties:
orientation:
type: string
description: Orientation of the image.
enum:
- LANDSCAPE
- PORTRAIT
- SQUARE
type:
type: string
enum:
- ARTWORK
- LOGO
- HEADSHOT
- FLAG
- ARTIST
- JERSEY
- POSTER
- BANNER
- IMAGE_3_4
- IMAGE_4_3
- IMAGE_16_9
- BRAND_LOGO
URL:
type: string
description: Note that some image hosting platforms require a user-agent header to be specified when fetching images.
contentType:
type:
- string
- 'null'
StreamingCatalog:
type: object
additionalProperties: false
required:
- name
- catalogID
- images
- catalogType
description: Streaming provider.
properties:
name:
type: string
catalogID:
type: string
catalogType:
type: string
enum:
- AUDIO
- VIDEO
images:
type: array
items:
$ref: '#/components/schemas/Image'
StreamObject:
type: object
additionalProperties: false
required:
- URL
- contentType
properties:
URL:
type: string
contentType:
type:
- string
- 'null'
examples:
- audio/mpeg
bitRate:
type:
- integer
- 'null'
channels:
type:
- integer
- 'null'
sampleRate:
type:
- integer
- 'null'
AvailabilityURL:
type: object
additionalProperties: false
description: URLs for streaming the related content.
required:
- type
- URL
properties:
URL:
type: string
type:
type: string
enum:
- web
- android
- aaos
Collection:
type: object
additionalProperties: false
required:
- collectionID
- name
- collectionCategory
- itemType
- lastUpdatedUTC
- contentMarket
- tags
- items
properties:
collectionID:
type: string
name:
type: string
collectionCategory:
$ref: '#/components/schemas/CollectionCategory'
itemType:
$ref: '#/components/schemas/CollectionItemType'
lastUpdatedUTC:
type: string
format: date-time
examples:
- '2026-01-02T15:42:22.000Z'
contentMarket:
type: string
description: ISO 3166-1 alpha-3 content market for the collection (e.g. USA, DEU).
tags:
type: array
description: Required. May be empty for PODCASTS and RADIOSTATIONS collections. For VIDEOPROGRAMS, contains a tag object with genreType and programType.
items:
$ref: '#/components/schemas/CollectionTag'
items:
type: array
items:
oneOf:
- $ref: '#/components/schemas/Program'
- $ref: '#/components/schemas/Podcast'
- $ref: '#/components/schemas/RadioStation'
Availability:
type: object
additionalProperties: false
description: The information necessary to link media to streaming catalogs. In some cases Nexus provides a direct URL to the media on the streaming services while other times Nexus provides the ID for the media on the service. You will need to work with the streaming services themselves to decide how to best link to their content.
required:
- externalID
- catalog
- URLs
properties:
URLs:
type: array
items:
$ref: '#/components/schemas/AvailabilityURL'
externalID:
type: string
description: 3rd party ID for the content.
catalog:
$ref: '#/components/schemas/StreamingCatalog'
ErrorResponse:
type: object
additionalProperties: false
required:
- status
- error
- description
properties:
status:
type: integer
description: HTTP status code
error:
type: string
enum:
- internal_server_error
- invalid_query_method
- missing_query_parameter
- invalid_query_parameter_value
- resource_not_found
- invalid_request
- resource_type_error
- forbidden
- unauthorized_missing_api_key
- unauthorized_invalid_api_key
- quota_limit_exceeded
- content_too_large
- unexpected_eof_at_target
- service_unavailable
description:
type: string
RadioStation:
type: object
additionalProperties: false
required:
- radioStationID
- name
- nameShort
- flagship
- slogans
- publicValues
- broadcasts
- descriptors
- images
- streams
properties:
radioStationID:
type: string
name:
type: string
nameShort:
type: string
flagship:
type:
- boolean
- 'null'
description: Indicates if this station is a flagship station for the team.
slogans:
type: array
items:
$ref: '#/components/schemas/RadioStationSlogan'
publicValues:
type: array
items:
$ref: '#/components/schemas/RadioStationPublicValue'
broadcasts:
type: array
items:
$ref: '#/components/schemas/Broadcast'
descriptors:
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/Descriptor'
images:
type: array
items:
$ref: '#/components/schemas/Image'
streams:
type: array
items:
$ref: '#/components/schemas/StreamObject'
teams:
type: array
description: Sports team affiliations for this station. Present when the station is associated with one or more sports teams via the teamID filter.
items:
$ref: '#/components/schemas/RadioStationTeam'
Meta:
type: object
additionalProperties: false
required:
- total
- version
- references
properties:
total:
type: integer
description: Total number of data objects available.
version:
type: string
description: The API version
references:
type: object
additionalProperties: false
properties:
preferredLanguage:
type: string
contentMarket:
type: string
leagueID:
type: string
teamID:
type: string
personID:
type: string
divisionID:
type: string
conferenceID:
type: string
overallID:
type: string
matchID:
type: string
omitCatalogIDs:
type: string
minDuration:
type: string
maxDuration:
type: string
bundleID:
type: string
programID:
type: string
catalogID:
type: string
phaseID:
type: string
artistID:
type: string
albumEditionID:
type: string
recordingID:
type: string
artistName:
type: string
albumEditionName:
type: string
recordingName:
type: string
podcastID:
type: string
podcastEpisodeID:
type: string
radioStationID:
type: string
collectionID:
type: string
collectionCategory:
type: string
itemTypes:
type: string
text:
type: string
topOnly:
type: string
RadioStationSlogan:
type: object
additionalProperties: false
required:
- display
properties:
display:
type: string
description: The station slogan text.
ColorPalette:
type:
- object
- 'null'
additionalProperties: false
required:
- muted
- vibrant
- darkMuted
- lightMuted
- darkVibrant
- lightVibrant
properties:
muted:
type:
- string
- 'null'
vibrant:
type:
- string
- 'null'
darkMuted:
type:
- string
- 'null'
lightMuted:
type:
- string
- 'null'
darkVibrant:
type:
- string
- 'null'
lightVibrant:
type:
- string
- 'null'
CrewMember:
type: object
additionalProperties: false
required:
- role
- name
properties:
role:
type: string
name:
type: string
CastMember:
type: object
additionalProperties: false
required:
- role
- characterName
- actorName
properties:
role:
type: string
characterName:
type: string
actorName:
type: string
Descriptor:
type: object
additionalProperties: false
required:
- name
- descriptorID
properties:
name:
type: string
descriptorID:
type: string
CollectionShort:
type: object
additionalProperties: false
required:
- collectionID
- name
- collectionCategory
- itemType
- lastUpdatedUTC
- contentMarket
- tags
properties:
collectionID:
type: string
name:
type: string
collectionCategory:
$ref: '#/components/schemas/CollectionCategory'
itemType:
$ref: '#/components/schemas/CollectionItemType'
lastUpdatedUTC:
type: string
format: date-time
examples:
- '2026-01-02T15:42:22.000Z'
contentMarket:
type: string
description: ISO 3166-1 alpha-3 content market for the collection (e.g. USA, DEU).
tags:
type: array
description: Required. May be empty for PODCASTS and RADIOSTATIONS collections. For VIDEOPROGRAMS, contains a tag object with genreType and programType.
items:
$ref: '#/components/schemas/CollectionTag'
Broadcast:
type:
- object
- 'null'
required:
- frequency
- band
- callSign
- signalType
properties:
frequency:
type:
- string
- 'null'
band:
type: string
enum:
- FM
- AM
- DAB
callSign:
type:
- string
- 'null'
signalType:
type:
- string
- 'null'
hdMulticast:
type:
- string
- 'null'
piCodes:
type: array
items:
type: string
ecc:
type:
- string
- 'null'
dabData:
$ref: '#/components/schemas/DabData'
Podcast:
type: object
additionalProperties: false
required:
- podcastID
- name
- description
- seriesType
- explicitLanguage
- language
- owner
- author
- images
- colorPalette
- relatedCollections
- episodes
properties:
podcastID:
type: string
name:
type: string
description:
type: string
contentType:
deprecated: true
description: Deprecated - use seriesType instead.
type:
- string
- 'null'
enum:
- EPISODIC
- SERIAL
seriesType:
type:
- string
- 'null'
enum:
- EPISODIC
- SERIAL
explicitLanguage:
type:
- boolean
- 'null'
language:
type:
- string
- 'null'
author:
type:
- string
- 'null'
owner:
type:
- string
- 'null'
images:
type: array
items:
$ref: '#/components/schemas/Image'
colorPalette:
$ref: '#/components/schemas/ColorPalette'
relatedCollections:
type: array
items:
$ref: '#/components/schemas/CollectionShort'
episodes:
type: array
items:
$ref: '#/components/schemas/PodcastEpisode'
CollectionItemType:
type: string
description: This specifies what kind of items are in a collection.
enum:
- PODCASTS
- RADIOSTATIONS
- VIDEOPROGRAMS
PodcastEpisode:
type: object
additionalProperties: false
required:
- podcastEpisodeID
- podcastID
- name
- description
- links
- publicationDateUTC
- seasonNumber
- episodeType
- explicitLanguage
- durationMilliseconds
- webPage
- images
- colorPalette
properties:
podcastEpisodeID:
type: string
podcastID:
type: string
name:
type: string
description:
type:
- string
- 'null'
URLs:
deprecated: true
description: Deprecated - replaced by links and wePage.
type: array
items:
$ref: '#/components/schemas/URLObject'
links:
type: array
items:
$ref: '#/components/schemas/PodcastEpisodeLink'
publicationDateUTC:
type: string
format: date-time
examples:
- '2026-01-04T22:30:00.000Z'
webPage:
type:
- string
- 'null'
seasonNumber:
type:
- integer
- 'null'
episodeType:
type:
- string
- 'null'
description: todo enum? [FULL, TRAILER, BONUS, null]
explicitLanguage:
type:
- boolean
- 'null'
durationMilliseconds:
type:
- integer
- 'null'
images:
type: array
items:
$ref: '#/components/schemas/Image'
colorPalette:
$ref: '#/components/schemas/ColorPalette'
sizeBytes:
deprecated: true
description: Deprecated - use the sizeBytes in the episode link instead.
type:
- integer
- 'null'
RadioStationPublicValue:
type: object
additionalProperties: false
required:
- container
- region
- state
properties:
container:
type: string
description: Public-value container identifier.
region:
type:
- string
- 'null'
description: Region associated with the public value, or null when not available.
state:
type: string
description: State or province associated with the public value.
CollectionsResponse:
type: object
additionalProperties: false
required:
- meta
- data
properties:
meta:
$ref: '#/components/schemas/Meta'
data:
type: array
items:
$ref: '#/components/schemas/Collection'
Program:
type: object
additionalProperties: false
required:
- programID
- name
- nameShort
- description
- programType
- programSubType
- rating
- country
- releaseYear
- cast
- crew
- durationMilliseconds
- descriptors
- availableOn
- images
properties:
programID:
type: string
name:
type: string
nameShort:
type:
- string
- 'null'
description: When available, a shortened version of the name that is 20 characters or less.
description:
type: string
programType:
type: string
description: The type of the program, examples include "Feature Film", "TV Movie", "Short Film", "Series", "Miniseries" and "Special"
examples:
- Feature Film
programSubType:
type: string
description: Additional program categorization, denoting how a program was originally produced and/or distributed. Examples include "Compilation", "Episode", "Feature Film", "Highlights", "Miniseries", "Music Video", "Off Air", "Paid Program", "Preview", "Series", "Short Film", "Special", "Sport", "Sport Event", "Sport-Related Episode", "TBA", "Team Event", "Trailer" and "TV Movie"
examples:
- Miniseries
rating:
type: string
description: The rating in the ratings system associated with the content market.
country:
type: string
description: Country of origin of the program.
releaseYear:
type:
- number
- 'null'
description: Year of release.
cast:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CastMember'
crew:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CrewMember'
durationMilliseconds:
type:
- number
- 'null'
description: Running time of the program.
descriptors:
type: object
additionalProperties: false
required:
- genres
properties:
genres:
type: array
items:
$ref: '#/components/schemas/Descriptor'
availableOn:
type: array
items:
$ref: '#/components/schemas/Availability'
images:
type: array
items:
$ref: '#/components/schemas/Image'
responses:
errorResponse403:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 403
error: forbidden
description: GN-APIKEY is not entitled for this request.
errorResponse4XX:
description: Other 4XX may occur. Please read the error description for more information.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 405
error: invalid_query_method
description: Only GET is supported for this endpoint.
errorResponse400:
description: Bad Request. Please see the error description for more details.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 400
error: invalid_query_parameter_value
description: Unsupported contentMarket values
errorResponse429:
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 429
error: quota_limit_exceeded
description: Too many requests. Client exceeded their allocated rate limit.
errorResponse401:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 401
error: unauthorized_missing_api_key
description: GN-APIKEY header must be provided.
errorResponse404:
description: The specified object was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 404
error: resource_not_found
description: Resource not found.
errorResponse5XX:
description: An unexpected error occurred on the server. Please see the error description for more details.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
default:
value:
status: 500
error: internal_server_error
description: Server encountered an unexpected condition that prevented it from fulfilling the request.
parameters:
omitCatalogsParam:
name: omitCatalogIDs
in: query
required: false
allowEmptyValue: true
description: 'Comma separated list of streaming catalogIDs used to exclude content from particular streaming catalogs.
This is honored for `/collections`, `/programs`, and `/programbundles` when itemTypes includes VIDEOPROGRAMS,
and for `/search` when itemTypes includes VIDEOMOVIES and/or VIDEOSHOWS.
'
schema:
type: string
examples:
- 111777,81277
contentMarketParam:
in: query
name: contentMarket
description: The market for the content. This parameter is used to tailor the content based on the target market as set by the manufacturer.
required: true
schema:
type: string
enum:
- AUS
- CAN
- DEU
- ESP
- FRA
- GBR
- IND
- ITA
- JPN
- KOR
- USA
examples:
default:
value: USA
collectionCategoryParam:
name: collectionCategory
in: query
required: true
description: 'Filter collections by collection category. Currently these collectionCategory mappings are supported:
PODCASTS collections exist for: _NEWS_, _TOPIC_, _TEAM_, _LEAGUE_, _CONFERENCE_ and _SPORT_
RADIOSTATIONS collections exist for: _NEWS_, _CATEGORY_, _TEAM_, _CITY_, _STATE_, _COUNTRY_ and _SPORT_
VIDEOPROGRAMS: responses use _GENRE_ for curated program-bundle collections.
Note that a `Sports` entitlement is needed for collections with these categories: _SPORT_, _LEAGUE_, _TEAM_ and _CONFERENCE_
A `News & Talk` entitlement is needed for collections with these categories: _NEWS_, _CATEGORY_ and _TOPIC_
A `RadioStationID` entitlement is needed for collections with these categories: _CITY_, _STATE_ and _COUNTRY_
'
schema:
$ref: '#/components/schemas/CollectionCategory'
collectionItemTypesParam:
name: itemTypes
in: query
required: true
description: 'Filter collections by the type of items they contain. Comma-separate multiple values.
'
schema:
type: array
items:
$ref: '#/components/schemas/CollectionItemType'
explode: false
encodingParam:
description: Optional header to specify the encoding type that the client is hoping to receive.
name: Accept-Encoding
in: header
required: false
schema:
type: string
examples:
- gzip
apiKeyParam:
name: GN-APIKEY
in: header
description: API key to authorize the request.
required: true
schema:
type: string
examples:
- your-api-key
languageParam:
name: preferredLanguage
in: query
description: The preferred language for the content is a two-letter country and two-letter language code, such as en-US. The API returns localized strings in the specified language if available. Otherwise, the API will default to the primary language of the contentMarket.
required: true
schema:
pattern: ^[a-z]{2}-[A-Z]{2}$
examples:
- en-GB