Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/videoverse-streams-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Magnifi Partner Integration Streams API
version: v1
summary: Partner API for Magnifi by VideoVerse — stream ingestion, AI clip and highlight retrieval, roster and match-schedule management, and webhook subscriptions.
description: Magnifi offers a comprehensive suite of API endpoints designed for seamless integration, enabling partners to access platform resources, content, and metadata efficiently.
contact:
name: Magnifi by VideoVerse
url: https://magnifi.ai/contact-us
termsOfService: https://magnifi.ai/terms-conditions
servers:
- url: '{PARTNER_BASE_URL}'
description: Templated. Magnifi publishes its partner API base only as the Postman variable {{PARTNER_BASE_URL}}; the concrete host is issued to each partner alongside the Access Key and Access Secret and is not stated in the public documentation.
variables:
PARTNER_BASE_URL:
default: '{PARTNER_BASE_URL}'
description: Partner-specific API base URL issued by Magnifi.
security:
- AccessKey: []
AccessSecret: []
tags:
- name: Streams
paths:
/v1/stream:
post:
operationId: createStream
summary: Create stream
tags:
- Streams
description: 'Create a new stream with the specified details.
Request Body:
title (string, required): The title of the stream.
url (string, required): The URL of the stream.
category (string, required): The category of the stream.
fireAt (string, required): The timestamp at which the stream should start.
streamStartTime (string, optional): The start time of the stream.
fields (object, required): Additional fields for the stream.
ext_stream_id (string, optional): The external stream ID.
templateName (string, required): The name of the template.
publishingWebhookUrl (string, optional): Webhook URL where you want us to send metadata.
hls_live_start_index (number, optional): Default value 1
tournamentId (string, optional): ID for the tournament to which the stream belongs.
homeTeamId (string, optional): ID for the home team participating in the stream.
awayTeamId (string, optional): ID for the away team participating in the stream.
matchScheduleId (string, optional): ID for the scheduled match linked to the stream. ( e.g: msh_54e6c315-f73a-4a77-b7c6-9940ff547123 )
shareType (enum, optional): Use this field to specify how the stream should be shared with workspaces. Note that the sharedWith field must also be provided for this to take effect. Accepted enum values:
original – The stream scope is shared, allowing generated clips to be accessible in both the parent organization and the shared workspace.
clone – The shared workspace can view clips generated in the parent organization, but the parent organization will not see clips created in the shared workspace.
sharedWith (string[], optional): A list of workspace IDs where the stream should be shared.
streamLanguage (string, optional): Default language for the stream (e.g: "en").
storageId (string, optional): Storage target ID for outputs. clipNamingTemplateId (string, optional): Template ID for naming generated clips.
audioType (string, optional): How audio is selected for multi-audio streams. Accepted values: iso, track, pid. When iso, scte35Source is required.
scte35Source (string, optional): Where SCTE-35 cues are read from. Required when audioType is "iso". Accepted values: SEGMENTS, MANIFESTS. Optional otherwise.
audioLanguages (string[], optional): Language codes for audio tracks (e.g: ["en", "es"]).
clipLanguages (string[], optional): Language codes for clip generation (e.g: ["en", "es"]).
audioTracks (string[], optional): HLS audio group or track IDs (e.g: ["aud1", "aud2"]). Use when audioType is "track".
pids (string[], optional): MPEG-TS audio PIDs (e.g: ["257", "258"]). Use when audioType is "pid".
autoAspectRatioConvert (object, optional): Auto aspect-ratio conversion. e.g: { "autoConvertAspectRatios": ["16:9"] }.
The fields object is flexible, allowing you to pass any custom information needed when retrieving metadata.
If datafeed access is required, please reach out to us to enable it. Once access is granted, include the following within the payload object:
"datafeed": {
"type": "genius",
"competitionId": "some_id",
"tournamentId": "some_id",
"matchId": "some_id"
}'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
url:
type: string
category:
type: string
fireAt:
type: string
fields:
type: object
properties:
ext_stream_id:
type: string
templateName:
type: string
publishingWebhookUrl:
type: string
hls_live_start_index:
type: integer
example:
title: Football Match
url: example.url
category: football
fireAt: '2024-09-09T13:05:00'
fields:
ext_stream_id: uniqueStreamId
templateName: example template
publishingWebhookUrl: https://example.com/webhook/sandbox
hls_live_start_index: 0
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
stream:
type: object
properties:
streamId:
type: string
title:
type: string
url:
type: string
category:
type: string
userId:
type: string
entityId:
type: string
fireAt:
type: string
aspectRatio:
type: string
status:
type: string
streamStartTime:
type: string
format: date-time
fields:
type: object
properties:
ext_stream_id:
type: string
stream_start_time:
type: string
match_start_time_on_server:
type: integer
templateId:
type: string
hls_live_start_index:
type: integer
publishingWebhookUrl:
type: string
createdAt:
type: string
format: date-time
examples:
createStream:
value:
statusCode: 202
message: Stream created successfully
stream:
streamId: -aiwC0aiF
title: Football Match
url: example.url
category: football
userId: example.user
entityId: example.entity
fireAt: '2024-09-09T13:05:00'
aspectRatio: '16:9'
status: Pending
streamStartTime: '2024-09-09T13:05:00.000Z'
fields:
ext_stream_id: uniqueStreamId
stream_start_time: '2024-09-09T13:05:00+00:00'
match_start_time_on_server: 0
templateId: example.templateId
hls_live_start_index: 1
publishingWebhookUrl: https://example.org/webhook
createdAt: '2024-09-09T13:05:02.775Z'
createStreamFromMatchSchedule:
value:
statusCode: 202
message: Stream created successfully
stream:
streamId: -aiwC0aiF
title: Football Match
url: example.url
category: football
userId: example.user
entityId: example.entity
fireAt: '2024-09-09T13:05:00'
aspectRatio: '16:9'
status: Pending
streamStartTime: '2024-09-09T13:05:00.000Z'
fields:
ext_stream_id: uniqueStreamId
stream_start_time: '2024-09-09T13:05:00+00:00'
match_start_time_on_server: 0
templateId: example.templateId
hls_live_start_index: 1
publishingWebhookUrl: https://example.org/webhook
createdAt: '2024-09-09T13:05:02.775Z'
createStreamDatafeed:
value:
statusCode: 202
message: Stream created successfully
stream:
streamId: -aiwC0aiF
title: Football Match
url: example.url
category: football
userId: example.user
entityId: example.entity
fireAt: '2024-09-09T13:05:00'
aspectRatio: '16:9'
status: Pending
streamStartTime: '2024-09-09T13:05:00.000Z'
fields:
ext_stream_id: uniqueStreamId
stream_start_time: '2024-09-09T13:05:00+00:00'
datafeed:
type: genius
competitionId: '27'
tournamentId: '1471'
matchId: '109920'
match_start_time_on_server: 0
templateId: example.templateId
hls_live_start_index: 1
publishingWebhookUrl: https://example.org/webhook
createdAt: '2024-09-09T13:05:02.775Z'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
error:
type: object
properties:
message:
type: string
code:
type: string
metadata:
type: object
properties:
receivedPayload:
type: object
properties:
hls_live_start_index:
type: integer
title:
type: string
url:
type: string
category:
type: string
fireAt:
type: string
streamStartTime:
type: string
fields:
type: object
properties:
ext_stream_id:
type: string
templateName:
type: string
examples:
createStreamError:
value:
statusCode: 400
error:
message: Partner storage config not found
code: PA003
metadata:
receivedPayload:
hls_live_start_index: 1
title: Demo Match
url: example.url
category: cricket
fireAt: '2024-09-09T08:32:00'
streamStartTime: '2024-09-09T08:32:00+00:00'
fields:
ext_stream_id: uniqueStreamId
templateName: mp4 live
createStreamError2:
value:
statusCode: 400
error:
message: Stream required fields missing
code: S015
metadata:
errorMetadata: 'Required stream custom fields missing: abcd (abcd), test input masking (test_input_masking)'
receivedPayload:
streamStartTime: '2025-08-13T13:34:00+00:00'
hls_live_start_index: 1
shareType: restrict
sharedWith: []
title: Example stream
url: https://d1rkuvpc7jn123.cloudfront.net/example/master_highest.m3u8
category: cricket
userId: D5bdc8f12
fireAt: now
fields:
VideoId: 2000342
templateName: Test HLS Template
'401':
description: Unauthorized — invalid or missing x-access-key / x-access-secret.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthError'
default:
description: Error response carrying a Magnifi error code.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
get:
operationId: getAllStreams
summary: Get all streams
tags:
- Streams
description: 'Retrieves a list of all streams.
Query Params:
page (number, required): The page number to retrieve.
pageSize (number, required): The number of items per page.
filters (object, optional): Inside this you can pass any key-pair you had added inside fields object while creating a stream. Example: "ext-match-id": "uuid"
category (string, optional): You can optionally filter with categories alloted to you..
startTime and endTime (utc timestamp, optional): You can filter by a time range. You have to send both the fields to mak it work.'
parameters:
- name: page
in: query
required: false
schema:
type: integer
example: '1'
- name: pageSize
in: query
required: false
schema:
type: integer
example: '10'
- name: filters
in: query
required: false
schema:
type: string
example: '{"ext-match-id": "uuid"}'
- name: category
in: query
required: false
schema:
type: string
example: football
- name: startTime
in: query
required: false
schema:
type: string
example: '2025-01-01T04:55:00.000Z'
- name: endTime
in: query
required: false
schema:
type: string
example: '2025-02-01T04:55:00.000Z'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
data:
type: object
properties:
streams:
type: array
items:
type: object
properties:
streamId:
type: string
title:
type: string
url:
type: string
category:
type: string
userId:
type: string
entityId:
type: string
fireAt:
type: string
aspectRatio:
type: string
status:
type: string
streamStartTime:
type: string
format: date-time
fields:
type: object
properties:
stream_start_time:
type: string
matchStartTimeOnServer:
type: number
templateId:
type: string
hlsLiveStartTime:
type: integer
publishingWebhookUrl:
type: string
createdAt:
type: string
format: date-time
currentPage:
type: integer
pageSize:
type: integer
totalItems:
type: integer
totalPages:
type: integer
examples:
getAllStreams:
value:
statusCode: 200
message: Streams data retrieved successfully
data:
streams:
- streamId: UyX9auf0B
title: test
url: https://multistream-example.amazonaws.com/multi_audio1.mp4
category: archery
userId: U510s8fE9
entityId: org_b69ndf5d-fs34-45f6-1234-e0c2e78f8619
fireAt: now
aspectRatio: '16:9'
status: Completed
streamStartTime: '2024-08-30T12:41:00.000Z'
fields:
stream_start_time: 2024-08-30T12:41
matchStartTimeOnServer: 1725001996.153196
templateId: 668d04776b12enb0007200a12
hlsLiveStartTime: 1
publishingWebhookUrl: ''
createdAt: '2024-08-30T07:12:21.501Z'
- streamId: 7H0aj8oDA
title: test multi
url: https://multistream-example.amazonaws.com/multi_audio1.mp4
category: cricket
userId: D510d8fE9
entityId: org_b69ndf5d-fs34-45f6-1234-e0c2e78f8619
fireAt: now
aspectRatio: '16:9'
status: Completed
streamStartTime: '2024-08-30T11:59:00.000Z'
fields:
stream_start_time: 2024-08-30T11:59
matchStartTimeOnServer: 1724999495.98779
templateId: 66iap0af6b319sape7200a6b
hlsLiveStartTime: 1
publishingWebhookUrl: ''
createdAt: '2024-08-30T06:30:40.662Z'
currentPage: 1
pageSize: 2
totalItems: 13
totalPages: 7
'401':
description: Unauthorized — invalid or missing x-access-key / x-access-secret.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthError'
default:
description: Error response carrying a Magnifi error code.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v1/stream/{streamId}:
patch:
operationId: updateStreamByStreamId
summary: Update stream by streamId
tags:
- Streams
description: 'Updates details of a specific stream
Params:
STREAM_ID (URL param): Specifies the unique identifier of the stream.
Request Body:
title (string, optional): The title of the stream.
status (string, optional): The status of the stream. Allowed values are "Completed", "Processing", or "Cancelled".
fireAt (string, optional): The timestamp at which the stream should start.
url (string, optional): The URL of the stream.
publishingWebhookUrl (string | null, optional): The webhook URL to trigger when the stream/clip/hlclip is published/updated. Pass null if you want to remove the existing publishing webhook URL
matchScheduleId (string | null, optional): Pass null if you need to de-link the stream from any particular Match Schedule. Else you can pass your desired Match Schedule ID (starts with msh ) to re-link.
tournamentId (string, optional): ID for the tournament.
homeTeamId (string, optional): ID for the home team.
awayTeamId (string, optional): ID for the away team.
streamLanguage (string, optional): Default language for the stream (e.g: "en").
datafeed (object, optional): Datafeed configuration.
storageId (string, optional): Storage target ID for outputs.
clipLanguages (string[], optional): Language codes for clip generation (e.g: ["en", "es"]).
clipNamingTemplateId (string, optional): Template ID for naming generated clips.
autoAspectRatioConvert (object, optional): Auto aspect-ratio conversion. e.g: { "autoConvertAspectRatios": ["16:9"] }.
fields (object, optional): object is flexible, allowing you to update stream custom fields.'
parameters:
- name: streamId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
data:
type: object
properties:
streamId:
type: string
title:
type: string
url:
type: string
category:
type: string
userId:
type: string
entityId:
type: string
fireAt:
type: string
aspectRatio:
type: string
status:
type: string
streamStartTime:
type: string
format: date-time
fields:
type: object
properties:
stream_start_time:
type: string
matchStartTimeOnServer:
type: number
templateId:
type: string
hlsLiveStartTime:
type: integer
publishingWebhookUrl:
type: string
createdAt:
type: string
examples:
updateStreamByStreamId:
value:
statusCode: 200
message: Stream data updated successfully
data:
streamId: yH-az5ai9
title: American Football Match
url: https://example.amazonaws.com/american_football/LA_vs_SF.mp4
category: American Football
userId: J5b0aqfE9
entityId: org_9127dc47-71ef-4a31-qojl-8b1f1448c318
fireAt: 2024-03-06T11:21
aspectRatio: '16:9'
status: Completed
streamStartTime: '2024-07-06T11:25:00.000Z'
fields:
stream_start_time: 2024-07-06T11:25
matchStartTimeOnServer: 1709704.72
templateId: 65e6paue5e84d0aqf1143c78
hlsLiveStartTime: 1
publishingWebhookUrl: https://example/publishing/webhookurl.com
createdAt: 2024-007-06T05:49:44.281Z
updateStreamByStreamIdMatchScheduleID:
value:
statusCode: 200
message: Stream data updated successfully
data:
streamId: yH-az5ai9
title: American Football Match
url: https://example.amazonaws.com/american_football/LA_vs_SF.mp4
category: American Football
userId: J5b0aqfE9
entityId: org_9127dc47-71ef-4a31-qojl-8b1f1448c318
fireAt: 2024-03-06T11:21
aspectRatio: '16:9'
status: Completed
streamStartTime: '2024-07-06T11:25:00.000Z'
fields:
stream_start_time: 2024-07-06T11:25
match_id: '680044'
matchScheduleId: msh_d91a94bc-5a35-4b5c-a6a8-77f8bad93e41
matchStartTimeOnServer: 1709704.72
templateId: 65e6paue5e84d0aqf1143c78
hlsLiveStartTime: 1
publishingWebhookUrl: https://example/publishing/webhookurl.com
createdAt: 2024-007-06T05:49:44.281Z
updateStreamByStreamIdFailedToMarkStreamCompleteCreated5MinsAgo:
value:
statusCode: 404
error:
message: Stream Resource Clearance Failed
code: S004
metadata:
errorMetadata: The stream is added with output template wait for 5 minutes for resource clearance.
'401':
description: Unauthorized — invalid or missing x-access-key / x-access-secret.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthError'
default:
description: Error response carrying a Magnifi error code.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
get:
operationId: getStreamByStreamId
summary: Get stream by streamId
tags:
- Streams
description: 'Retrieves the details of a specific stream
Params:
STREAM_ID (URL param): Specifies the unique identifier of the stream.'
parameters:
- name: streamId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
data:
type: object
properties:
streamId:
type: string
title:
type: string
url:
type: string
category:
type: string
userId:
type: string
entityId:
type: string
fireAt:
type: string
aspectRatio:
type: string
status:
type: string
streamStartTime:
type: string
format: date-time
fields:
type: object
properties:
stream_start_time:
type: string
matchStartTimeOnServer:
type: number
templateId:
type: string
hlsLiveStartTime:
type: integer
publishingWebhookUrl:
type: string
createdAt:
type: string
examples:
getStreamByStreamId:
value:
statusCode: 200
message: Stream data retrieved successfully
data:
streamId: yH-az5ai9
title: American Football Match
url: https://example.amazonaws.com/american_football/LA_vs_SF.mp4
category: American Football
userId: J5b0aqfE9
entityId: org_9127dc47-71ef-4a31-qojl-8b1f1448c318
fireAt: 2024-03-06T11:21
aspectRatio: '16:9'
status: Completed
streamStartTime: '2024-07-06T11:25:00.000Z'
fields:
stream_start_time: 2024-07-06T11:25
matchStartTimeOnServer: 1709704.72
templateId: 65e6paue5e84d0aqf1143c78
hlsLiveStartTime: 1
publishingWebhookUrl: https://example/publishing/webhookurl.com
createdAt: 2024-007-06T05:49:44.281Z
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
error:
type: object
properties:
message:
type: string
code:
type: string
metadata:
type: object
properties:
errorMetadata:
type: string
examples:
getStreamByStreamIdNotFound:
value:
statusCode: 404
error:
message: Stream data not found
code: S001
metadata:
errorMetadata: StreamId yHO9A5FLK not found
'401':
description: Unauthorized — invalid or missing x-access-key / x-access-secret.
co
# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/videoverse/refs/heads/main/openapi/videoverse-streams-api-openapi.yml