{"openapi":"3.1.0","info":{"title":"FastPix (BYOK) API","version":"0.1.0","description":"FastPix (BYOK) lets an AI assistant read your own FastPix data through the FastPix API with a key you supply (FastPix access token ID). Read-only: 10 tools (list_media, get_media, list_playlists, get_playlist, list_live_streams, get_live_stream, get_live_stream_viewers, list_video_views, list_top_content, get_metric_overall). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fastpix.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fastpix/docs"},"termsOfService":"https://connectorbay.com/byok-fastpix/terms"},"servers":[{"url":"https://byok-fastpix.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fastpix/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_media":{"post":{"operationId":"list_media","summary":"List videos in the FastPix workspace with title, status, duration, resolution, playback ids and dates; 10 per page by de","description":"List videos in the FastPix workspace with title, status, duration, resolution, playback ids and dates; 10 per page by default. Use for \"Which videos are in my FastPix library\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number to fetch, starting at 1.","title":"Offset"},"order_by":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc (default desc).","title":"Order By"}},"title":"list_mediaArguments","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_media":{"post":{"operationId":"get_media","summary":"Get one FastPix video by id: title, status, duration, resolutions, playback ids, tracks and AI summary state. Use for \"S","description":"Get one FastPix video by id: title, status, duration, resolutions, playback ids, tracks and AI summary state. Use for \"Show details of FastPix media 5d2c3a1e-9f2b-4d73-8f0a-0c1f2e3d4b5a\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"media_id":{"description":"Id of the media (a UUID, from list_media).","maxLength":200,"title":"Media Id","type":"string"}},"required":["media_id"],"title":"get_mediaArguments","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 name, type (manual or smart), reference id, media count and creation time. Use for \"What FastPix pla","description":"List playlists with name, type (manual or smart), reference id, media count and creation time. Use for \"What FastPix playlists do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number to fetch, starting at 1.","title":"Offset"}},"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/get_playlist":{"post":{"operationId":"get_playlist","summary":"Get one playlist with its name, description, play order and the media it contains. Use for \"Show the media in FastPix pl","description":"Get one playlist with its name, description, play order and the media it contains. Use for \"Show the media in FastPix playlist db6e860f-cb57-43dd-8acf-39c9effd5608\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"playlist_id":{"description":"Id of the playlist (from list_playlists).","maxLength":200,"title":"Playlist Id","type":"string"}},"required":["playlist_id"],"title":"get_playlistArguments","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_streams":{"post":{"operationId":"list_live_streams","summary":"List live streams with status, resolution, recording and DVR settings and playback ids (stream keys are not returned). U","description":"List live streams with status, resolution, recording and DVR settings and playback ids (stream keys are not returned). Use for \"Which FastPix live streams do I have set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number to fetch, starting at 1.","title":"Offset"},"order_by":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc (default desc).","title":"Order By"}},"title":"list_live_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_live_stream":{"post":{"operationId":"get_live_stream","summary":"Get one live stream by id: status, limits, recording settings, playback ids and linked media ids (secrets are not return","description":"Get one live stream by id: status, limits, recording settings, playback ids and linked media ids (secrets are not returned). Use for \"Is FastPix live stream st1 active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stream_id":{"description":"Id of the live stream (from list_live_streams).","maxLength":200,"title":"Stream Id","type":"string"}},"required":["stream_id"],"title":"get_live_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/get_live_stream_viewers":{"post":{"operationId":"get_live_stream_viewers","summary":"Get the number of people currently watching a live stream. Use for \"How many people are watching FastPix live stream st1","description":"Get the number of people currently watching a live stream. Use for \"How many people are watching FastPix live stream st1 right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stream_id":{"description":"Id of the live stream (from list_live_streams).","maxLength":200,"title":"Stream Id","type":"string"}},"required":["stream_id"],"title":"get_live_stream_viewersArguments","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_video_views":{"post":{"operationId":"list_video_views","summary":"List recent viewing sessions from FastPix Video Data: video title, country, operating system, app, watch time, quality s","description":"List recent viewing sessions from FastPix Video Data: video title, country, operating system, app, watch time, quality score and any error. Use for \"Which FastPix video views ended with a playback error in the last 24 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timespan":{"anyOf":[{"enum":["60:minutes","6:hours","24:hours","3:days","7:days","30:days"],"type":"string"},{"type":"null"}],"default":null,"description":"Time window: one of 60:minutes, 6:hours, 24:hours, 3:days, 7:days or 30:days.","title":"Timespan"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number to fetch, starting at 1.","title":"Offset"},"error_code":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only views with this playback error code.","title":"Error Code"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort Order"}},"title":"list_video_viewsArguments","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_top_content":{"post":{"operationId":"list_top_content","summary":"List the most-viewed videos in a time window with total views and unique viewers. Use for \"What were my most watched Fas","description":"List the most-viewed videos in a time window with total views and unique viewers. Use for \"What were my most watched FastPix videos this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timespan":{"anyOf":[{"enum":["60:minutes","6:hours","24:hours","3:days","7:days","30:days"],"type":"string"},{"type":"null"}],"default":null,"description":"Time window: one of 60:minutes, 6:hours, 24:hours, 3:days, 7:days or 30:days.","title":"Timespan"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many videos to return (1 to 50, default 10).","title":"Limit"}},"title":"list_top_contentArguments","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_metric_overall":{"post":{"operationId":"get_metric_overall","summary":"Get the overall value of one FastPix Video Data metric (views, unique viewers, startup time, quality score ...) for a ti","description":"Get the overall value of one FastPix Video Data metric (views, unique viewers, startup time, quality score ...) for a time window. Use for \"What was my overall FastPix video startup time over the last 7 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Metric to read.","enum":["views","unique_viewers","playing_time","quality_of_experience_score","playback_score","playback_failure_percentage","exit_before_video_start","video_startup_failure_percentage","startup_score","video_startup_time","player_startup_time","page_load_time","total_startup_time","live_stream_latency","average_bitrate","buffer_count","render_quality_score","avg_upscaling","avg_downscaling","max_upscaling","max_downscaling","jump_latency","stability_score","buffer_ratio","buffer_frequency","buffer_fill"],"title":"Metric Id","type":"string"},"measurement":{"anyOf":[{"enum":["avg","median","95th","count","sum"],"type":"string"},{"type":"null"}],"default":null,"description":"Aggregation: avg, median, 95th, count or sum (default avg).","title":"Measurement"},"timespan":{"anyOf":[{"enum":["60:minutes","6:hours","24:hours","3:days","7:days","30:days"],"type":"string"},{"type":"null"}],"default":null,"description":"Time window: one of 60:minutes, 6:hours, 24:hours, 3:days, 7:days or 30:days.","title":"Timespan"}},"required":["metric_id"],"title":"get_metric_overallArguments","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}}}}