MCP Server

apivideo

io.usefulapi/apivideo
Media & Content Public & reachable MCP 2026-07-28

What this MCP does

Creates and manages videos and live streams, captions, players, webhooks, and playback analytics.

apivideo_create_live_stream
Create live stream (write)
WRITE. Create a new live stream, returning a stream key and RTMP ingest URL to broadcast to. POST /live-streams.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Live stream name. Required.'}, 'public': {'type': 'boolean', 'description': 'Whether the stream is public (default true) or private.'}, 'playerId': {'type': 'string', 'description': 'Id of a custom player theme to attach.'}}}
apivideo_create_video
Create video (write)
WRITE. Create a new video object. If `source` (a public video URL) is provided, api.video ingests the video from that URL — recommended for hosted use, since raw file bytes cannot stream through MCP. POST /videos.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags for the video.'}, 'title': {'type': 'string', 'description': 'Video title. Required.'}, 'public': {'type': 'boolean', 'description': 'Whether the video is public (default true) or private.'}, 'source': {'type': 'string', 'description': 'Public URL of a video file to ingest from. Recommended over uploading bytes.'}, 'metadata': {'type': 'object', 'description': 'Key/value metadata pairs (sent as [{key,value}]).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'playerId': {'type': 'string', 'description': 'Id of a custom player theme to attach.'}, 'panoramic': {'type': 'boolean', 'description': 'Whether the video is a 360/panoramic video.'}, 'mp4Support': {'type': 'boolean', 'description': 'Whether to also generate a downloadable MP4.'}, 'description': {'type': 'string', 'description': 'Video description.'}}}
apivideo_delete_video
Delete video (write)
WRITE. Permanently DELETE a video and all its assets. This cannot be undone. DELETE /videos/{videoId}.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'videoId': {'type': 'string', 'description': 'The video id to permanently delete.'}}}
apivideo_get_live_stream
Get live stream
Get a single live stream object by id (stream key, RTMP ingest, player URL). Read-only. GET /live-streams/{liveStreamId}.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['liveStreamId'], 'properties': {'liveStreamId': {'type': 'string', 'description': 'The live stream id, e.g. li400mYKSgQ6xs7taUeSaEup.'}}}
apivideo_get_live_stream_analytics
Live stream analytics (plays)
Aggregated play analytics for live streams over a date range, grouped by a dimension. Read-only. GET /analytics/live-streams/plays.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['from', 'dimension'], 'properties': {'to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date yyyy-mm-dd (inclusive).'}, 'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date yyyy-mm-dd (inclusive). Required.'}, 'filter': {'type': 'string', 'description': 'Filter expression, e.g. "liveStreamId:li123".'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'dimension': {'enum': ['liveStreamId', 'emittedAt', 'country', 'deviceType', 'operatingSystem', 'browser'], 'type': 'string', 'description': 'Dimension to group plays by.'}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_get_video
Get video
Get a single video object by id (title, assets, player URL, status flags). Read-only. GET /videos/{videoId}.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'videoId': {'type': 'string', 'description': 'The video id, e.g. vi4k0jvEUuaTdRAEjQ4Jfrgz.'}}}
apivideo_get_video_analytics
Video analytics (plays)
Aggregated play analytics for videos over a date range, grouped by a dimension. Read-only. GET /analytics/videos/plays.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['from', 'dimension'], 'properties': {'to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date yyyy-mm-dd (inclusive).'}, 'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date yyyy-mm-dd (inclusive). Required.'}, 'filter': {'type': 'string', 'description': 'Filter expression, e.g. "videoId:vi123".'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'dimension': {'enum': ['videoId', 'emittedAt', 'country', 'deviceType', 'operatingSystem', 'browser'], 'type': 'string', 'description': 'Dimension to group plays by.'}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_get_video_status
Get video status
Get encoding and ingest status for a video (upload progress, encoding qualities, playability). Read-only. GET /videos/{videoId}/status.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'videoId': {'type': 'string', 'description': 'The video id.'}}}
apivideo_list_captions
List captions
List caption tracks for a video (language, source URL, default flag). Read-only. GET /videos/{videoId}/captions.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'videoId': {'type': 'string', 'description': 'The video id.'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_list_chapters
List chapters
List chapter tracks for a video. Read-only. GET /videos/{videoId}/chapters.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'videoId': {'type': 'string', 'description': 'The video id.'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_list_live_streams
List live streams
List live streams in the account, with optional filters (streamKey, name) and sorting. Read-only. GET /live-streams.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'description': 'Filter by live stream name (substring).'}, 'sortBy': {'enum': ['createdAt', 'updatedAt'], 'type': 'string', 'description': 'Field to sort by.'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'streamKey': {'type': 'string', 'description': 'Filter by exact stream key.'}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_list_players
List players
List customized player themes in the account. Read-only. GET /players.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'sortBy': {'enum': ['createdAt', 'updatedAt'], 'type': 'string', 'description': 'Field to sort by.'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_list_videos
List videos
List videos in the account, with optional filters (title, tags, metadata, description, liveStreamId) and sorting. Read-only. GET /videos.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by tags (all must match). Sent as tags[].'}, 'title': {'type': 'string', 'description': 'Filter by video title (substring).'}, 'sortBy': {'enum': ['title', 'createdAt', 'publishedAt', 'updatedAt'], 'type': 'string', 'description': 'Field to sort by.'}, 'metadata': {'type': 'object', 'description': 'Filter by metadata key/value pairs. Sent as metadata[key]=value.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'description': 'Filter by description (substring).'}, 'liveStreamId': {'type': 'string', 'description': 'Return only videos recorded from this live stream id.'}}}
apivideo_list_webhooks
List webhooks
List webhooks configured in the account, optionally filtered by event name. Read-only. GET /webhooks.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'events': {'type': 'string', 'description': 'Filter by event name, e.g. "video.encoding.quality.completed".'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 25.', 'exclusiveMinimum': 0}, 'currentPage': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}}}
apivideo_update_video
Update video (write)
WRITE. Update fields on an existing video. Only the provided fields are changed. PATCH /videos/{videoId}.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['videoId'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Replacement tag list.'}, 'title': {'type': 'string', 'description': 'New title.'}, 'public': {'type': 'boolean', 'description': 'New public/private flag.'}, 'videoId': {'type': 'string', 'description': 'The video id to update.'}, 'metadata': {'type': 'object', 'description': 'Replacement metadata (sent as [{key,value}]).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'playerId': {'type': 'string', 'description': 'Player theme id to attach.'}, 'panoramic': {'type': 'boolean', 'description': 'New panoramic flag.'}, 'description': {'type': 'string', 'description': 'New description.'}}}
Changed
apivideo_create_live_stream
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_delete_video
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_update_video
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_create_video
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_get_live_stream_analytics
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_get_video_analytics
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_webhooks
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_players
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_chapters
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_captions
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_get_live_stream
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_live_streams
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_get_video_status
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_get_video
Oct. 1, 2026, 2:50 a.m.
Changed
apivideo_list_videos
Oct. 1, 2026, 2:50 a.m.
Added
apivideo_create_live_stream
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_delete_video
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_update_video
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_create_video
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_get_live_stream_analytics
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_get_video_analytics
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_webhooks
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_players
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_chapters
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_captions
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_get_live_stream
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_live_streams
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_get_video_status
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_get_video
Sept. 17, 2026, 12:53 p.m.
Added
apivideo_list_videos
Sept. 17, 2026, 12:53 p.m.