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/vonage:vonage-broadcast-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: Vonage Broadcast API
version: 0.3.2
contact:
name: Vonage DevRel
url: https://developer.vonage.com
email: devlre@vonage.com
x-metaDescription: Get started with the Vonage Video API, a powerful tool for automating video communications. Learn more in Vonage's API documentation.
x-metaTitle: Vonage Video API for Developers | Vonage API Documentation
description: 'Operations tagged Broadcast across 2 of this provider''s published API definitions: vonage-video-openapi.json, vonage-video-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://video.api.vonage.com
description: Vonage Video
security:
- Vonage-JWT: []
tags:
- name: Broadcast
description: APIs relating to live streaming and broadcasting
paths:
/v2/project/{application_id}/broadcast:
parameters:
- $ref: '#/components/parameters/application_id'
get:
tags:
- Broadcast
summary: List Live Streaming Broadcasts
operationId: get-broadcast-list
responses:
'200':
$ref: '#/components/responses/Broadcast-List'
'403':
description: 'Forbidden
Authentication error'
parameters:
- schema:
type: integer
in: query
name: offset
description: ' The start offset in the list of existing broadcasts'
- schema:
type: integer
in: query
name: count
description: The number of broadcasts to retrieve starting at offset. Default of 50, max of 1000
- schema:
type: string
in: query
name: sessionId
description: Retrieve only broadcasts for a given session ID
post:
tags:
- Broadcast
summary: Start a Live Streaming Broadcast
operationId: start-broadcast
responses:
'200':
$ref: '#/components/responses/Broadcast-Details'
'400':
description: 'Bad Request
This response may indicate that data in your request data is invalid JSON. It may also indicate that you passed in invalid layout options. Or you have exceeded the limit of five simultaneous RTMP streams for an Vonage Video session. Or you specified and invalid resolution.'
'403':
description: 'Forbidden
Authentication error.'
'409':
description: 'Conflict
The broadcast has already started for the session. Or if you attempt to start a simultaneous broadcast for a session without setting a unique multiBroadcastTag value.'
description: 'Use this method to start a live streaming broadcast for an Vonage Video session. This broadcasts the session to an HLS (HTTP live streaming) or to RTMP streams.
To successfully start broadcasting a session, at least one client must be connected to the session.
The live streaming broadcast can target one HLS endpoint and up to five RTMP servers simultaneously for a session. You can only start live streaming for sessions that use the Vonage Video Media Router (with the media mode set to routed); you cannot use live streaming with sessions that have the media mode set to relayed. (See The Vonage Video Media Router and media modes.)
For more information about Vonage Video live streaming, see the Broadcast developer guide.'
parameters:
- schema:
type: string
in: header
name: Content-Type
description: application/json
requestBody:
content:
application/json:
schema:
type: object
x-examples:
Example 1:
sessionId: <session-id>
layout:
type: custom
stylesheet: the layout stylesheet (only used with type == custom)
screenshareType: optional layout type to use when there is a screen-sharing stream
maxDuration: 5400
outputs:
hls:
dvr: false
lowLatency: false
rtmp:
- id: foo
serverUrl: rtmps://myfooserver/myfooapp
streamName: myfoostream
- id: bar
serverUrl: rtmp://mybarserver/mybarapp
streamName: mybarstream
resolution: 640x480
streamMode: auto
properties:
sessionId:
type: string
example: 2_MX40NTMyODc3Mn5-fg
description: Set this to the session ID of the Vonage Video session you want to broadcast.
layout:
type: object
description: 'Specify this to assign the initial layout type for the broadcast.
If you do not specify an initial layout type, the broadcast stream uses the Best Fit layout type. For more information, see Configuring Video Layout for the Vonage Video live streaming feature.'
properties:
type:
type: string
enum:
- bestFit
- custom
- horizontalPresentation
- pip
- verticalPresentation
example: custom
stylesheet:
type: string
example: the layout stylesheet (only used with type == custom)
description: 'If you specify a "custom" layout type, set the stylesheet property of the layout object to the stylesheet. (For other layout types, do not set a stylesheet property.) '
screenshareType:
type: string
enum:
- bestFit
- custom
- horizontalPresentation
- pip
- verticalPresentation
example: horizontalPresentation
description: 'Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to "bestFit" and leave the stylesheet property unset. '
required:
- type
maxDuration:
type: integer
example: 5400
description: The maximum duration for the broadcast, in seconds. The broadcast will automatically stop when the maximum duration is reached. You can set the maximum duration to a value from 60 (60 seconds) to 36000 (10 hours). The default maximum duration is 4 hours (14,400 seconds)
outputs:
type: object
anyOf:
- required:
- hls
- required:
- rtmp
- required:
- hls
- rtmp
description: 'This object defines the types of broadcast streams you want to start (both HLS and RTMP). You can include HLS, RTMP, or both as broadcast streams. If you include RTMP streaming, you can specify up to five target RTMP streams (or just one).
Vonage streams the session to each RTMP URL you specify. Note that Vonage Video live streaming supports RTMP and RTMPS.'
properties:
hls:
type: object
properties:
dvr:
type: boolean
description: Whether to enable DVR functionality — rewinding, pausing, and resuming — in players that support it (true), or not (false, the default). With DVR enabled, the HLS URL will include a ?DVR query string appended to the end.
lowLatency:
type: boolean
description: Whether to enable low-latency mode for the HLSstream. Some HLS players do not support low-latency mode. This feature is incompatible with DVR mode HLS broadcasts.
rtmp:
type: array
items:
type: object
minProperties: 1
maxProperties: 5
properties:
id:
type: string
example: foo
description: a unique ID for the stream
serverUrl:
type: string
example: rtmps://myfooserver/myfooapp
description: the RTMP server URL
streamName:
type: string
example: myfoostream
description: the stream name, such as the YouTube Live stream name or the Facebook stream key
required:
- serverUrl
- streamName
resolution:
type: string
enum:
- 640x480
- 1280x720
- 1920x1080
- 480x640
- 720x1280
- 1080x1920
example: 1920x1080
streamMode:
type: string
enum:
- auto
- manual
example: manual
default: auto
multiBroadcastTag:
type: string
example: foo
description: Set this to support multiple broadcasts for the same session simultaneously. Set this to a unique string for each simultaneous broadcast of an ongoing session. See Simultaneous broadcasts.
maxBitrate:
$ref: '#/components/schemas/Max-Bitrate'
required:
- sessionId
- outputs
servers:
- url: https://video.api.vonage.com
description: Vonage Video
/v2/project/{application_id}/broadcast/{broadcast_id}:
parameters:
- $ref: '#/components/parameters/application_id'
- $ref: '#/components/parameters/broadcast_id'
get:
tags:
- Broadcast
summary: Get Information about Broadcast
operationId: get-broadcast-details
responses:
'200':
$ref: '#/components/responses/Broadcast-Details'
'403':
description: 'Forbidden
Authentication error'
parameters: []
description: Use this method to get details on a broadcast that is in-progress.
servers:
- url: https://video.api.vonage.com
description: Vonage Video
/v2/project/{application_id}/broadcast/{broadcast_id}/stop:
parameters:
- $ref: '#/components/parameters/application_id'
- $ref: '#/components/parameters/broadcast_id'
post:
tags:
- Broadcast
summary: Stop Broadcast
operationId: stop-broadcast
responses:
'200':
$ref: '#/components/responses/Broadcast-Details'
'400':
description: 'Bad Request
Invalid request. This response may indicate that data in your request data is invalid JSON.'
'403':
description: 'Forbidden
Authentication error.'
'404':
description: 'Not Found
The broadcast (with the specified ID) was not found or it has already stopped.'
description: 'Use this method to stop a live broadcast of an Vonage Video session.
Note that a broadcast stops automatically 60 seconds after the last client disconnects from the session. Also, there is a default maximum duration of 4 hours (14,400 seconds) for each HLS and RTMP stream (the live stream broadcast automatically stops when this duration is reached). You can change the maximum duration for the broadcast by setting the `maxDuration` property when you start the broadcast REST method.'
servers:
- url: https://video.api.vonage.com
description: Vonage Video
/v2/project/{application_id}/broadcast/{broadcast_id}/layout:
parameters:
- name: application_id
in: path
required: true
schema:
type: string
description: Vonage Application UUID
- schema:
type: string
name: broadcast_id
in: path
required: true
put:
tags:
- Broadcast
summary: Dynamically change layout of a broadcast
operationId: change-broadcast-layout
responses:
'200':
description: OK
'400':
description: 'Bad Request
Invalid request. This response may indicate that data in your request data is invalid JSON.'
'403':
description: 'Forbidden
Authentication error.'
'404':
description: 'Not Found
The broadcast (with the specified ID) was not found or it has already stopped.'
description: 'You can dynamically change the layout type of a live streaming broadcast.
For more information about Vonage Video live streaming broadcasts, see the Broadcast developer guide.'
requestBody:
$ref: '#/components/requestBodies/Layout'
servers:
- url: https://video.api.vonage.com
description: Vonage Video
/v2/project/{application_id}/broadcast/{broadcast_id}/streams:
parameters:
- name: application_id
in: path
required: true
schema:
type: string
description: Vonage Application UUID
- schema:
type: string
name: broadcast_id
in: path
required: true
patch:
tags:
- Broadcast
summary: Selecting streams to be included in a live streaming broadcast
operationId: select-streams-for-broadcast
description: 'Use this method to change the streams included in a live streaming broadcast that was started with the streamMode set to "manual" (see Starting a live streaming broadcast).
The broadcast composer includes added streams based on stream prioritization rules.'
requestBody:
$ref: '#/components/requestBodies/Select-Streams'
responses:
'204':
description: No Content
'400':
description: 'Bad Request
This response may indicate that data provided in your request is an invalid JSON, or the request couldn''t be fulfilled because the broadcast was started with streamMode set to "auto", which does not support stream manipulation.'
'403':
description: Forbidden
'404':
description: 'Not Found
Broadcast or stream not found.'
servers:
- url: https://video.api.vonage.com
description: Vonage Video
components:
requestBodies:
Select-Streams:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Add-Stream'
- $ref: '#/components/schemas/Remove-Stream'
description: ''
Layout:
content:
application/json:
schema:
$ref: '#/components/schemas/Layout'
schemas:
Stream-Mode:
type: string
enum:
- auto
- manual
description: Whether streams included in the archive are selected automatically ("auto", the default) or manually ("manual"). When streams are selected automatically ("auto"), all streams in the session can be included in the archive. When streams are selected manually ("manual"), you specify streams to be included based on calls to this REST method. You can specify whether a stream's audio, video, or both are included in the archive. In composed archives, in both automatic and manual modes, the archive composer includes streams based on stream prioritization rules.
example: manual
Max-Bitrate:
type: number
example: 200000
minimum: 100000
maximum: 6000000
description: The maximum video bitrate for the archive, in bits per second. This option is only valid for composed archives. Set the maximum video bitrate to control the size of the composed archive. This maximum bitrate applies to the video bitrate only. If the output archive has audio, those bits will be excluded from the limit.
Resolution:
type: string
enum:
- 640x480
- 480x640
- 1280x720
- 720x1280
- 1080x1920
- 1920x1080
description: The resolution of the archive, either "640x480" (SD landscape, the default), "1280x720" (HD landscape), "1920x1080" (FHD landscape), "480x640" (SD portrait), "720x1280" (HD portrait), or "1080x1920" (FHD portrait). You may want to use a portrait aspect ratio for archives that include video streams from mobile devices (which often use the portrait aspect ratio). This property only applies to composed archives. If you set this property and set the outputMode property to "individual", the call to the REST method results in an error.
Remove-Stream:
title: Remove-Stream
x-stoplight:
id: uvyo3v0wjqwlj
type: object
properties:
removeStream:
type: string
example: 12312312-3811-4726-b508-e41a0f96c68f
description: ID of stream to remove
Layout:
type: object
properties:
type:
type: string
description: 'Specify this to assign the initial layout type for the archive. This applies only to composed archives. This object has three properties: type, stylesheet, and screenshareType, which are each strings. Valid values for the layout property are "bestFit" (best fit), "custom" (custom), "horizontalPresentation" (horizontal presentation), "pip" (picture-in-picture), and "verticalPresentation" (vertical presentation). If you specify a "custom" layout type, set the stylesheet property of the layout object to the stylesheet. (For other layout types, do not set a stylesheet property.) Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to "bestFit" and leave the stylesheet property unset. If you do not specify an initial layout type, the archive uses the best fit layout type.'
enum:
- bestFit
- custom
- horizontalPresentation
- pip
- verticalPresentation
example: bestFit
stylesheet:
type: string
description: Used for the `custom` layout to define the visual layout
example: 'stream.instructor {position: absolute; width: 100%; height:50%;}'
screenshareType:
type: string
enum:
- bestFit
- custom
- horizontalPresentation
- pip
- verticalPresentation
description: Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to "bestFit" and leave the stylesheet property unset.
example: pip
ApplicationID:
type: string
description: A Vonage Application ID
example: 93e36bb9-b72c-45b6-a9ea-5c37dbc49906
Add-Stream:
title: Add-Stream
x-stoplight:
id: za2ghdcvwhwl0
type: object
properties:
addStream:
type: string
description: The stream ID to add
example: 12312312-3811-4726-b508-e41a0f96c68f
hasAudio:
type: boolean
default: true
description: Whether to include the stream's audio
hasVideo:
type: boolean
default: true
description: Whether to include the stream's video
Broadcast-Detail:
title: Broadcast-Detail
x-stoplight:
id: i35hgmkxy7mq4
type: object
x-examples:
Example 1:
id: 1748b7070a81464c9759c46ad10d3734
sessionId: 2_MX4xMDBfjE0Mzc2NzY1NDgwMTJ-TjMzfn4
multiBroadcastTag: broadcast_tag_provided
applicationId: 93e36bb9-b72c-45b6-a9ea-5c37dbc49906
createdAt: 1437676551000
updatedAt: 1437676551000
maxDuration: 5400
maxBitrate: 2000000
broadcastUrls:
hls: hlsurl
rtmp:
foo:
serverUrl: rtmp://myfooserver/myfooapp
streamName: myfoostreamname
bar:
serverUrl: rtmp://mybarserver/mybarapp
streamName: mybarstreamname
settings:
hls:
lowLatency: false
resolution: 640x480
hasAudio: true
hasVideo: true
streamMode: manual
properties:
id:
type: string
example: 1748b7070a81464c9759c46ad10d3734
description: The unique ID for the broadcast
sessionId:
type: string
example: 2_MX4xMDBfjE0Mzc2NzY1NDgwMTJ-TjMzfn4
description: The Vonage Video session ID
multiBroadcastTag:
type: string
example: broadcast_tag_provided
description: The unique tag for simultaneous broadcasts (if one was set).
applicationId:
$ref: '#/components/schemas/ApplicationID'
createdAt:
type: integer
example: 1437676551000
description: The time the broadcast started, expressed in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC)
updatedAt:
type: integer
example: 1437676551000
description: For this start method, this timestamp matches the createdAt timestamp.
maxDuration:
type: integer
example: 5400
description: The maximum duration for the broadcast (if one was set), in seconds.
maxBitrate:
type: integer
example: 2000000
description: The maximum bitrate for the stream.
broadcastUrls:
type: object
description: An object containing details about the HLS and RTMP broadcasts.
properties:
hls:
type: string
example: hlsurl
description: If you specified an HLS endpoint, the object includes an hls property, which is set to the URL for the HLS broadcast. Note this HLS broadcast URL points to an index file, an .M3U8-formatted playlist that contains a list of URLs to .ts media segment files (MPEG-2 transport stream files). While the URLs of both the playlist index file and media segment files are provided as soon as the HTTP response is returned, these URLs should not be accessed until 15 – 20 seconds later, after the initiation of the HLS broadcast, due to the delay between the HLS broadcast and the live streams in the Vonage Video session. See https://developer.apple.com/library/ios/technotes/tn2288/_index.html for more information about the playlist index file and media segment files for HLS.
rtmp:
type: array
description: 'If you specified RTMP stream endpoints, the object includes an rtmp property. This is an array of objects that include information on each of the RTMP streams. Each of these objects has the following properties: id (the ID you assigned to the RTMP stream), serverUrl (the server URL), streamName (the stream name), and status property (which is set to "connecting"). You can call the Vonage Video REST method to check for status updates for the broadcast.'
items:
type: object
properties:
id:
type: string
description: 'The ID you assigned to the RTMP stream
'
status:
type: string
description: 'The current status of the RTMP stream
'
serverUrl:
type: string
description: The Server URL
streamName:
type: string
description: The stream name
settings:
type: object
properties:
hls:
type: object
properties:
lowLatency:
type: boolean
description: 'Whether to enable low-latency mode for the HLSstream. Some HLS players do not support low-latency mode. This feature is incompatible with DVR mode HLS broadcasts. '
dvr:
type: boolean
description: 'Whether to enable DVR functionality — rewinding, pausing, and resuming — in players that support it (true), or not (false, the default). With DVR enabled, the HLS URL will include a ?DVR query string appended to the end. '
resolution:
$ref: '#/components/schemas/Resolution'
hasAudio:
type: boolean
description: Whether the broadcast has audio
hasVideo:
type: boolean
description: Whether the broadcast has video
streamMode:
$ref: '#/components/schemas/Stream-Mode'
status:
type: string
description: Current status of the broadcast
streams:
type: array
description: ' An array of objects corresponding to streams currently being broadcast. This is only set for a broadcast with the status set to "started" and the streamMode set to "manual"'
items:
type: object
properties:
streamId:
type: string
description: The stream ID of the stream included in the broadcast.
hasAudio:
type: string
description: Whether the stream's audio is included in the broadcast.
hasVideo:
type: string
description: Whether the stream's video is included in the broadcast.
parameters:
broadcast_id:
name: broadcast_id
in: path
required: true
schema:
type: string
description: ID of the broadcast
application_id:
name: application_id
in: path
required: true
schema:
type: string
description: Vonage Application UUID
responses:
Broadcast-Details:
description: Example response
content:
application/json:
schema:
$ref: '#/components/schemas/Broadcast-Detail'
Broadcast-List:
description: Example response
content:
application/json:
schema:
type: object
properties:
count:
type: integer
items:
type: array
items:
$ref: '#/components/schemas/Broadcast-Detail'
securitySchemes:
Vonage-JWT:
type: http
scheme: bearer
bearerFormat: JWT
x-refined-from:
- vonage-video-openapi.json
- vonage-video-openapi.yml
x-errors:
validation:
description: The provided payload is invalid
resolution: 'Modify your request to provide a valid payload.
* Minimum 8 characters
* Maximum 25 characters
* Minimum 1 lower case character
* Minimum 1 upper case character
* Minimum 1 digit
'
link:
text: View API reference
url: /api/account#createAPISecret
delete-last-secret:
description: You can not delete your only API secret
resolution: Add another API secret before deleting this one