openapi: 3.0.3 info: title: TiVo Video Metadata API description: >- The TiVo Video Metadata API v3 provides access to a universe of high-quality entertainment imagery and information. The HTTP-based API delivers JSON responses for TV shows, movies, episodes, and related entertainment content. Supports content search by metadata fields and precise ID-based lookup using Rovi, TMDB, and EIDR identifiers. version: v3 contact: name: TiVo Developer Support url: https://developers.tivo.com x-logo: url: https://business.tivo.com/logo.png servers: - url: https://data.tivo.com description: TiVo Video Metadata API security: - bearerAuth: [] tags: - name: Content description: Search and retrieve entertainment content metadata - name: Lookup description: Look up content by known identifiers - name: Availability description: Check content availability and licensing packages paths: /v3/content/search: get: operationId: searchContent summary: Search Content description: >- Search for entertainment content using a variety of metadata fields. Returns matching TV shows, movies, episodes, and other content assets. Use this endpoint when you don't have a known identifier for the content. tags: - Content parameters: - name: q in: query description: Search query text - title, person name, or keyword schema: type: string - name: type in: query description: Content type filter schema: type: string enum: [movie, series, episode, person, sport, program] - name: genre in: query description: Genre filter schema: type: string - name: year in: query description: Release year filter schema: type: integer - name: language in: query description: Language code (ISO 639-1) schema: type: string - name: limit in: query description: Maximum number of results to return schema: type: integer default: 10 maximum: 100 - name: offset in: query description: Pagination offset schema: type: integer default: 0 - name: include in: query description: Comma-separated list of additional fields to include schema: type: string responses: '200': description: Successful search response with matching content content: application/json: schema: $ref: '#/components/schemas/ContentSearchResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' /v3/content/{contentId}: get: operationId: lookupContentById summary: Lookup Content By ID description: >- Retrieve detailed metadata for a specific content item using a known identifier. Supports Rovi 1.1, Rovi 2.0, TMDB, and EIDR identifiers. Use this endpoint when you have a precise content identifier and need full metadata. tags: - Lookup parameters: - name: contentId in: path required: true description: Content identifier (Rovi, TMDB, or EIDR format) schema: type: string - name: idType in: query description: Type of the provided identifier schema: type: string enum: [rovi, rovi2, tmdb, eidr] - name: include in: query description: Comma-separated list of additional fields to include schema: type: string - name: language in: query description: Language code for localized metadata (ISO 639-1) schema: type: string responses: '200': description: Detailed content metadata content: application/json: schema: $ref: '#/components/schemas/ContentItem' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' /v3/content/{contentId}/images: get: operationId: getContentImages summary: Get Content Images description: >- Retrieve high-quality entertainment imagery for a specific content item including posters, backdrops, cast photos, and promotional images. tags: - Content parameters: - name: contentId in: path required: true schema: type: string - name: type in: query description: Image type filter schema: type: string enum: [poster, backdrop, still, headshot, logo] - name: width in: query description: Preferred image width in pixels schema: type: integer - name: height in: query description: Preferred image height in pixels schema: type: integer responses: '200': description: List of available images content: application/json: schema: $ref: '#/components/schemas/ImageList' '404': $ref: '#/components/responses/NotFound' /v3/content/{contentId}/seasons: get: operationId: getContentSeasons summary: Get Content Seasons description: >- Retrieve season information for a TV series including episode counts and season-level metadata. tags: - Content parameters: - name: contentId in: path required: true schema: type: string - name: language in: query schema: type: string responses: '200': description: Season list for the series content: application/json: schema: $ref: '#/components/schemas/SeasonList' '404': $ref: '#/components/responses/NotFound' /v3/content/{contentId}/episodes: get: operationId: getContentEpisodes summary: Get Content Episodes description: >- Retrieve episode listings for a TV series or specific season with episode metadata, air dates, and descriptions. tags: - Content parameters: - name: contentId in: path required: true schema: type: string - name: season in: query description: Season number to filter episodes schema: type: integer - name: limit in: query schema: type: integer default: 20 - name: offset in: query schema: type: integer default: 0 responses: '200': description: Episode list content: application/json: schema: $ref: '#/components/schemas/EpisodeList' '404': $ref: '#/components/responses/NotFound' /v3/people/{personId}: get: operationId: lookupPerson summary: Lookup Person description: >- Retrieve detailed information about a person (actor, director, writer, etc.) including biography, filmography, and images. tags: - Lookup parameters: - name: personId in: path required: true schema: type: string - name: include in: query description: Additional fields to include (credits, images, biography) schema: type: string - name: language in: query schema: type: string responses: '200': description: Person details content: application/json: schema: $ref: '#/components/schemas/Person' '404': $ref: '#/components/responses/NotFound' components: securitySchemes: bearerAuth: type: http scheme: bearer description: TiVo API authentication token responses: Unauthorized: description: Unauthorized - invalid or missing token content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Bad request - invalid parameters content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Content not found content: application/json: schema: $ref: '#/components/schemas/Error' RateLimited: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object properties: error: type: string message: type: string code: type: integer ContentSearchResponse: type: object properties: results: type: array items: $ref: '#/components/schemas/ContentItem' total: type: integer offset: type: integer limit: type: integer ContentItem: type: object properties: id: type: string description: Unique content identifier title: type: string description: Content title type: type: string description: Content type (movie, series, episode) enum: [movie, series, episode, person, sport, program] year: type: integer description: Release or premiere year description: type: string description: Content synopsis or description genres: type: array items: type: string rating: type: string description: Content rating (PG, R, TV-MA, etc.) runtime: type: integer description: Runtime in minutes languages: type: array items: type: string cast: type: array items: $ref: '#/components/schemas/CastMember' images: type: array items: $ref: '#/components/schemas/Image' externalIds: type: object properties: rovi: type: string tmdb: type: string eidr: type: string availableOn: type: array items: type: string CastMember: type: object properties: personId: type: string name: type: string role: type: string enum: [actor, director, writer, producer, composer] character: type: string Image: type: object properties: url: type: string type: type: string enum: [poster, backdrop, still, headshot, logo] width: type: integer height: type: integer language: type: string ImageList: type: object properties: images: type: array items: $ref: '#/components/schemas/Image' Season: type: object properties: seasonNumber: type: integer episodeCount: type: integer year: type: integer description: type: string SeasonList: type: object properties: seasons: type: array items: $ref: '#/components/schemas/Season' Episode: type: object properties: id: type: string title: type: string episodeNumber: type: integer seasonNumber: type: integer airDate: type: string format: date description: type: string runtime: type: integer EpisodeList: type: object properties: episodes: type: array items: $ref: '#/components/schemas/Episode' total: type: integer Person: type: object properties: id: type: string name: type: string biography: type: string birthDate: type: string format: date deathDate: type: string format: date birthPlace: type: string images: type: array items: $ref: '#/components/schemas/Image' credits: type: array items: type: object properties: contentId: type: string title: type: string role: type: string character: type: string