{"openapi":"3.1.0","info":{"title":"Vimeo OTT (BYOK) API","version":"0.1.0","description":"Vimeo OTT (BYOK) lets an AI assistant read your own Vimeo OTT data through the Vimeo OTT API with a key you supply (Vimeo OTT API key). Read-only: 9 tools (list_products, get_product, list_product_prices, list_videos, get_video, list_collections, list_collection_items, list_live_events, get_live_event). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vimeo-ott.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vimeo-ott/docs"},"termsOfService":"https://connectorbay.com/byok-vimeo-ott/terms"},"servers":[{"url":"https://byok-vimeo-ott.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vimeo-ott/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List the subscription and rental products of the Vimeo OTT platform, optionally only active ones. Paged (page, per_page)","description":"List the subscription and rental products of the Vimeo OTT platform, optionally only active ones. Paged (page, per_page). Use for \"Which products does my Vimeo OTT platform sell\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text to filter by title or name.","title":"Query"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only products currently available to customers.","title":"Active"},"sort":{"anyOf":[{"enum":["alphabetical","newest","oldest","position"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: alphabetical, newest, oldest or position.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 50).","title":"Per Page"}},"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product":{"post":{"operationId":"get_product","summary":"Get one product: name, description, monthly and yearly prices, active flag and content counts. Use for \"How much does Vi","description":"Get one product: name, description, monthly and yearly prices, active flag and content counts. Use for \"How much does Vimeo OTT product 1 cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_id":{"description":"Numeric ID of the Vimeo OTT product, for example 1.","maxLength":20,"title":"Product Id","type":"string"}},"required":["product_id"],"title":"get_productArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_prices":{"post":{"operationId":"list_product_prices","summary":"List the prices of one product per currency (monthly and yearly, in cents and formatted). Use for \"What are the prices o","description":"List the prices of one product per currency (monthly and yearly, in cents and formatted). Use for \"What are the prices of Vimeo OTT product 1 in each currency\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_id":{"description":"Numeric ID of the Vimeo OTT product, for example 1.","maxLength":20,"title":"Product Id","type":"string"}},"required":["product_id"],"title":"list_product_pricesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_videos":{"post":{"operationId":"list_videos","summary":"List the videos of the platform with title, status, duration and dates. Paged; search with query. Use for \"What videos a","description":"List the videos of the platform with title, status, duration and dates. Paged; search with query. Use for \"What videos are on my Vimeo OTT platform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text to filter by title or name.","title":"Query"},"plan":{"anyOf":[{"enum":["public","free","standard"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this plan: public, free or standard.","title":"Plan"},"sort":{"anyOf":[{"enum":["alphabetical","newest","oldest","plays","finishes","duration"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: alphabetical, newest, oldest, plays, finishes or duration.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 50).","title":"Per Page"}},"title":"list_videosArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_video":{"post":{"operationId":"get_video","summary":"Get one video: title, description, status, duration, subtitles tracks and metadata such as director and season. Use for ","description":"Get one video: title, description, status, duration, subtitles tracks and metadata such as director and season. Use for \"How long is Vimeo OTT video 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"video_id":{"description":"Numeric ID of the video, for example 1.","maxLength":20,"title":"Video Id","type":"string"}},"required":["video_id"],"title":"get_videoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_collections":{"post":{"operationId":"list_collections","summary":"List collections (series, movies, seasons, playlists) with title, type and dates, optionally of one product or type. Pag","description":"List collections (series, movies, seasons, playlists) with title, type and dates, optionally of one product or type. Paged. Use for \"What series are on my Vimeo OTT platform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text to filter by title or name.","title":"Query"},"plan":{"anyOf":[{"enum":["public","free","standard"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this plan: public, free or standard.","title":"Plan"},"type":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated collection types to keep, for example 'series,movie'.","title":"Type"},"product":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only collections of this product, given as its API href such as https://api.vhx.tv/products/1.","title":"Product"},"active":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":null,"description":"True to keep only collections that have a plan set.","title":"Active"},"sort":{"anyOf":[{"enum":["alphabetical","newest","oldest","latest"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: alphabetical, newest, oldest or latest.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 50).","title":"Per Page"}},"title":"list_collectionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_collection_items":{"post":{"operationId":"list_collection_items","summary":"List the items (videos or sub-collections) inside one collection in order. Paged. Use for \"What episodes are in Vimeo OT","description":"List the items (videos or sub-collections) inside one collection in order. Paged. Use for \"What episodes are in Vimeo OTT collection 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_id":{"description":"Numeric ID of the collection, for example 1.","maxLength":20,"title":"Collection Id","type":"string"},"type":{"anyOf":[{"enum":["videos","extras","seasons"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this kind: videos, extras or seasons.","title":"Type"},"sort":{"anyOf":[{"enum":["newest","oldest","position"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: newest, oldest or position.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 50).","title":"Per Page"}},"required":["collection_id"],"title":"list_collection_itemsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_live_events":{"post":{"operationId":"list_live_events","summary":"List the live events of one product with title, live status, media type and dates. Paged. Use for \"Which live events doe","description":"List the live events of one product with title, live status, media type and dates. Paged. Use for \"Which live events does Vimeo OTT product 1 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product":{"description":"Product ID or API href the live events belong to.","maxLength":200,"title":"Product","type":"string"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text to filter by title or name.","title":"Query"},"sort":{"anyOf":[{"enum":["alphabetical","newest","oldest","title","latest","updated_at","created_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: alphabetical, newest, oldest, title, latest, updated_at or created_at.","title":"Sort"},"order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Direction: ASC or DESC.","title":"Order"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 50).","title":"Per Page"}},"required":["product"],"title":"list_live_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_live_event":{"post":{"operationId":"get_live_event","summary":"Get one live event: title, descriptions, live status (for example pending or live), media type and linked product IDs. U","description":"Get one live event: title, descriptions, live status (for example pending or live), media type and linked product IDs. Use for \"Is Vimeo OTT live event 1 live yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"live_event_id":{"description":"Numeric ID of the live event, for example 1.","maxLength":20,"title":"Live Event Id","type":"string"}},"required":["live_event_id"],"title":"get_live_eventArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}