{"openapi":"3.1.0","info":{"title":"Dacast (BYOK) API","version":"0.1.0","description":"Dacast (BYOK) lets an AI assistant read your own Dacast data through the Dacast API with a key you supply (Dacast API key (Scale or Custom plan)). Read-only: 9 tools (list_streams, get_stream, list_online_streams, list_videos, get_video, list_playlists, list_folders, get_account_analytics, get_content_analytics). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-dacast.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-dacast/docs"},"termsOfService":"https://connectorbay.com/byok-dacast/terms"},"servers":[{"url":"https://byok-dacast.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-dacast/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_streams":{"post":{"operationId":"list_streams","summary":"List live channels with title, enabled flag and HLS URL; filter by title, enabled state or creation date. Max 100 per pa","description":"List live channels with title, enabled flag and HLS URL; filter by title, enabled state or creation date. Max 100 per page. Use for \"Which live channels do I have on Dacast\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (1 to 100).","title":"Per Page"},"title":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only channels whose title contains this text.","title":"Title"},"online":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for enabled items, false for disabled ones.","title":"Online"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this date (YYYY-MM-DD).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this date (YYYY-MM-DD).","title":"End Date"},"request_online_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include when each channel went online (slower).","title":"Request Online Status"}},"title":"list_streamsArguments","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_stream":{"post":{"operationId":"get_stream","summary":"Get one live channel's title, description, enabled flag, creation and save dates, stream technology, recording and DVR f","description":"Get one live channel's title, description, enabled flag, creation and save dates, stream technology, recording and DVR flags and HLS URL. Ingest credentials are not returned. Use for \"Is my Dacast channel recording enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stream_id":{"description":"Channel ID (UUID) from list_streams.","maxLength":200,"title":"Stream Id","type":"string"}},"required":["stream_id"],"title":"get_streamArguments","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_online_streams":{"post":{"operationId":"list_online_streams","summary":"List the channels that are broadcasting right now, with the time each went online. Use for \"Which Dacast channels are li","description":"List the channels that are broadcasting right now, with the time each went online. Use for \"Which Dacast channels are live right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_online_streamsArguments","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 video-on-demand items with title, enabled flag, HLS URL, paywall flag and renditions; filter by title, state, date ","description":"List video-on-demand items with title, enabled flag, HLS URL, paywall flag and renditions; filter by title, state, date or source stream. Max 100 per page. Use for \"Which videos are online in my Dacast account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (1 to 100).","title":"Per Page"},"title":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only videos whose title contains this text.","title":"Title"},"online":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for enabled items, false for disabled ones.","title":"Online"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this date (YYYY-MM-DD).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this date (YYYY-MM-DD).","title":"End Date"},"stream_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings of this live channel ID.","title":"Stream Id"}},"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's title, description, duration, file name and size, dimensions, codecs, disk usage, dates, enabled flag an","description":"Get one video's title, description, duration, file name and size, dimensions, codecs, disk usage, dates, enabled flag and HLS URL. Use for \"How big is my Dacast video and how long does it run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"video_id":{"description":"Video ID (UUID) from list_videos.","maxLength":200,"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_playlists":{"post":{"operationId":"list_playlists","summary":"List playlists with title, description and enabled flag; filter by title, state or creation date. Use for \"What playlist","description":"List playlists with title, description and enabled flag; filter by title, state or creation date. Use for \"What playlists do I have on Dacast\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"perpage":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (default 10).","title":"Perpage"},"title":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only playlists whose title contains this text.","title":"Title"},"online":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for enabled items, false for disabled ones.","title":"Online"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this date (YYYY-MM-DD).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this date (YYYY-MM-DD).","title":"End Date"}},"title":"list_playlistsArguments","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_folders":{"post":{"operationId":"list_folders","summary":"List folders of the library with name, path and creation date; filter by name. Use for \"How are my Dacast videos organis","description":"List folders of the library with name, path and creation date; filter by name. Use for \"How are my Dacast videos organised into folders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (1 to 100).","title":"Per Page"},"title":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only folders whose name contains this text.","title":"Title"}},"title":"list_foldersArguments","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_account_analytics":{"post":{"operationId":"get_account_analytics","summary":"Account-wide analytics for a date range: bandwidth (bytes), plays (hits), impressions (visitors) or per-country and per-","description":"Account-wide analytics for a date range: bandwidth (bytes), plays (hits), impressions (visitors) or per-country and per-asset rows, depending on data_set. Use for \"How much bandwidth did my Dacast account use per day last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resource_type":{"description":"Kind of content, singular: vod, channel or folder.","enum":["vod","channel","folder"],"title":"Resource Type","type":"string"},"data_set":{"description":"Metric set: bytesperperiod (bandwidth over time), bytespercontent (total bandwidth), visitorsperperiod (plays and impressions over time), visitorspercontent (per asset) or visitorspercountry (per country).","enum":["bytesperperiod","bytespercontent","visitorsperperiod","visitorspercontent","visitorspercountry"],"title":"Data Set","type":"string"},"startdate":{"anyOf":[{"maxLength":25,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the range, YYYY-MM-DD (a date-time such as 2026-08-01T00:00:00 is also accepted).","title":"Startdate"},"enddate":{"anyOf":[{"maxLength":25,"type":"string"},{"type":"null"}],"default":null,"description":"End of the range, YYYY-MM-DD. With daily buckets a date-only end excludes that day; use the next day or a date-time to include it.","title":"Enddate"}},"required":["resource_type","data_set"],"title":"get_account_analyticsArguments","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_content_analytics":{"post":{"operationId":"get_content_analytics","summary":"Analytics for one video, channel or folder over a date range: bandwidth (bytes), plays (hits), impressions (visitors) or","description":"Analytics for one video, channel or folder over a date range: bandwidth (bytes), plays (hits), impressions (visitors) or per-country rows, depending on data_set. Use for \"How many plays did my Dacast video get each day last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resource_type":{"description":"Kind of content, singular: vod, channel or folder.","enum":["vod","channel","folder"],"title":"Resource Type","type":"string"},"content_id":{"description":"Video or channel UUID, or the numeric folder ID.","maxLength":200,"title":"Content Id","type":"string"},"data_set":{"description":"Metric set: bytesperperiod (bandwidth over time), bytespercontent (total bandwidth), visitorsperperiod (plays and impressions over time), visitorspercontent (per asset) or visitorspercountry (per country).","enum":["bytesperperiod","bytespercontent","visitorsperperiod","visitorspercontent","visitorspercountry"],"title":"Data Set","type":"string"},"startdate":{"anyOf":[{"maxLength":25,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the range, YYYY-MM-DD (a date-time such as 2026-08-01T00:00:00 is also accepted).","title":"Startdate"},"enddate":{"anyOf":[{"maxLength":25,"type":"string"},{"type":"null"}],"default":null,"description":"End of the range, YYYY-MM-DD. With daily buckets a date-only end excludes that day; use the next day or a date-time to include it.","title":"Enddate"}},"required":["resource_type","content_id","data_set"],"title":"get_content_analyticsArguments","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}}}}