openapi: 3.0.0
info:
description: api.video is an API that encodes on the go to facilitate immediate
playback, enhancing viewer streaming experiences across multiple devices and platforms.
You can stream live or on-demand online videos within minutes.
title: api.video
version: "1"
servers:
- url: https://ws.api.video
paths:
/auth/api-key:
post:
description: To get started, submit your API key in the body of your request.
api.video returns an access token that is valid for one hour (3600 seconds).
A refresh token is also returned. View a [tutorial](https://api.video/blog/tutorials/authentication-tutorial)
on authentication.
operationId: POST_auth-api-key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/authenticate-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
token_type: Bearer
expires_in: 3600
access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA
refresh_token: def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962
schema:
$ref: '#/components/schemas/access-token'
description: Success
"400":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/authenticationinvalid_credentials
title: The user credentials were incorrect.
name: ""
status: 400
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
summary: Authenticate
tags:
- Authentication
x-client-action: authenticate
x-client-hidden: true
/auth/refresh:
post:
description: "Use the refresh endpoint with the refresh token you received when\
\ you first authenticated using the api-key endpoint. Send the refresh token\
\ in the body of your request. The api.video API returns a new access token\
\ that is valid for one hour (3600 seconds) and a new refresh token. \n"
operationId: POST_auth-refresh
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/refresh-token-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
token_type: Bearer
expires_in: 3600
access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA
refresh_token: def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962
schema:
$ref: '#/components/schemas/access-token'
description: Success
"400":
content:
application/json:
examples:
response:
value:
status: 400
type: https://docs.api.video/docs/authenticationinvalid_credentials
title: The user credentials were incorrect.
name: ""
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
summary: Refresh token
tags:
- Authentication
x-client-action: refresh
x-client-hidden: true
/videos:
get:
description: Requests to this endpoint return a list of your videos (with all
their details). With no parameters added to this query, the API returns all
videos. You can filter what videos the API returns using the parameters described
below.
operationId: LIST-videos
parameters:
- description: The title of a specific video you want to find. The search will
match exactly to what term you provide and return any videos that contain
the same term as part of their titles.
example: My Video.mp4
explode: true
in: query
name: title
required: false
schema:
type: string
style: form
- description: A tag is a category you create and apply to videos. You can search
for videos with particular tags by listing one or more here. Only videos
that have all the tags you list will be returned.
example: '["captions", "dialogue"]'
explode: true
in: query
name: tags
required: false
schema:
items:
type: string
type: array
style: form
- description: Videos can be tagged with metadata tags in key:value pairs. You
can search for videos with specific key value pairs using this parameter.
example: metadata[Author]=John Doe&metadata[Format]=Tutorial
explode: true
in: query
name: metadata
required: false
schema:
additionalProperties:
type: string
type: object
style: deepObject
x-key-value-serialized-param: true
- description: If you described a video with a term or sentence, you can add
it here to return videos containing this string.
example: New Zealand
explode: true
in: query
name: description
required: false
schema:
type: string
style: form
- description: If you know the ID for a live stream, you can retrieve the stream
by adding the ID for it here.
example: li400mYKSgQ6xs7taUeSaEKr
explode: true
in: query
name: liveStreamId
required: false
schema:
type: string
style: form
- description: 'Allowed: publishedAt, title. You can search by the time videos
were published at, or by title.'
example: publishedAt
explode: true
in: query
name: sortBy
required: false
schema:
type: string
style: form
- description: 'Allowed: asc, desc. asc is ascending and sorts from A to Z.
desc is descending and sorts from Z to A.'
example: asc
explode: true
in: query
name: sortOrder
required: false
schema:
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- videoId: vi4k0jvEUuaTdRAEjQ4Prklg
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining the string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 2019-12-16T08:25:51+00:00
updatedAt: 2019-12-16T08:48:49+00:00
source:
uri: /videos/c188ed58-3403-46a2-b91b-44603d10b2c9/source
assets:
iframe:
player: https://embed.api.video/c188ed58-3403-46a2-b91b-44603d10b2c9?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
- videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Video Title
description: A description for your video.
public: false
panoramic: false
mp4Support: true
tags:
- books
- short stories
metadata:
- key: Author
value: John Doe
- key: Science Fiction
value: Cyberpunk
- key: Technology
value: Computers
publishedAt: 2019-12-16T08:25:51+00:00
updatedAt: 2019-12-16T08:48:49+00:00
source:
uri: /videos/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f/source
assets:
iframe:
player: https://embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
- videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: My Video Title
description: A brief description of the video.
public: false
panoramic: false
mp4Support: true
tags:
- General
- Videos
metadata:
- key: Length
value: Short
publishedAt: 2019-12-16T08:25:51+00:00
updatedAt: 2019-12-16T08:48:49+00:00
source:
uri: /videos/73129412-e320-4b93-99f6-59a85e3cedcd/source
assets:
iframe:
player: https://embed.api.video/73129412-e320-4b93-99f6-59a85e3cedcd?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
pagination:
currentPage: 1
pageSize: 25
pagesTotal: 1
itemsTotal: 11
currentPageItems: 11
links:
- rel: self
uri: https://ws.api.video/videos?currentPage=1
- rel: first
uri: https://ws.api.video/videos?currentPage=1
- rel: last
uri: https://ws.api.video/videos?currentPage=1
schema:
$ref: '#/components/schemas/videos-list-response'
description: Success
"400":
content:
application/json:
examples:
response:
value:
title: This parameter is out of the allowed range of values.
name: page
status: 400
range:
min: 1
problems:
- title: This parameter is out of the allowed range of values.
name: page
range:
min: 1
- title: This parameter is out of the allowed range of values.
name: pageSize
range:
min: 10
max: 100
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: List all videos
tags:
- Videos
x-client-action: list
x-group-parameters: true
x-client-paginated: true
post:
description: "To create a video, you create its metadata first, before adding\
\ the video file (exception - when using an existing HTTP source).\n\nVideos\
\ are public by default. Mp4 encoded versions are created at the highest quality\
\ (max 1080p) by default.\n ```shell\n$ curl https://ws.api.video/videos \\\
\n-H 'Authorization: Bearer {access_token} \\\n-d '{\"title\":\"My video\"\
, \n \"description\":\"so many details\",\n \"mp4Support\":true\n\
}'\n```\n\n### Creating a hosted video \n\nYou can also create a video directly\
\ from one hosted on a third-party server by giving its URI in `source` parameter:\n\
\n```shell\n$ curl https://ws.api.video/videos \\\n-H 'Authorization: Bearer\
\ {access_token} \\\n-d '{\"source\":\"http://uri/to/video.mp4\", \"title\"\
:\"My video\"}'\n```\n\nIn this case, the service will respond `202 Accepted`\
\ and download the video asynchronously.\n\n We have tutorials on:\n* [Creating\
\ and uploading videos](https://api.video/blog/tutorials/video-upload-tutorial)\n\
* [Uploading large videos](https://api.video/blog/tutorials/video-upload-tutorial-large-videos)\n\
* [Using tags with videos](https://api.video/blog/tutorials/video-tagging-best-practices)\n\
* [Private videos](https://api.video/blog/tutorials/tutorial-private-videos)\n"
operationId: POST-video
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/video-create-payload'
description: video to create
required: true
responses:
"201":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Maths video
description: An amazing video explaining the string theory
public: false
panoramic: false
mp4Support: true
playerId: pl4k0jvEUuaTdRAEjQ4Jfrgz
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 4665-07-14T23:36:18.598Z
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Created
"202":
content:
application/json:
schema:
$ref: '#/components/schemas/video'
description: Accepted
"400":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/attributerequired
title: This attribute is required.
name: title
status: 400
problems:
- type: https://docs.api.video/docs/attributerequired
title: This attribute is required.
name: title
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be a ISO8601 date.
name: scheduledAt
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be an array.
name: tags
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be an array.
name: metadata
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: Create a video
tags:
- Videos
x-client-action: create
/videos/{videoId}/source:
post:
description: |-
To upload a video to the videoId you created. Replace {videoId} with the id you'd like to use, {access_token} with your token, and /path/to/video.mp4 with the path to the video you'd like to upload. You can only upload your video to the videoId once.
```bash
curl https://ws.api.video/videos/{videoId}/source \
-H 'Authorization: Bearer {access_token}' \
-F file=@/path/to/video.mp4
```
operationId: POST_videos-videoId-source
parameters:
- description: Enter the videoId you want to use to upload your video.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: Content-Range represents the range of bytes that will be returned
as a result of the request. Byte ranges are inclusive, meaning that bytes
0-999 represents the first 1000 bytes in a file or object.
example: 'Content-Range: bytes 200-100/5000'
explode: false
in: header
name: Content-Range
required: false
schema:
pattern: ^bytes [0-9]*-[0-9]*\/[0-9]*$
type: string
style: simple
x-client-ignore: true
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/video-upload-payload'
required: true
responses:
"201":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Maths video
description: An amazing video explaining the string theory.
public: false
panoramic: false
mp4Support: true
playerId: pl45KFKdlddgk654dspkze
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 4665-07-14T23:36:18.598Z
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Created
"400":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/filealreadyuploaded
title: The source of the video is already uploaded.
name: file
status: 400
problems:
- type: https://docs.api.video/docs/filealreadyuploaded
title: The source of the video is already uploaded.
name: file
- type: https://docs.api.video/docs/filealreadyuploaded
title: The video xxxx has already been uploaded.
name: video
- type: https://docs.api.video/docs/filemissing
title: There is no uploaded file in the request.
name: file
- type: https://docs.api.video/docs/multiplefilesuploaded
title: There is more than one uploaded file in the request.
name: file
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a video
tags:
- Videos
x-client-action: upload
x-client-chunk-upload: true
/videos/{videoId}/thumbnail:
patch:
description: Pick a thumbnail from the given time code. If you'd like to upload
an image for your thumbnail, use the [Upload a Thumbnail](https://docs.api.video/reference#post_videos-videoid-thumbnail)
endpoint. There may be a short delay for the thumbnail to update.
operationId: PATCH_videos-videoId-thumbnail
parameters:
- description: Unique identifier of the video you want to add a thumbnail to,
where you use a section of your video as the thumbnail.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/video-thumbnail-pick-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 4665-07-14T23:36:18.598Z
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Pick a thumbnail
tags:
- Videos
x-client-action: pickThumbnail
post:
description: In creating a thumbnail, you may either upload an image, or you
can pick a time in the video to be used as thumbnail. This endpoint is for
uploading an image. Use [Pick a Thumbnail](https://docs.api.video/reference#patch_videos-videoid-thumbnail)
to pick a time in the video. There may be a short delay before the new thumbnail
is delivered to our CDN.
operationId: POST_videos-videoId-thumbnail
parameters:
- description: 'Unique identifier of the chosen video '
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/video-thumbnail-upload-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining the string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 2020-07-14T23:36:18.598Z
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Success
"400":
content:
application/json:
examples:
response:
value:
status: 400
type: https://docs.api.video/docs/fileextension
title: Only [jpeg, jpg, JPG, JPEG] extensions are supported.
name: file
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a thumbnail
tags:
- Videos
x-client-action: uploadThumbnail
/videos/{videoId}:
delete:
description: If you do not need a video any longer, you can send a request to
delete it. All you need is the videoId.
operationId: DELETE-video
parameters:
- description: The video ID for the video you want to delete.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a video
tags:
- Videos
x-client-action: delete
get:
description: This call provides the same JSON information provided on video
creation. For private videos, it will generate a unique token url. Use this
to retrieve any details you need about a video, or set up a private viewing
URL.
operationId: GET-video
parameters:
- description: The unique identifier for the video you want details about.
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 2019-12-16T08:25:51+00:00
updatedAt: 2019-12-16T08:48:49+00:00
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show a video
tags:
- Videos
x-client-action: get
patch:
description: 'Use this endpoint to update the parameters associated with your
video. The video you are updating is determined by the video ID you provide
in the path. For each parameter you want to update, include the update in
the request body. NOTE: If you are updating an array, you must provide the
entire array as what you provide here overwrites what is in the system rather
than appending to it.'
operationId: PATCH-video
parameters:
- description: The video ID for the video you want to delete.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/video-update-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining the string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 2019-12-16T08:25:51+00:00
updatedAt: 2019-12-16T08:48:49+00:00
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
mp4: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
schema:
$ref: '#/components/schemas/video'
description: Success
"400":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be a ISO-8601 date.
name: scheduledAt
status: 400
problems:
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be a ISO-8601 date.
name: scheduledAt
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be an array.
name: tags
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be an array.
name: metadata
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Update a video
tags:
- Videos
x-client-action: update
/videos/{videoId}/status:
get:
description: |-
This API provides upload status & encoding status to determine when the video is uploaded or ready to playback.
Once encoding is completed, the response also lists the available stream qualities.
operationId: GET-video-status
parameters:
- description: The unique identifier for the video you want the status for.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
ingest:
status: uploaded
filesize: 273579401
receivedBytes:
- to: 134217727
from: 0
total: 273579401
- to: 268435455
from: 134217728
total: 273579401
- to: 273579400
from: 268435456
total: 273579401
encoding:
playable: true
qualities:
- quality: 360p
status: encoded
- quality: 480p
status: encoded
- quality: 720p
status: encoded
- quality: 1080p
status: encoding
- quality: 2160p
status: waiting
metadata:
width: 424
height: 240
bitrate: 411.218
duration: 4176
framerate: 24
samplerate: 48000
videoCodec: h264
audioCodec: aac
aspectRatio: 16/9
schema:
$ref: '#/components/schemas/videostatus'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show video status
tags:
- Videos
x-client-action: getStatus
/upload-tokens:
get:
description: A delegated token is used to allow secure uploads without exposing
your API key. Use this endpoint to retrieve a list of all currently active
delegated tokens.
operationId: GET_upload-tokens
parameters:
- description: 'Allowed: createdAt, ttl. You can use these to sort by when a
token was created, or how much longer the token will be active (ttl - time
to live). Date and time is presented in ISO-8601 format.'
example: ttl
explode: true
in: query
name: sortBy
required: false
schema:
enum:
- createdAt
- ttl
type: string
style: form
- description: 'Allowed: asc, desc. Ascending is 0-9 or A-Z. Descending is 9-0
or Z-A.'
example: asc
explode: true
in: query
name: sortOrder
required: false
schema:
enum:
- asc
- desc
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- token: to37YfoPDRR2pcDKa6LsUE0M
ttl: 3600
createdAt: 2020-12-02T10:26:46+00:00
expiresAt: 2020-12-02T11:26:46+00:00
- token: to1W3ZS9PdUBZWzzTEZr1B79
ttl: 0
createdAt: 2020-12-02T10:26:28+00:00
expiresAt: null
pagination:
currentPage: 1
currentPageItems: 2
pageSize: 25
pagesTotal: 1
itemsTotal: 2
links:
- rel: self
uri: /upload-tokens?currentPage=1&pageSize=25
- rel: first
uri: /upload-tokens?currentPage=1&pageSize=25
- rel: last
uri: /upload-tokens?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/token-list-response'
description: Success
security:
- bearerAuth: []
summary: List all active upload tokens.
tags:
- Upload Tokens
x-group-parameters: true
x-client-paginated: true
x-client-action: list
post:
description: Use this endpoint to generate an upload token. You can use this
token to authenticate video uploads while keeping your API key safe.
operationId: POST_upload-tokens
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/token-create-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
token: to1tcmSFHeYY5KzyhOqVKMKb
ttl: 3600
createdAt: 2020-12-02T10:13:19+00:00
expiresAt: 2020-12-02T11:13:19+00:00
schema:
$ref: '#/components/schemas/upload-token'
description: Success
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: Generate an upload token
tags:
- Upload Tokens
x-client-action: createToken
/upload-tokens/{uploadToken}:
delete:
description: Delete an existing upload token. This is especially useful for
tokens you may have created that do not expire.
operationId: DELETE_upload-tokens-uploadToken
parameters:
- description: The unique identifier for the upload token you want to delete.
Deleting a token will make it so the token can no longer be used for authentication.
example: to1tcmSFHeYY5KzyhOqVKMKb
explode: false
in: path
name: uploadToken
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete an upload token
tags:
- Upload Tokens
x-client-action: deleteToken
get:
description: You can retrieve details about a specific upload token if you have
the unique identifier for the upload token. Add it in the path of the endpoint.
Details include time-to-live (ttl), when the token was created, and when it
will expire.
operationId: GET_upload-tokens-uploadToken
parameters:
- description: The unique identifier for the token you want information about.
example: to1tcmSFHeYY5KzyhOqVKMKb
explode: false
in: path
name: uploadToken
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
token: to1tcmSFHeYY5KzyhOqVKMKb
ttl: 0
createdAt: 2020-12-02T10:13:19+00:00
expiresAt: null
schema:
$ref: '#/components/schemas/upload-token'
description: Success
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show upload token
tags:
- Upload Tokens
x-client-action: getToken
/upload:
post:
description: "When given a token, anyone can upload a file to the URI `https://ws.api.video/upload?token=`.\n\
\nExample with cURL:\n\n```curl\n$ curl --request POST --url 'https://ws.api.video/upload?token=toXXX'\n\
\ --header 'content-type: multipart/form-data'\n -F file=@video.mp4\n```\n\
\nOr in an HTML form, with a little JavaScript to convert the form into JSON:\n\
```html\n\n\n\n\n\n```\n\n\n### Dealing\
\ with large files\n\nWe have created a tutorial\
\ to walk through the steps required."
operationId: POST_upload
parameters:
- description: The unique identifier for the token you want to use to upload
a video.
example: to1tcmSFHeYY5KzyhOqVKMKb
explode: true
in: query
name: token
required: true
schema:
type: string
style: form
- description: Content-Range represents the range of bytes that will be returned
as a result of the request. Byte ranges are inclusive, meaning that bytes
0-999 represents the first 1000 bytes in a file or object.
example: 'Content-Range: bytes 200-100/5000'
explode: false
in: header
name: Content-Range
required: false
schema:
pattern: ^bytes [0-9]*-[0-9]*\/[0-9]*$
type: string
style: simple
x-client-ignore: true
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/token-upload-payload'
required: true
responses:
"201":
content:
application/json:
examples:
response:
value:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
playerId: pl45KFKdlddgk654dspkze
title: Maths video
description: An amazing video explaining the string theory
public: false
panoramic: false
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
publishedAt: 4665-07-14T23:36:18.598Z
source:
uri: /videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source
assets:
iframe:
player: https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae
hls: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8
thumbnail: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
schema:
$ref: '#/components/schemas/video'
description: Created
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security: []
summary: Upload with an upload token
tags:
- Videos
x-client-action: uploadWithUploadToken
x-client-chunk-upload: true
/live-streams:
get:
description: With no parameters added to the url, this will return all livestreams.
Query by name or key to limit the list.
operationId: GET_live-streams
parameters:
- description: The unique stream key that allows you to stream videos.
example: 30087931-229e-42cf-b5f9-e91bcc1f7332
explode: true
in: query
name: streamKey
required: false
schema:
type: string
style: form
- description: You can filter live streams by their name or a part of their
name.
example: My Video
explode: true
in: query
name: name
required: false
schema:
type: string
style: form
- description: 'Allowed: createdAt, publishedAt, name. createdAt - the time
a livestream was created using the specified streamKey. publishedAt - the
time a livestream was published using the specified streamKey. name - the
name of the livestream. If you choose one of the time based options, the
time is presented in ISO-8601 format.'
example: createdAt
explode: true
in: query
name: sortBy
required: false
schema:
type: string
style: form
- description: 'Allowed: asc, desc. Ascending for date and time means that earlier
values precede later ones. Descending means that later values preced earlier
ones. For title, it is 0-9 and A-Z ascending and Z-A, 9-0 descending.'
example: desc
explode: true
in: query
name: sortOrder
required: false
schema:
enum:
- asc
- desc
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- liveStreamId: li400mYKSgQ6xs7taUeSaEKr
createdAt: 2020-01-31T10:17:47+00:00
updatedAt: 2020-03-09T13:19:43+00:00
streamKey: 30087931-229e-42cf-b5f9-e91bcc1f7332
name: Live Stream From the browser
public: true
record: true
broadcasting: false
assets:
iframe:
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
hls: https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
- liveStreamId: li4pqNqGUkhKfWcBGpZVLRY5
createdAt: 2020-07-29T10:45:35+00:00
updatedAt: 2020-07-29T10:45:35+00:00
streamKey: cc1b4df0-d1c5-4064-a8f9-9f0368385135
name: Live From New York
public: true
record: true
broadcasting: false
assets:
iframe:
player: https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
thumbnail: https://cdn.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5/thumbnail.jpg
pagination:
currentPage: 1
currentPageItems: 19
pageSize: 25
pagesTotal: 1
itemsTotal: 19
links:
- rel: self
uri: /live-streams?currentPage=1&pageSize=25
- rel: first
uri: /live-streams?currentPage=1&pageSize=25
- rel: last
uri: /live-streams?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/live-stream-list-response'
description: Success
security:
- bearerAuth: []
summary: List all live streams
tags:
- Live Streams
x-client-action: list
x-group-parameters: true
x-client-paginated: true
post:
description: "A live stream will give you the 'connection point' to RTMP your\
\ video stream to api.video. It will also give you the details for viewers\
\ to watch the same livestream. \nThe public=false 'private livestream' is\
\ available as a BETA feature, and should be limited to livestreams of 3,000\
\ viewers or fewer.\n\nSee our [Live Stream Tutorial](https://api.video/blog/tutorials/live-stream-tutorial)\
\ for a walkthrough of this API with OBS.\nYour RTMP endpoint for the livestream\
\ is rtmp://broadcast.api.video/s/{streamKey}"
operationId: POST_live-streams
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/live-stream-create-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
liveStreamId: li4pqNqGUkhKfWcBGpZVLRY5
createdAt: 2020-07-29T10:45:35+00:00
updatedAt: 2020-07-29T10:45:35+00:00
streamKey: cc1b4df0-d1c5-4064-a8f9-9f0368385135
name: Live From New York
public: true
record: true
broadcasting: false
assets:
iframe:
player: https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
thumbnail: https://cdn.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5/thumbnail.jpg
schema:
$ref: '#/components/schemas/live-stream'
description: Success
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: Create live stream
tags:
- Live Streams
x-client-action: create
/live-streams/{liveStreamId}:
delete:
operationId: DELETE_live-streams-liveStreamId
parameters:
- description: The unique ID for the live stream that you want to remove.
example: li400mYKSgQ6xs7taUeSaEKr
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
security:
- bearerAuth: []
summary: Delete a live stream
tags:
- Live Streams
x-client-action: delete
get:
description: Supply a LivestreamId, and you'll get all the details for streaming
into, and watching the livestream.
operationId: GET_live-streams-liveStreamId
parameters:
- description: The unique ID for the live stream you want to watch.
example: li400mYKSgQ6xs7taUeSaEKr
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
liveStreamId: li400mYKSgQ6xs7taUeSaEKr
createdAt: 2020-01-31T10:17:47+00:00
updatedAt: 2020-03-09T13:19:43+00:00
streamKey: 30087931-229e-42cf-b5f9-e91bcc1f7332
name: Live Stream From the browser
public: true
record: true
broadcasting: false
assets:
iframe:
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
hls: https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
schema:
$ref: '#/components/schemas/live-stream'
description: Success
security:
- bearerAuth: []
summary: Show live stream
tags:
- Live Streams
x-client-action: get
patch:
description: 'Use this endpoint to update the player, or to turn recording on/off
(saving a copy of the livestream). NOTE: If the livestream is actively streaming,
changing the recording status will only affect the NEXT stream. The public=false
''private livestream'' is available as a BETA feature, and should be limited
to livestreams of 3,000 viewers or fewer.'
operationId: PATCH_live-streams-liveStreamId
parameters:
- description: The unique ID for the live stream that you want to update information
for such as player details, or whether you want the recording on or off.
example: li400mYKSgQ6xs7taUeSaEKr
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/live-stream-update-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
liveStreamId: li400mYKSgQ6xs7taUeSaEKr
createdAt: 2020-01-31T10:17:47+00:00
updatedAt: 2020-03-09T13:19:43+00:00
streamKey: 30087931-229e-42cf-b5f9-e91bcc1f7332
name: Live Stream From the browser
public: true
record: true
broadcasting: false
assets:
iframe:
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
hls: https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
schema:
$ref: '#/components/schemas/live-stream'
description: Success
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: Update a live stream
tags:
- Live Streams
x-client-action: update
/live-streams/{liveStreamId}/thumbnail:
delete:
description: Send the unique identifier for a live stream to delete it from
the system.
operationId: DELETE_live-streams-liveStreamId-thumbnail
parameters:
- description: 'The unique identifier for the live stream you want to delete. '
example: li400mYKSgQ6xs7taUeSaEKr
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/live-stream'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: liveStreamId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a thumbnail
tags:
- Live Streams
x-client-action: deleteThumbnail
post:
description: Upload an image to use as a backdrop for your livestream.
operationId: POST_live-streams-liveStreamId-thumbnail
parameters:
- description: The unique ID for the live stream you want to upload.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/live-stream-thumbnail-upload-payload'
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/live-stream'
description: Created
"400":
content:
application/json:
examples:
response:
value:
status: 400
type: https://docs.api.video/docs/fileextension
title: Only [jpeg, jpg, JPG, JPEG] extensions are supported.
name: file
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: liveStreamId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a thumbnail
tags:
- Live Streams
x-client-action: uploadThumbnail
/videos/{videoId}/captions/{language}:
delete:
description: Delete a caption in a specific language by providing the video
ID for the video you want to delete the caption from and the language the
caption is in.
operationId: DELETE_videos-videoId-captions-language
parameters:
- description: The unique identifier for the video you want to delete a caption
from.
example: vi4k0jvEUuaTdRAEjQ4Prklgc
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a caption
tags:
- Captions
x-client-action: delete
get:
description: Display a caption for a video in a specific language. If the language
is available, the caption is returned. Otherwise, you will get a response
indicating the caption was not found.
operationId: GET_videos-videoId-captions-language
parameters:
- description: The unique identifier for the video you want captions for.
example: vi4k0jvEUuaTdRAEjQ4Prklg
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions/en
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt
srclang: en
default: false
schema:
$ref: '#/components/schemas/subtitle'
description: Success
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show a caption
tags:
- Captions
x-client-action: get
patch:
description: 'To have the captions on automatically, use this PATCH to set default:
true.'
operationId: PATCH_videos-videoId-captions-language
parameters:
- description: 'The unique identifier for the video you want to have automatic
captions for. '
example: vi4k0jvEUuaTdRAEjQ4Prklg
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/captions-update-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions/en
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt
srclang: en
default: true
schema:
$ref: '#/components/schemas/subtitle'
description: Success
"400":
content:
application/json:
examples:
response:
value:
type: string (required)
title: string (required)
name: string (required)
status: integer (required)
problems:
- null
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: Lorem sit culpa non
title: sunt do fugiat tempor
name: irure mollit aute
status: 85925135
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Update caption
tags:
- Captions
x-client-action: update
post:
description: |-
Upload a VTT file to add captions to your video.
Read our [captioning tutorial](https://api.video/blog/tutorials/adding-captions) for more details.
operationId: POST_videos-videoId-captions-language
parameters:
- description: The unique identifier for the video you want to add a caption
to.
example: vi4k0jvEUuaTdRAEjQ4Prklg
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid BCP 47 language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/captions-upload-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions/en
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt
srclang: en
default: false
schema:
$ref: '#/components/schemas/subtitle'
description: Success
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a caption
tags:
- Captions
x-client-action: upload
/videos/{videoId}/captions:
get:
description: Retrieve a list of available captions for the videoId you provide.
operationId: GET_videos-videoId-captions
parameters:
- description: The unique identifier for the video you want to retrieve a list
of captions for.
example: vi4k0jvEUuaTdRAEjQ4Prklg
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions/en
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt
srclang: en
default: false
- uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions/fr
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/fr.vtt
srclang: fr
default: false
pagination:
currentPage: 1
currentPageItems: 2
pageSize: 25
pagesTotal: 1
itemsTotal: 2
links:
- rel: self
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25
- rel: first
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25
- rel: last
uri: /videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/captions-list-response'
description: Success
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: List video captions
tags:
- Captions
x-client-action: list
x-group-parameters: true
x-client-paginated: true
/videos/{videoId}/chapters/{language}:
delete:
operationId: DELETE_videos-videoId-chapters-language
parameters:
- description: 'The unique identifier for the video you want to delete a chapter
from. '
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a chapter
tags:
- Chapters
x-client-action: delete
get:
operationId: GET_videos-videoId-chapters-language
parameters:
- description: The unique identifier for the video you want to show a chapter
for.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: fr
schema:
$ref: '#/components/schemas/chapter'
description: Success
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show a chapter
tags:
- Chapters
x-client-action: get
post:
description: Chapters help break the video into sections. Read our [tutorial](https://api.video/blog/tutorials/adding-chapters-to-your-videos)
for more details.
operationId: POST_videos-videoId-chapters-language
parameters:
- description: The unique identifier for the video you want to upload a chapter
for.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers)
language representation.
example: en
explode: false
in: path
name: language
required: true
schema:
type: string
style: simple
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/chapters-update-payload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: fr
schema:
$ref: '#/components/schemas/chapter'
description: Success
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a chapter
tags:
- Chapters
x-client-action: upload
/videos/{videoId}/chapters:
get:
description: Retrieve a list of all chapters for a specified video.
operationId: GET_videos-videoId-chapters
parameters:
- description: The unique identifier for the video you want to retrieve a list
of chapters for.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: fr
- uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters/en
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/en.vtt
language: en
pagination:
currentPage: 1
currentPageItems: 2
pageSize: 25
pagesTotal: 1
itemsTotal: 2
links:
- rel: self
uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25
- rel: first
uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25
- rel: last
uri: /videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/chapters-list-response'
description: Success
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: List video chapters
tags:
- Chapters
x-client-action: list
x-group-parameters: true
x-client-paginated: true
/players:
get:
description: Retrieve a list of all the players you created, as well as details
about each one.
operationId: GET_players
parameters:
- description: createdAt is the time the player was created. updatedAt is the
time the player was last updated. The time is presented in ISO-8601 format.
example: createdAt
explode: true
in: query
name: sortBy
required: false
schema:
enum:
- createdAt
- updatedAt
type: string
style: form
- description: 'Allowed: asc, desc. Ascending for date and time means that earlier
values precede later ones. Descending means that later values preced earlier
ones.'
example: asc
explode: true
in: query
name: sortOrder
required: false
schema:
enum:
- asc
- desc
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- playerId: pl4fgtjy4tjyKDK545DRdfg
createdAt: 2020-01-13T10:09:17+00:00
updatedAt: 2020-01-13T10:09:17+00:00
shapeMargin: 10
shapeRadius: 3
shapeAspect: flat
shapeBackgroundTop: rgba(50, 50, 50, .7)
shapeBackgroundBottom: rgba(50, 50, 50, .8)
text: rgba(255, 255, 255, .95)
link: rgba(255, 0, 0, .95)
linkHover: rgba(255, 255, 255, .75)
linkActive: rgba(255, 0, 0, .75)
trackPlayed: rgba(255, 255, 255, .95)
trackUnplayed: rgba(255, 255, 255, .1)
trackBackground: rgba(0, 0, 0, 0)
backgroundTop: rgba(72, 4, 45, 1)
backgroundBottom: rgba(94, 95, 89, 1)
backgroundText: rgba(255, 255, 255, .95)
enableApi: false
enableControls: false
forceAutoplay: false
hideTitle: false
forceLoop: false
- playerId: pl54fgtjy4tjyKDK45DRdfg
createdAt: 2020-01-13T10:09:17+00:00
updatedAt: 2020-01-13T10:09:17+00:00
shapeMargin: 10
shapeRadius: 3
shapeAspect: flat
shapeBackgroundTop: rgba(50, 50, 50, .7)
shapeBackgroundBottom: rgba(50, 50, 50, .8)
text: rgba(255, 255, 255, .95)
link: rgba(255, 0, 0, .95)
linkHover: rgba(255, 255, 255, .75)
linkActive: rgba(255, 0, 0, .75)
trackPlayed: rgba(255, 255, 255, .95)
trackUnplayed: rgba(255, 255, 255, .1)
trackBackground: rgba(0, 0, 0, 0)
backgroundTop: rgba(72, 4, 45, 1)
backgroundBottom: rgba(94, 95, 89, 1)
backgroundText: rgba(255, 255, 255, .95)
enableApi: true
enableControls: true
forceAutoplay: true
hideTitle: false
forceLoop: false
pagination:
currentPage: 1
pageSize: 25
pagesTotal: 1
itemsTotal: 4
currentPageItems: 4
links:
- rel: self
uri: https://ws.api.video/players?currentPage=1
- rel: first
uri: https://ws.api.video/players?currentPage=1
- rel: last
uri: https://ws.api.video/players?currentPage=1
schema:
$ref: '#/components/schemas/players-list-response'
description: Success
"400":
content:
application/json:
examples:
response:
value:
title: This parameter is out of the allowed range of values.
name: page
status: 400
range:
min: 1
problems:
- title: This parameter is out of the allowed range of values.
name: page
range:
min: 1
- title: This parameter is out of the allowed range of values.
name: pageSize
range:
min: 10
max: 100
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: List all players
tags:
- Player Themes
x-client-action: list
x-group-parameters: true
x-client-paginated: true
post:
description: Create a player for your video, and customise it.
operationId: POST_players
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/playerCreationPayload'
required: true
responses:
"201":
content:
application/json:
examples:
response:
value:
playerId: pl45d5vFFGrfdsdsd156dGhh
createdAt: 2020-01-13T10:09:17+00:00
updatedAt: 2020-01-13T10:09:17+00:00
shapeRadius: 3
shapeAspect: flat
shapeBackgroundTop: rgba(50, 50, 50, .7)
shapeBackgroundBottom: rgba(50, 50, 50, .8)
text: rgba(255, 255, 255, .95)
link: rgba(255, 0, 0, .95)
linkHover: rgba(255, 255, 255, .75)
linkActive: rgba(255, 0, 0, .75)
trackPlayed: rgba(255, 255, 255, .95)
trackUnplayed: rgba(255, 255, 255, .1)
trackBackground: rgba(0, 0, 0, 0)
backgroundTop: rgba(72, 4, 45, 1)
backgroundBottom: rgba(94, 95, 89, 1)
backgroundText: rgba(255, 255, 255, .95)
enableApi: false
enableControls: false
forceAutoplay: false
hideTitle: false
forceLoop: false
schema:
$ref: '#/components/schemas/player'
description: Created
security:
- bearerAuth: []
summary: Create a player
tags:
- Player Themes
x-client-action: create
/players/{playerId}:
delete:
description: Delete a player if you no longer need it. You can delete any player
that you have the player ID for.
operationId: DELETE_players-playerId
parameters:
- description: The unique identifier for the player you want to delete.
example: pl45d5vFFGrfdsdsd156dGhh
explode: false
in: path
name: playerId
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: playerId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a player
tags:
- Player Themes
x-client-action: delete
get:
description: Use a player ID to retrieve details about the player and display
it for viewers.
operationId: GET_players-playerId
parameters:
- description: 'The unique identifier for the player you want to retrieve. '
example: pl45d5vFFGrfdsdsd156dGhh
explode: false
in: path
name: playerId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
playerId: pl45d5vFFGrfdsdsd156dGhh
createdAt: 2020-01-13T10:09:17+00:00
updatedAt: 2020-01-13T11:12:14+00:00
shapeRadius: 3
shapeAspect: flat
shapeBackgroundTop: rgba(50, 50, 50, .7)
shapeBackgroundBottom: rgba(50, 50, 50, .8)
text: rgba(255, 255, 255, .95)
link: rgba(255, 0, 0, .95)
linkHover: rgba(255, 255, 255, .75)
linkActive: rgba(255, 0, 0, .75)
trackPlayed: rgba(255, 255, 255, .95)
trackUnplayed: rgba(255, 255, 255, .1)
trackBackground: rgba(0, 0, 0, 0)
backgroundTop: rgba(72, 4, 45, 1)
backgroundBottom: rgba(94, 95, 89, 1)
backgroundText: rgba(255, 255, 255, .95)
enableApi: false
enableControls: false
forceAutoplay: false
hideTitle: false
forceLoop: false
schema:
$ref: '#/components/schemas/player'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: playerId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Show a player
tags:
- Player Themes
x-client-action: get
patch:
description: 'Use a player ID to update specific details for a player. NOTE:
It may take up to 10 min before the new player configuration is available
from our CDN.'
operationId: PATCH_players-playerId
parameters:
- description: The unique identifier for the player.
example: pl45d5vFFGrfdsdsd156dGhh
explode: false
in: path
name: playerId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/playerUpdatePayload'
required: true
responses:
"200":
content:
application/json:
examples:
response:
value:
playerId: pl45d5vFFGrfdsdsd156dGhh
createdAt: 2020-01-13T10:09:17+00:00
updatedAt: 2020-01-13T11:12:14+00:00
shapeRadius: 3
shapeAspect: flat
shapeBackgroundTop: rgba(50, 50, 50, .7)
shapeBackgroundBottom: rgba(50, 50, 50, .8)
text: rgba(255, 255, 255, .95)
link: rgba(255, 0, 0, .95)
linkHover: rgba(255, 255, 255, .75)
linkActive: rgba(255, 0, 0, .75)
trackPlayed: rgba(255, 255, 255, .95)
trackUnplayed: rgba(255, 255, 255, .1)
trackBackground: rgba(0, 0, 0, 0)
backgroundTop: rgba(72, 4, 45, 1)
backgroundBottom: rgba(94, 95, 89, 1)
backgroundText: rgba(255, 255, 255, .95)
enableApi: false
enableControls: false
forceAutoplay: false
hideTitle: false
forceLoop: false
schema:
$ref: '#/components/schemas/player'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: playerId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Update a player
tags:
- Player Themes
x-client-action: update
/players/{playerId}/logo:
delete:
operationId: DELETE_players-playerId-logo
parameters:
- description: The unique identifier for the player.
example: pl14Db6oMJRH6SRVoOwORacK
explode: false
in: path
name: playerId
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: playerId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete logo
tags:
- Player Themes
x-client-action: deleteLogo
post:
description: "The uploaded image maximum size should be 200x100 and its weight\
\ should be 200KB. \nIt will be scaled down to 30px height and converted to\
\ PNG to be displayed in the player."
operationId: POST_players-playerId-logo
parameters:
- description: The unique identifier for the player.
example: pl14Db6oMJRH6SRVoOwORacK
explode: false
in: path
name: playerId
required: true
schema:
type: string
style: simple
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/players-upload-logo-payload'
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/player'
description: Created
"400":
content:
application/json:
examples:
response:
value:
status: 400
type: https://docs.api.video/docs/fileextension
title: Only ['jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG'] extensions
are supported.
name: file
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: playerId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Upload a logo
tags:
- Player Themes
x-client-action: uploadLogo
/analytics/videos/{videoId}:
get:
description: Retrieve all available user sessions for a specific video.
operationId: GET_analytics-videos-videoId
parameters:
- description: The unique identifier for the video you want to retrieve session
information for.
example: vi4k0jvEUuaTdRAEjQ4Prklg
explode: false
in: path
name: videoId
required: true
schema:
type: string
style: simple
- description: "Period must have one of the following formats: \n\n- For a day\
\ : 2018-01-01,\n- For a week: 2018-W01, \n- For a month: 2018-01\n- For\
\ a year: 2018\n\nFor a range period: \n- Date range: 2018-01-01/2018-01-15\n"
explode: true
in: query
name: period
required: false
schema:
format: period
type: string
style: form
- description: Metadata and Dynamic Metadata filter. Send an array of key value
pairs you want to filter sessios with.
example: '[{"key": "Author", "value": "John Doe"}, {"key": "Format", "value":
"Tutorial"}]'
explode: true
in: query
name: metadata
required: false
schema:
items:
type: string
type: array
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- session:
sessionId: psEmFwGQUAXR2lFHj5nDOpy
loadedAt: 2019-06-24T11:45:01.109+00
endedAt: 2019-06-24T11:49:19.243+00
location:
country: France
city: Paris
referrer:
url: https://api.video
medium: organic
source: https://google.com
searchTerm: video encoding hosting and delivery
device:
type: desktop
vendor: Dell
model: unknown
os:
name: Microsoft Windows
shortname: W10
version: Windows10
client:
type: browser
name: Firefox
version: "67.0"
pagination:
currentPage: 1
currentPageItems: 1
pageSize: 25
pagesTotal: 1
itemsTotal: 1
links:
- rel: self
uri: /analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25
- rel: first
uri: /analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25
- rel: last
uri: /analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/raw-statistics-list-sessions-response'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: List video player sessions
tags:
- Raw statistics
x-client-action: listVideoSessions
x-group-parameters: true
x-client-paginated: true
/analytics/live-streams/{liveStreamId}:
get:
operationId: GET_analytics-live-streams-liveStreamId
parameters:
- description: The unique identifier for the live stream you want to retrieve
analytics for.
example: vi4k0jvEUuaTdRAEjQ4Jfrgz
explode: false
in: path
name: liveStreamId
required: true
schema:
type: string
style: simple
- description: "Period must have one of the following formats: \n\n- For a day\
\ : \"2018-01-01\",\n- For a week: \"2018-W01\", \n- For a month: \"2018-01\"\
\n- For a year: \"2018\"\n\nFor a range period: \n- Date range: \"2018-01-01/2018-01-15\"\
\n"
example: 2019-01-01
explode: true
in: query
name: period
required: false
schema:
format: period
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- session:
sessionId: ps4zRWVOv2If2vzKJLMr3jQo
loadedAt: 2018-09-11T13:04:37.89+00
endedAt: 2018-09-11T14:47:22.186+00
location:
country: France
city: Paris
referrer:
url: unknown
medium: unknown
source: unknown
searchTerm: unknown
device:
type: desktop
vendor: unknown
model: unknown
os:
name: unknown
shortname: unknown
version: unknown
client:
type: browser
name: Firefox
version: "61.0"
pagination:
currentPage: 1
currentPageItems: 1
pageSize: 25
pagesTotal: 1
itemsTotal: 1
links:
- rel: self
uri: /analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25
- rel: first
uri: /analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25
- rel: last
uri: /analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25
schema:
$ref: '#/components/schemas/raw-statistics-list-live-stream-analytics-response'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: liveStreamId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: List live stream player sessions
tags:
- Raw statistics
x-client-action: listLiveStreamSessions
x-group-parameters: true
x-client-paginated: true
/analytics/sessions/{sessionId}/events:
get:
description: Useful to track and measure video's engagement.
operationId: GET_analytics-sessions-sessionId-events
parameters:
- description: A unique identifier you can use to reference and track a session
with.
example: psEmFwGQUAXR2lFHj5nDOpy
explode: false
in: path
name: sessionId
required: true
schema:
type: string
style: simple
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- type: ready
emittedAt: 2020-09-15T09:47:42+00:00
at: 0
- type: play
emittedAt: 2020-09-15T21:35:57+00:00
at: 0
- type: pause
emittedAt: 2020-09-15T21:36:05+00:00
at: 7
- type: resume
emittedAt: 2020-09-15T21:36:19+00:00
at: 21
- type: seek.forward
emittedAt: 2020-09-15T21:36:19+00:00
from: 7
to: 21
- type: end
emittedAt: 2020-09-15T21:36:28+00:00
at: 30
- type: play
emittedAt: 2020-09-15T21:36:29+00:00
at: 0
- type: seek.backward
emittedAt: 2020-09-15T21:36:29+00:00
from: 30
to: 0
- type: pause
emittedAt: 2020-09-15T21:36:29+00:00
at: 21
- type: resume
emittedAt: 2020-09-15T21:36:30+00:00
at: 21
- type: seek.forward
emittedAt: 2020-09-15T21:36:30+00:00
from: 0
to: 21
- type: pause
emittedAt: 2020-09-15T21:36:33+00:00
at: 20
- type: resume
emittedAt: 2020-09-15T21:36:33+00:00
at: 20
- type: seek.backward
emittedAt: 2020-09-15T21:36:33+00:00
from: 24
to: 20
- type: pause
emittedAt: 2020-09-15T21:36:39+00:00
at: 17
- type: resume
emittedAt: 2020-09-15T21:36:39+00:00
at: 17
- type: seek.forward
emittedAt: 2020-09-15T21:36:39+00:00
from: 17
to: 17
- type: pause
emittedAt: 2020-09-15T21:36:41+00:00
at: 19
- type: ready
emittedAt: 2020-09-17T09:20:47+00:00
at: 0
- type: ready
emittedAt: 2020-09-17T09:41:01+00:00
at: 0
- type: ready
emittedAt: 2020-09-17T09:41:08+00:00
at: 0
- type: play
emittedAt: 2020-09-17T09:41:10+00:00
at: 0
- type: pause
emittedAt: 2020-09-17T09:41:12+00:00
at: 1
- type: resume
emittedAt: 2020-09-17T09:41:13+00:00
at: 1
- type: pause
emittedAt: 2020-09-17T09:41:15+00:00
at: 3
pagination:
currentPage: 1
currentPageItems: 25
pageSize: 25
pagesTotal: 2
itemsTotal: 30
links:
- rel: self
uri: /analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=1&pageSize=25
- rel: first
uri: /analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=1&pageSize=25
- rel: next
uri: /analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=2&pageSize=25
- rel: last
uri: /analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=2&pageSize=25
schema:
$ref: '#/components/schemas/raw-statistics-list-player-session-events-response'
description: Success
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: videoId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: List player session events
tags:
- Raw statistics
x-client-action: listSessionEvents
x-group-parameters: true
x-client-paginated: true
/webhooks:
get:
description: Requests to this endpoint return a list of your webhooks (with
all their details). You can filter what the webhook list that the API returns
using the parameters described below.
operationId: LIST-webhooks
parameters:
- description: The webhook event that you wish to filter on.
example: video.encoding.quality.completed
explode: true
in: query
name: events
required: false
schema:
type: string
style: form
- description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
- description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
responses:
"200":
content:
application/json:
examples:
response:
value:
data:
- webhookId: webhook_XXXXXXXXXXXXXXX
createdAt: 2021-01-08T14:12:18.000+00:00
events:
- video.encoding.quality.completed
url: http://clientnotificationserver.com/notif?myquery=query
- webhookId: webhook_XXXXXXXXXYYYYYY
createdAt: 2021-01-12T12:12:12.000+00:00
events:
- video.encoding.quality.completed
url: http://clientnotificationserver.com/notif?myquery=query2
pagination:
currentPage: 1
pageSize: 25
pagesTotal: 1
itemsTotal: 11
currentPageItems: 11
links:
- rel: self
uri: https://ws.api.video/webhooks?currentPage=1
- rel: first
uri: https://ws.api.video/webhooks?currentPage=1
- rel: last
uri: https://ws.api.video/webhooks?currentPage=1
schema:
$ref: '#/components/schemas/webhooks-list-response'
description: Success
security:
- bearerAuth: []
summary: List all webhooks
tags:
- Webhooks
x-group-parameters: true
x-client-paginated: true
x-client-action: list
post:
description: 'Webhooks can push notifications to your server, rather than polling
api.video for changes. We currently offer one event, the ```video.encoding.quality.completed```
event. When a new video is uploaded into your account, it will be encoded
into several different HLS sizes/bitrates. When each version is encoded,
your webhook will get a notification. It will look like ```{ \"type\": \"video.encoding.quality.completed\",
\"emittedAt\": \"2021-01-29T16:46:25.217+01:00\", \"videoId\": \"viXXXXXXXX\",
\"encoding\": \"hls\", \"quality\": \"720p\"} ```. This request says that
the 720p HLS encoding was completed.'
operationId: POST-webhooks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/webhooks-create-payload'
required: true
responses:
"201":
content:
application/json:
examples:
response:
value:
webhookId: webhook_XXXXXXXXXXXXXXX
createdAt: 2021-01-08T14:12:18.000+00:00
events:
- video.encoding.quality.completed
url: http://clientnotificationserver.com/notif?myquery=query
schema:
$ref: '#/components/schemas/webhook'
description: Created
"400":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/attributerequired
events: This attribute is required.
name: events
status: 400
problems:
- type: https://docs.api.video/docs/attributerequired
title: This attribute is required.
name: events
- type: https://docs.api.video/docs/attributerequired
title: This attribute is required.
name: url
- type: https://docs.api.video/docs/attributeinvalid
title: This attribute must be an array.
name: events
schema:
$ref: '#/components/schemas/bad-request'
description: Bad Request
security:
- bearerAuth: []
summary: Create Webhook
tags:
- Webhooks
x-client-action: create
/webhooks/{webhookId}:
delete:
description: This endpoint will delete the indicated webhook.
operationId: DELETE-webhook
parameters:
- description: The webhook you wish to delete.
explode: false
in: path
name: webhookId
required: true
schema:
type: string
style: simple
responses:
"204":
description: No Content
"404":
content:
application/json:
examples:
response:
value:
type: https://docs.api.video/docs/resourcenot_found
title: The requested resource was not found.
name: webhookId
status: 404
schema:
$ref: '#/components/schemas/not-found'
description: Not Found
security:
- bearerAuth: []
summary: Delete a Webhook
tags:
- Webhooks
x-client-action: delete
get:
description: This call provides the same JSON information provided on Webjhook
creation.
operationId: GET-Webhook
parameters:
- description: The unique webhook you wish to retreive details on.
explode: false
in: path
name: webhookId
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
examples:
response:
value:
webhookId: webhook_XXXXXXXXXXXXXXX
createdAt: 2021-01-08T14:12:18.000+00:00
events:
- video.encoding.quality.completed
url: http://clientnotificationserver.com/notif?myquery=query
schema:
$ref: '#/components/schemas/webhook'
description: Success
security:
- bearerAuth: []
summary: Show Webhook details
tags:
- Webhooks
x-client-action: get
components:
parameters:
currentPage:
description: 'Choose the number of search results to return per page. Minimum
value: 1'
example: 2
explode: true
in: query
name: currentPage
required: false
schema:
default: 1
type: integer
style: form
pageSize:
description: Results per page. Allowed values 1-100, default is 25.
example: 30
explode: true
in: query
name: pageSize
required: false
schema:
default: 25
type: integer
style: form
schemas:
link:
properties:
rel:
type: string
uri:
type: string
type: object
access-token:
example:
access_token: est
token_type: qui nulla l
refresh_token: cillum
expires_in: 3600
properties:
access_token:
description: The access token containing security credentials allowing you
to acccess the API. The token lasts for one hour.
example: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA
type: string
token_type:
default: bearer
description: The type of token you have.
type: string
refresh_token:
description: A token you can use to get the next access token when your
current access token expires.
example: def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962
type: string
expires_in:
description: Lists the time in seconds when your access token expires. It
lasts for one hour.
type: integer
title: AccessToken
type: object
pagination:
example:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
properties:
itemsTotal:
description: Total number of items that exist.
readOnly: true
type: integer
pagesTotal:
description: Number of items listed in the current page.
readOnly: true
type: integer
pageSize:
description: Maximum number of item per page.
readOnly: true
type: integer
currentPage:
description: The current page index.
readOnly: true
type: integer
currentPageItems:
description: The number of items on the current page.
readOnly: true
type: integer
links:
items:
$ref: '#/components/schemas/pagination_link'
type: array
required:
- links
title: Pagination
type: object
bad-request:
properties:
type:
type: string
title:
type: string
name:
type: string
status:
type: integer
problems:
items:
$ref: '#/components/schemas/bad-request'
type: array
uniqueItems: true
title: BadRequest
type: object
not-found:
properties:
type:
type: string
title:
type: string
name:
type: string
status:
type: integer
title: NotFound
type: object
video:
example:
videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Maths video
description: An amazing video explaining the string theory
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
scheduledAt: 4251-03-03T12:52:03.085Z
publishedAt: 4665-07-14T23:36:18.598Z
actions:
- video_delete
- video_download
- video_update
properties:
videoId:
description: The unique identifier of the video object.
example: vi4k0jvEUuaTdRAEjQ4Prklg
type: string
createdAt:
description: When an webhook was created, presented in ISO-8601 format.
example: 2019-06-24T11:45:01.109Z
format: date-time
type: string
title:
description: |
The title of the video content.
example: Maths video
type: string
description:
description: |
A description for the video content.
example: An amazing video explaining string theory.
type: string
publishedAt:
description: The date and time the API created the video. Date and time
are provided using ISO-8601 UTC format.
example: 2019-12-16T08:25:51+00:00
type: string
updatedAt:
description: The date and time the video was updated. Date and time are
provided using ISO-8601 UTC format.
example: 2019-12-16T08:25:51+00:10
format: date-time
type: string
tags:
description: "One array of tags (each tag is a string) in order to categorize\
\ a video. Tags may include spaces. \n"
example: '"tags": ["maths", "string theory", "video"]'
items: {}
type: array
metadata:
description: "Metadata you can use to categorise and filter videos. Metadata\
\ is a list of dictionaries, where each dictionary represents a key value\
\ pair for categorising a video. \n"
example: '[{"key":"Author", "value":"John Doe"}, {"key":"Format", "value":"Tutorial"}]'
items:
$ref: '#/components/schemas/metadata'
type: array
source:
$ref: '#/components/schemas/videoSource'
assets:
$ref: '#/components/schemas/videoAssets'
playerId:
description: |
The id of the player that will be applied on the video.
example: pl45KFKdlddgk654dspkze
type: string
public:
description: |
Defines if the content is publicly reachable or if a unique token is needed for each play session.
example: false
type: boolean
panoramic:
description: |
Defines if video is panoramic.
example: false
type: boolean
mp4Support:
description: |
This lets you know whether mp4 is supported. If enabled, an mp4 URL will be provided in the response for the video.
example: true
type: boolean
title: video
type: object
player:
example:
trackUnplayed: trackUnplayed
shapeMargin: 0
backgroundTop: backgroundTop
link: link
trackPlayed: trackPlayed
shapeBackgroundTop: shapeBackgroundTop
linkHover: linkHover
backgroundBottom: backgroundBottom
enableControls: true
backgroundText: backgroundText
enableApi: true
forceAutoplay: true
shapeBackgroundBottom: shapeBackgroundBottom
trackBackground: trackBackground
createdAt: 2020-01-31T10:17:47Z
assets:
link: path/to/my/logo/mylogo.jpg
logo: mylogo.jpg
hideTitle: true
shapeAspect: shapeAspect
text: text
linkActive: linkActive
forceLoop: true
playerId: pl45KFKdlddgk654dspkze
updatedAt: 2020-01-31T10:18:47Z
shapeRadius: 6
properties:
text:
description: 'RGBA color for timer text. Default: rgba(255, 255, 255, 1)'
type: string
link:
description: 'RGBA color for all controls. Default: rgba(255, 255, 255,
1)'
type: string
linkHover:
description: 'RGBA color for all controls when hovered. Default: rgba(255,
255, 255, 1)'
type: string
trackPlayed:
description: 'RGBA color playback bar: played content. Default: rgba(88,
131, 255, .95)'
type: string
trackUnplayed:
description: 'RGBA color playback bar: downloaded but unplayed (buffered)
content. Default: rgba(255, 255, 255, .35)'
type: string
trackBackground:
description: 'RGBA color playback bar: background. Default: rgba(255, 255,
255, .2)'
type: string
backgroundTop:
description: 'RGBA color: top 50% of background. Default: rgba(0, 0, 0,
.7)'
type: string
backgroundBottom:
description: 'RGBA color: bottom 50% of background. Default: rgba(0, 0,
0, .7)'
type: string
backgroundText:
description: 'RGBA color for title text. Default: rgba(255, 255, 255, 1)'
type: string
enableApi:
description: 'enable/disable player SDK access. Default: true'
type: boolean
enableControls:
description: 'enable/disable player controls. Default: true'
type: boolean
forceAutoplay:
description: 'enable/disable player autoplay. Default: false'
type: boolean
hideTitle:
description: 'enable/disable title. Default: false'
type: boolean
forceLoop:
description: 'enable/disable looping. Default: false'
type: boolean
playerId:
example: pl45KFKdlddgk654dspkze
type: string
createdAt:
description: When the player was created, presented in ISO-8601 format.
example: 2020-01-31T10:17:47Z
format: date-time
type: string
updatedAt:
description: When the player was last updated, presented in ISO-8601 format.
example: 2020-01-31T10:18:47Z
format: date-time
type: string
shapeMargin:
description: Deprecated
type: integer
shapeRadius:
description: Deprecated
type: integer
shapeAspect:
description: Deprecated
type: string
shapeBackgroundTop:
description: Deprecated
type: string
shapeBackgroundBottom:
description: Deprecated
type: string
linkActive:
description: Deprecated
type: string
assets:
$ref: '#/components/schemas/player_assets'
title: Player
type: object
playerCreationPayload:
properties:
text:
description: 'RGBA color for timer text. Default: rgba(255, 255, 255, 1)'
type: string
link:
description: 'RGBA color for all controls. Default: rgba(255, 255, 255,
1)'
type: string
linkHover:
description: 'RGBA color for all controls when hovered. Default: rgba(255,
255, 255, 1)'
type: string
trackPlayed:
description: 'RGBA color playback bar: played content. Default: rgba(88,
131, 255, .95)'
type: string
trackUnplayed:
description: 'RGBA color playback bar: downloaded but unplayed (buffered)
content. Default: rgba(255, 255, 255, .35)'
type: string
trackBackground:
description: 'RGBA color playback bar: background. Default: rgba(255, 255,
255, .2)'
type: string
backgroundTop:
description: 'RGBA color: top 50% of background. Default: rgba(0, 0, 0,
.7)'
type: string
backgroundBottom:
description: 'RGBA color: bottom 50% of background. Default: rgba(0, 0,
0, .7)'
type: string
backgroundText:
description: 'RGBA color for title text. Default: rgba(255, 255, 255, 1)'
type: string
enableApi:
default: true
description: 'enable/disable player SDK access. Default: true'
type: boolean
enableControls:
default: true
description: 'enable/disable player controls. Default: true'
type: boolean
forceAutoplay:
default: false
description: 'enable/disable player autoplay. Default: false'
type: boolean
hideTitle:
default: false
description: 'enable/disable title. Default: false'
type: boolean
forceLoop:
default: false
description: 'enable/disable looping. Default: false'
type: boolean
type: object
playerUpdatePayload:
properties:
text:
description: 'RGBA color for timer text. Default: rgba(255, 255, 255, 1)'
type: string
link:
description: 'RGBA color for all controls. Default: rgba(255, 255, 255,
1)'
type: string
linkHover:
description: 'RGBA color for all controls when hovered. Default: rgba(255,
255, 255, 1)'
type: string
trackPlayed:
description: 'RGBA color playback bar: played content. Default: rgba(88,
131, 255, .95)'
type: string
trackUnplayed:
description: 'RGBA color playback bar: downloaded but unplayed (buffered)
content. Default: rgba(255, 255, 255, .35)'
type: string
trackBackground:
description: 'RGBA color playback bar: background. Default: rgba(255, 255,
255, .2)'
type: string
backgroundTop:
description: 'RGBA color: top 50% of background. Default: rgba(0, 0, 0,
.7)'
type: string
backgroundBottom:
description: 'RGBA color: bottom 50% of background. Default: rgba(0, 0,
0, .7)'
type: string
backgroundText:
description: 'RGBA color for title text. Default: rgba(255, 255, 255, 1)'
type: string
enableApi:
description: 'enable/disable player SDK access. Default: true'
type: boolean
enableControls:
description: 'enable/disable player controls. Default: true'
type: boolean
forceAutoplay:
description: 'enable/disable player autoplay. Default: false'
type: boolean
hideTitle:
description: 'enable/disable title. Default: false'
type: boolean
forceLoop:
description: 'enable/disable looping. Default: false'
type: boolean
title: PlayerUpdatePayload
type: object
subtitle:
example:
default: false
src: src
srclang: srclang
uri: uri
properties:
uri:
type: string
src:
type: string
srclang:
type: string
default:
default: false
description: Whether you will have subtitles or not. True for yes you will
have subtitles, false for no you will not have subtitles.
example: false
type: boolean
title: Subtitle
type: object
video-session:
example:
session:
sessionId: psEmFwGQUAXR2lFHj5nDOpy
loadedAt: 2019-06-24T11:45:01.109+00
endedAt: 2019-06-24T11:49:19.243+00
location:
country: France
city: Paris
referrer:
url: https://api.video
medium: organic
source: https://google.com
searchTerm: video encoding hosting and delivery
device:
type: desktop
vendor: Dell
model: unknown
os:
name: Microsoft Windows
shortname: W10
version: Windows10
client:
type: browser
name: Firefox
version: "67.0"
properties:
session:
$ref: '#/components/schemas/video_session_session'
location:
$ref: '#/components/schemas/video_session_location'
referrer:
$ref: '#/components/schemas/video_session_referrer'
device:
$ref: '#/components/schemas/video_session_device'
os:
$ref: '#/components/schemas/video_session_os'
client:
$ref: '#/components/schemas/video_session_client'
title: Video Session
type: object
live-stream:
example:
streamKey: cc1b4df0-d1c5-4064-a8f9-9f0368385135
createdAt: 2020-01-31T10:17:47Z
assets:
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
iframe:
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
public: true
liveStreamId: li400mYKSgQ6xs7taUeSaEKr
record: true
name: My Live Stream
playerId: pl45d5vFFGrfdsdsd156dGhh
broadcasting: true
updatedAt: 2020-01-31T10:18:47Z
properties:
liveStreamId:
description: The unique identifier for the live stream. Live stream IDs
begin with "li."
example: li400mYKSgQ6xs7taUeSaEKr
type: string
name:
description: The name of your live stream.
example: My Live Stream
type: string
streamKey:
description: The unique, private stream key that you use to begin streaming.
example: cc1b4df0-d1c5-4064-a8f9-9f0368385135
type: string
record:
description: Whether you are recording or not.
example: true
type: boolean
public:
description: BETA FEATURE Please limit all public = false ("private") livestreams
to 3,000 users. Whether your video can be viewed by everyone, or requires
authentication to see it. A setting of false will require a unique token
for each view.
example: true
type: boolean
assets:
$ref: '#/components/schemas/live_stream_assets'
playerId:
description: The unique identifier for the player.
example: pl45d5vFFGrfdsdsd156dGhh
type: string
broadcasting:
description: Whether or not you are broadcasting the live video you recorded
for others to see. True means you are broadcasting to viewers, false means
you are not.
example: true
type: boolean
createdAt:
description: When the player was created, presented in ISO-8601 format.
example: 2020-01-31T10:17:47Z
format: date-time
type: string
updatedAt:
description: When the player was last updated, presented in ISO-8601 format.
example: 2020-01-31T10:18:47Z
format: date-time
type: string
title: LiveStream
type: object
live-stream-session:
example:
referrer:
searchTerm: video stream
medium: organic
source: https://google.com
url: https://api.video
os:
name: Microsoft Windows
shortname: W10
version: Windows 10
session:
loadedAt: 2019-06-24T11:45:01.109Z
endedAt: 2019-06-24T12:45:01.109Z
sessionId: sessionId
client:
name: Firefox
type: browser
version: "67.0"
location:
country: France
city: Paris
device:
vendor: Dell
model: unknown
type: desktop
properties:
session:
$ref: '#/components/schemas/live_stream_session_session'
location:
$ref: '#/components/schemas/live_stream_session_location'
referrer:
$ref: '#/components/schemas/live_stream_session_referrer'
device:
$ref: '#/components/schemas/live_stream_session_device'
os:
$ref: '#/components/schemas/video_session_os'
client:
$ref: '#/components/schemas/live_stream_session_client'
title: Live Stream Session
type: object
player-session-event:
example:
emittedAt: 2019-06-24T11:45:01.109Z
at: 0
from: 6
to: 1
type: play
properties:
type:
description: 'Possible values are: ready, play, pause, resume, seek.backward,
seek.forward, end'
example: play
type: string
emittedAt:
description: When an event occurred, presented in ISO-8601 format.
example: 2019-06-24T11:45:01.109Z
format: date-time
type: string
at:
type: integer
from:
type: integer
to:
type: integer
title: Player Session Event
type: object
webhook:
example:
createdAt: 2019-06-24T11:45:01.109Z
webhookId: webhook_XXXXXXXXXXXXXXX
events: '["video.encoding.quality.completed"]'
url: http://clientnotificationserver.com/notif?myquery=query
properties:
webhookId:
description: Unique identifier of the webhook
example: webhook_XXXXXXXXXXXXXXX
type: string
createdAt:
description: When an webhook was created, presented in ISO-8601 format.
example: 2019-06-24T11:45:01.109Z
format: date-time
type: string
events:
description: A list of events that will trigger the webhook.
example: '["video.encoding.quality.completed"]'
items:
type: string
type: array
url:
description: URL of the webhook
example: http://clientnotificationserver.com/notif?myquery=query
type: string
title: Webhook
type: object
videostatus:
example:
ingest:
status: uploaded
filesize: 273579401
receivedBytes:
- to: 134217727
from: 0
total: 273579401
- to: 268435455
from: 134217728
total: 273579401
- to: 273579400
from: 268435456
total: 273579401
encoding:
playable: true
qualities:
- quality: 240p
status: encoded
- quality: 360p
status: encoded
- quality: 480p
status: encoded
- quality: 720p
status: encoded
- quality: 1080p
status: encoding
- quality: 2160p
status: waiting
metadata:
width: 424
height: 240
bitrate: 411.218
duration: 4176
framerate: 24
samplerate: 48000
videoCodec: h264
audioCodec: aac
aspectRatio: 16/9
properties:
ingest:
$ref: '#/components/schemas/videostatus_ingest'
encoding:
$ref: '#/components/schemas/videostatus_encoding'
title: VideoStatus
type: object
quality:
properties:
quality:
description: The quality of the video you have, in pixels. Choices include
360p, 480p, 720p, 1080p, and 2160p.
enum:
- 240p
- 360p
- 480p
- 720p
- 1080p
- 2160p
example: 720p
type: string
status:
description: The status of your video. Statuses include waiting - the video
is waiting to be encoded. encoding - the video is in the process of being
encoded. encoded - the video was successfully encoded. failed - the video
failed to be encoded.
enum:
- waiting
- encoding
- encoded
- failed
type: string
title: quality
type: object
bytes_range:
properties:
from:
description: The starting point for the range of bytes for a chunk of a
video.
example: 0
type: integer
to:
description: The ending point for the range of bytes for a chunk of a video.
example: 9999
type: integer
total:
description: The total number of bytes in the provided range.
example: 10000
type: integer
title: bytes_range
type: object
chapter:
example:
src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: language
uri: uri
properties:
uri:
type: string
src:
description: The link to your VTT file, which contains your chapters information
for the video.
example: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
type: string
language:
type: string
title: Chapter
type: object
upload-token:
example:
createdAt: 2019-12-16T08:25:51Z
ttl: 171976544
expiresAt: 2019-12-16T09:25:51Z
token: to1tcmSFHeYY5KzyhOqVKMKb
properties:
token:
description: The unique identifier for the token you will use to authenticate
an upload.
example: to1tcmSFHeYY5KzyhOqVKMKb
type: string
ttl:
description: Time-to-live - how long the upload token is valid for.
maximum: 2147483647
minimum: 0
type: integer
createdAt:
description: When the token was created, displayed in ISO-8601 format.
example: 2019-12-16T08:25:51Z
format: date-time
type: string
expiresAt:
description: When the token expires, displayed in ISO-8601 format.
example: 2019-12-16T09:25:51Z
format: date-time
type: string
title: UploadToken
type: object
authenticate-payload:
example:
apiKey: 9VxMaPgsaFg7EBqmuspSzF7
properties:
apiKey:
description: Your account API key. You can use your sandbox API key, or
you can use your production API key.
type: string
required:
- apiKey
title: apiKey
type: object
refresh-token-payload:
example:
refreshToken: def502005346d9cc2bd79a7793ab5bdabfefcaabfbb8c253f14733f1262077e1a3f38c4751d6d20f590c3784e531a82adc11f05fc1949aa46d5575aaa99cb84b9334ba66ac773576b5d7a418937ae337de62811d086dd42ad1164b12f87d67be6ffea18f2d50be9b95697b21c4d3c4372849bdb2287259cb80541570e913691a08b2fa33c85885930de15cebea627fc09f0255562ab3d39d87d4ff8fc02b00e252afcd480421dec7de9d1411176bcf669c527762e22294b453bc9ea06e9fa8ba5b873feb2ee14ce0a6a6ddd4b78c580631e210e9b9387265dc2bec9478a66a09dcdce1c40d2f856689e9d81742c9628a0b87b359e0b218ea1f07427eef89f999e47af89792f598e05847bd008fddc32ee63f4a601ffb4cd2ad08977f1c854ec358238322c918f05aa5a41f8a171dee497218408abc8283473f6112aeed7310815416a0fa36c63667e0ed014fa40b8992891bf58bae400d901c01450101c88f4978938ad138adc19cfe5698d60fd82cb27c586f6a8f70f4393c7c9e579df8739d46d249fb76d7
properties:
refreshToken:
description: |
The refresh token is either the first refresh token you received when you authenticated with the auth/api-key endpoint, or it's the refresh token from the last time you used the auth/refresh endpoint. Place this in the body of your request to obtain a new access token (which is valid for an hour) and a new refresh token.
type: string
required:
- refreshToken
title: refreshToken
type: object
videos-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Maths video
description: An amazing video explaining the string theory
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
scheduledAt: 4251-03-03T12:52:03.085Z
publishedAt: 4665-07-14T23:36:18.598Z
actions:
- video_delete
- video_download
- video_update
- videoId: vi4k0jvEUuaTdRAEjQ4Jfrgz
title: Maths video
description: An amazing video explaining the string theory
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
scheduledAt: 4251-03-03T12:52:03.085Z
publishedAt: 4665-07-14T23:36:18.598Z
actions:
- video_delete
- video_download
- video_update
properties:
data:
items:
$ref: '#/components/schemas/video'
type: array
pagination:
$ref: '#/components/schemas/pagination'
required:
- data
- pagination
title: Videos
type: object
metadata:
properties:
key:
description: The constant that defines the data set.
example: Color
type: string
value:
description: A variable which belongs to the data set.
example: Green
type: string
title: metadata
type: object
x-client-all-args-constructor: true
video-create-payload:
example:
title: Maths video
description: An amazing video explaining string theory.
public: false
panoramic: false
mp4Support: true
playerId: pl45KFKdlddgk654dspkze
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
properties:
title:
description: The title of your new video.
example: Maths video
type: string
description:
description: A brief description of your video.
example: A video about string theory.
type: string
source:
description: If you add a video already on the web, this is where you enter
the url for the video.
example: https://www.myvideo.url.com/video.mp4
type: string
public:
default: true
description: Whether your video can be viewed by everyone, or requires authentication
to see it. A setting of false will require a unique token for each view.
example: true
type: boolean
panoramic:
default: false
description: Indicates if your video is a 360/immersive video.
example: false
type: boolean
mp4Support:
default: true
description: Enables mp4 version in addition to streamed version.
example: true
type: boolean
playerId:
description: The unique identification number for your video player.
example: pl45KFKdlddgk654dspkze
type: string
tags:
description: A list of tags you want to use to describe your video.
example: '["maths", "string theory", "video"]'
items:
type: string
type: array
metadata:
description: A list of key value pairs that you use to provide metadata
for your video. These pairs can be made dynamic, allowing you to segment
your audience. You can also just use the pairs as another way to tag and
categorize your videos.
example: '[{"key": "Author", "value": "John Doe"}]'
items:
$ref: '#/components/schemas/metadata'
type: array
publishedAt:
description: The API uses ISO-8601 format for time, and includes 3 places
for milliseconds.
example: 2020-07-14T23:36:18.598Z
format: date-time
type: string
required:
- title
title: videoCreationPayload
type: object
video-upload-payload:
properties:
file:
description: The path to the video you would like to upload. The path must
be local. If you want to use a video from an online source, you must use
the "/videos" endpoint and add the "source" parameter when you create
a new video.
format: binary
type: string
x-client-chunk-upload: "true"
required:
- file
type: object
video-thumbnail-pick-payload:
example:
timecode: 00:00:00.000
properties:
timecode:
description: "Frame in video to be used as a placeholder before the video\
\ plays. \nExample: '\"00:01:00.000\" for 1 minute into the video.'\n\
Valid Patterns: \n\"hh:mm:ss.ms\"\n\"hh:mm:ss:frameNumber\"\n\"124\" (integer\
\ value is reported as seconds) \nIf selection is out of range, \"00:00:00.00\"\
\ will be chosen."
pattern: \d{2}:\d{2}:\d{2}(\.\d{2})?
type: string
required:
- timecode
title: pickThumbnailPayload
type: object
video-thumbnail-upload-payload:
properties:
file:
description: The image to be added as a thumbnail.
format: binary
type: string
required:
- file
type: object
video-update-payload:
example:
playerId: pl45KFKdlddgk654dspkze
title: String theory
description: An amazing video explaining the string theory
public: false
panoramic: false
mp4Support: true
tags:
- maths
- string theory
- video
metadata:
- key: Author
value: John Doe
- key: Format
value: Tutorial
properties:
playerId:
description: The unique ID for the player you want to associate with your
video.
example: pl4k0jvEUuaTdRAEjQ4Jfrgz
type: string
title:
description: The title you want to use for your video.
type: string
description:
description: A brief description of the video.
example: A film about good books.
type: string
public:
description: Whether the video is publicly available or not. False means
it is set to private.
example: true
type: boolean
panoramic:
description: Whether the video is a 360 degree or immersive video.
example: false
type: boolean
mp4Support:
description: Whether the player supports the mp4 format.
example: true
type: boolean
tags:
description: A list of terms or words you want to tag the video with. Make
sure the list includes all the tags you want as whatever you send in this
list will overwrite the existing list for the video.
example: '["maths", "string theory", "video"]'
items:
type: string
type: array
metadata:
description: A list (array) of dictionaries where each dictionary contains
a key value pair that describes the video. As with tags, you must send
the complete list of metadata you want as whatever you send here will
overwrite the existing metadata for the video.
items:
$ref: '#/components/schemas/metadata'
type: array
title: videoUpdatePayload
type: object
token-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- createdAt: 2019-12-16T08:25:51Z
ttl: 171976544
expiresAt: 2019-12-16T09:25:51Z
token: to1tcmSFHeYY5KzyhOqVKMKb
- createdAt: 2019-12-16T08:25:51Z
ttl: 171976544
expiresAt: 2019-12-16T09:25:51Z
token: to1tcmSFHeYY5KzyhOqVKMKb
properties:
data:
items:
$ref: '#/components/schemas/upload-token'
title: uploadToken
type: array
pagination:
$ref: '#/components/schemas/pagination'
required:
- data
- pagination
title: uploadTokens
type: object
token-create-payload:
example:
ttl: 3600
properties:
ttl:
default: 0
description: Time in seconds that the token will be active. A value of 0
means that the token has no exipration date. The default is to have no
expiration.
maximum: 2147483647
minimum: 0
type: integer
title: tokenCreationPayload
type: object
token-upload-payload:
properties:
file:
description: The path to the video you want to upload.
format: binary
type: string
x-client-chunk-upload: "true"
videoId:
description: The video id returned by the first call to this endpoint in
a large video upload scenario.
type: string
x-client-ignore: true
x-client-copy-from-response: true
required:
- file
type: object
live-stream-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- streamKey: cc1b4df0-d1c5-4064-a8f9-9f0368385135
createdAt: 2020-01-31T10:17:47Z
assets:
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
iframe:
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
public: true
liveStreamId: li400mYKSgQ6xs7taUeSaEKr
record: true
name: My Live Stream
playerId: pl45d5vFFGrfdsdsd156dGhh
broadcasting: true
updatedAt: 2020-01-31T10:18:47Z
- streamKey: cc1b4df0-d1c5-4064-a8f9-9f0368385135
createdAt: 2020-01-31T10:17:47Z
assets:
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
iframe:
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
public: true
liveStreamId: li400mYKSgQ6xs7taUeSaEKr
record: true
name: My Live Stream
playerId: pl45d5vFFGrfdsdsd156dGhh
broadcasting: true
updatedAt: 2020-01-31T10:18:47Z
properties:
data:
items:
$ref: '#/components/schemas/live-stream'
type: array
pagination:
$ref: '#/components/schemas/pagination'
required:
- data
- pagination
title: LiveStreams
type: object
live-stream-create-payload:
example:
name: Test live
record: true
playerId: pl4f4ferf5erfr5zed4fsdd
properties:
name:
description: Add a name for your live stream here.
example: My Live Stream Video
type: string
record:
default: false
description: Whether you are recording or not. True for record, false for
not record.
example: true
type: boolean
public:
description: BETA FEATURE Please limit all public = false ("private") livestreams
to 3,000 users. Whether your video can be viewed by everyone, or requires
authentication to see it. A setting of false will require a unique token
for each view.
type: boolean
playerId:
description: The unique identifier for the player.
example: pl4f4ferf5erfr5zed4fsdd
type: string
required:
- name
title: liveStreamCreationPayload
type: object
live-stream-update-payload:
properties:
name:
description: The name you want to use for your live stream.
example: My Live Stream Video
type: string
public:
description: |-
BETA FEATURE Please limit all public = false ("private") livestreams to 3,000 users.
Whether your video can be viewed by everyone, or requires authentication to see it. A setting of false will require a unique token for each view.
type: boolean
record:
description: Use this to indicate whether you want the recording on or off.
On is true, off is false.
example: true
type: boolean
playerId:
description: The unique ID for the player associated with a live stream
that you want to update.
example: pl45KFKdlddgk654dspkze
type: string
title: LiveStreamUpdatePayload
type: object
captions-upload-payload:
properties:
file:
description: The video text track (VTT) you want to upload.
format: binary
type: string
required:
- file
type: object
live-stream-thumbnail-upload-payload:
properties:
file:
description: The image to be added as a thumbnail.
format: binary
type: string
required:
- file
type: object
captions-update-payload:
properties:
default:
type: boolean
title: UpdateCaptionPayload
type: object
captions-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- default: false
src: src
srclang: srclang
uri: uri
- default: false
src: src
srclang: srclang
uri: uri
properties:
data:
items:
$ref: '#/components/schemas/subtitle'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: VideoCaptions
type: object
chapters-update-payload:
properties:
file:
description: The VTT file describing the chapters you want to upload.
format: binary
type: string
required:
- file
title: UpdateChapterPayload
type: object
chapters-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: language
uri: uri
- src: https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt
language: language
uri: uri
properties:
data:
items:
$ref: '#/components/schemas/chapter'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: VideoChapters
type: object
players-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- trackUnplayed: trackUnplayed
shapeMargin: 0
backgroundTop: backgroundTop
link: link
trackPlayed: trackPlayed
shapeBackgroundTop: shapeBackgroundTop
linkHover: linkHover
backgroundBottom: backgroundBottom
enableControls: true
backgroundText: backgroundText
enableApi: true
forceAutoplay: true
shapeBackgroundBottom: shapeBackgroundBottom
trackBackground: trackBackground
createdAt: 2020-01-31T10:17:47Z
assets:
link: path/to/my/logo/mylogo.jpg
logo: mylogo.jpg
hideTitle: true
shapeAspect: shapeAspect
text: text
linkActive: linkActive
forceLoop: true
playerId: pl45KFKdlddgk654dspkze
updatedAt: 2020-01-31T10:18:47Z
shapeRadius: 6
- trackUnplayed: trackUnplayed
shapeMargin: 0
backgroundTop: backgroundTop
link: link
trackPlayed: trackPlayed
shapeBackgroundTop: shapeBackgroundTop
linkHover: linkHover
backgroundBottom: backgroundBottom
enableControls: true
backgroundText: backgroundText
enableApi: true
forceAutoplay: true
shapeBackgroundBottom: shapeBackgroundBottom
trackBackground: trackBackground
createdAt: 2020-01-31T10:17:47Z
assets:
link: path/to/my/logo/mylogo.jpg
logo: mylogo.jpg
hideTitle: true
shapeAspect: shapeAspect
text: text
linkActive: linkActive
forceLoop: true
playerId: pl45KFKdlddgk654dspkze
updatedAt: 2020-01-31T10:18:47Z
shapeRadius: 6
properties:
data:
items:
$ref: '#/components/schemas/player'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: Players
type: object
players-upload-logo-payload:
properties:
file:
description: The name of the file you want to use for your logo.
format: binary
type: string
link:
description: The path to the file you want to upload and use as a logo.
example: path/to/my/logo/mylogo.jpg
format: string
type: string
required:
- file
- link
type: object
raw-statistics-list-sessions-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- session:
sessionId: psEmFwGQUAXR2lFHj5nDOpy
loadedAt: 2019-06-24T11:45:01.109+00
endedAt: 2019-06-24T11:49:19.243+00
location:
country: France
city: Paris
referrer:
url: https://api.video
medium: organic
source: https://google.com
searchTerm: video encoding hosting and delivery
device:
type: desktop
vendor: Dell
model: unknown
os:
name: Microsoft Windows
shortname: W10
version: Windows10
client:
type: browser
name: Firefox
version: "67.0"
- session:
sessionId: psEmFwGQUAXR2lFHj5nDOpy
loadedAt: 2019-06-24T11:45:01.109+00
endedAt: 2019-06-24T11:49:19.243+00
location:
country: France
city: Paris
referrer:
url: https://api.video
medium: organic
source: https://google.com
searchTerm: video encoding hosting and delivery
device:
type: desktop
vendor: Dell
model: unknown
os:
name: Microsoft Windows
shortname: W10
version: Windows10
client:
type: browser
name: Firefox
version: "67.0"
properties:
data:
items:
$ref: '#/components/schemas/video-session'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: VideoSessions
type: object
raw-statistics-list-live-stream-analytics-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- referrer:
searchTerm: video stream
medium: organic
source: https://google.com
url: https://api.video
os:
name: Microsoft Windows
shortname: W10
version: Windows 10
session:
loadedAt: 2019-06-24T11:45:01.109Z
endedAt: 2019-06-24T12:45:01.109Z
sessionId: sessionId
client:
name: Firefox
type: browser
version: "67.0"
location:
country: France
city: Paris
device:
vendor: Dell
model: unknown
type: desktop
- referrer:
searchTerm: video stream
medium: organic
source: https://google.com
url: https://api.video
os:
name: Microsoft Windows
shortname: W10
version: Windows 10
session:
loadedAt: 2019-06-24T11:45:01.109Z
endedAt: 2019-06-24T12:45:01.109Z
sessionId: sessionId
client:
name: Firefox
type: browser
version: "67.0"
location:
country: France
city: Paris
device:
vendor: Dell
model: unknown
type: desktop
properties:
data:
items:
$ref: '#/components/schemas/live-stream-session'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: LiveStreamSessions
type: object
raw-statistics-list-player-session-events-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- emittedAt: 2019-06-24T11:45:01.109Z
at: 0
from: 6
to: 1
type: play
- emittedAt: 2019-06-24T11:45:01.109Z
at: 0
from: 6
to: 1
type: play
properties:
data:
items:
$ref: '#/components/schemas/player-session-event'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: PlayerSessionEvents
type: object
webhooks-list-response:
example:
pagination:
itemsTotal: 123
pagesTotal: 7
pageSize: 20
currentPage: 3
currentPageItems: 20
links:
first:
rel: first
uri: /videos/search?currentPage=1&pageSize=20
previous:
rel: previous
uri: /videos/search?currentPage=2&pageSize=20
next:
rel: next
uri: /videos/search?currentPage=4&pageSize=20
last:
rel: last
uri: /videos/search?currentPage=6&pageSize=20
data:
- createdAt: 2019-06-24T11:45:01.109Z
webhookId: webhook_XXXXXXXXXXXXXXX
events: '["video.encoding.quality.completed"]'
url: http://clientnotificationserver.com/notif?myquery=query
- createdAt: 2019-06-24T11:45:01.109Z
webhookId: webhook_XXXXXXXXXXXXXXX
events: '["video.encoding.quality.completed"]'
url: http://clientnotificationserver.com/notif?myquery=query
properties:
data:
items:
$ref: '#/components/schemas/webhook'
type: array
pagination:
$ref: '#/components/schemas/pagination'
title: Webhooks
type: object
webhooks-create-payload:
example:
events:
- video.encoding.quality.completed
url: http://clientnotificationserver.com/notif?myquery=query
properties:
events:
description: A list of the webhooks that you are subscribing to. Currently
"video.encoding.quality.completed" is the only option. video.encoding.quality.completed
- a video encoding quality is ready for the video (for example the 720p
quality hls encoding video is ready.)
example: video.encoding.quality.completed
items:
type: string
type: array
url:
description: The the url to which HTTP notifications are sent. It could
be any http or https URL.
example: https://example.com/webhooks
type: string
required:
- events
- url
type: object
pagination_link:
properties:
rel:
type: string
uri:
format: uri
type: string
title: PaginationLink
type: object
video_source_live_stream_link:
properties:
rel:
type: string
uri:
type: string
type: object
video_source_live_stream:
description: This appears if the video is from a Live Record.
properties:
liveStreamId:
description: The unique identifier for the live stream.
example: li400mYKSgQ6xs7taUeSaEKr
type: string
links:
items:
$ref: '#/components/schemas/video_source_live_stream_link'
type: array
type: object
videoSource:
description: Source information about the video.
properties:
uri:
description: The URL where the video is stored.
example: /videos/vi4k0jvEUuaTdRAEjQ4Prklg/source
type: string
type:
type: string
liveStream:
$ref: '#/components/schemas/video_source_live_stream'
type: object
videoAssets:
description: Collection of details about the video object that you can use to
work with the video object.
properties:
hls:
description: This is the manifest URL. For HTTP Live Streaming (HLS), when
a HLS video stream is initiated, the first file to download is the manifest.
This file has the extension M3U8, and provides the video player with information
about the various bitrates available for streaming.
format: uri
type: string
iframe:
description: Code to use video from a third party website
example:
type: string
player:
description: Raw url of the player.
example: https://embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae
format: uri
type: string
thumbnail:
description: Poster of the video.
example: https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
format: uri
type: string
mp4:
description: Available only if mp4Support is enabled. Raw mp4 url.
example: https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4
format: uri
type: string
type: object
video_session_session:
properties:
sessionId:
description: The unique identifier for the session that you can use to track
what happens during it.
example: psEmFwGQUAXR2lFHj5nDOpy
type: string
loadedAt:
description: When the video session started, presented in ISO-8601 format.
example: 2019-06-24T11:45:01.109Z
format: date-time
type: string
endedAt:
description: When the video session ended, presented in ISO-8601 format.
example: 2019-06-24T12:45:01.109Z
format: date-time
type: string
type: object
video_session_location:
description: The location of the viewer.
properties:
country:
description: The country of the viewer.
example: France
type: string
city:
description: The city of the viewer.
example: Paris
type: string
type: object
video_session_referrer:
properties:
url:
description: The link the viewer used to reach the video session.
example: https://api.video
type: string
medium:
description: How they arrived at the site, for example organic or paid.
Organic meaning they found it themselves and paid meaning they followed
a link from an advertisement.
example: organic
type: string
source:
description: The source the referrer came from to the video session. For
example if they searched through google to find the stream.
example: https://google.com
type: string
searchTerm:
description: The search term they typed to arrive at the video session.
type: string
type: object
video_session_device:
description: What type of device the user is on when in the video session.
properties:
type:
description: What the type is like desktop, laptop, mobile.
example: desktop
type: string
vendor:
description: If known, what the brand of the device is, like Apple, Dell,
etc.
example: Dell
type: string
model:
description: The specific model of the device, if known.
example: unknown
type: string
type: object
video_session_os:
description: The operating system the viewer is on.
example:
name: Microsoft Windows
shortname: W10
version: Windows 10
properties:
name:
description: The name of the operating system.
example: Microsoft Windows
type: string
shortname:
description: The nickname for the operating system, often representing the
version.
example: W10
type: string
version:
description: The version of the operating system.
example: Windows 10
type: string
type: object
video_session_client:
description: What kind of browser the viewer is using for the video session.
properties:
name:
description: The name of the browser used to view the video session.
example: Firefox
type: string
version:
description: The version of the browser used to view the video session.
example: "67.0"
type: string
type:
description: The type of client used to view the video session.
example: browser
type: string
type: object
live_stream_assets:
example:
thumbnail: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
iframe:
hls: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
player: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
properties:
hls:
description: The http live streaming (HLS) link for your live video stream.
example: https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8
format: uri
type: string
iframe:
description: The embed code for the iframe containing your live video stream.
example:
type: string
player:
description: A link to the video player that is playing your live stream.
example: https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr
format: uri
type: string
thumbnail:
description: A link to the thumbnail for your video.
example: https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg
format: uri
type: string
type: object
live_stream_session_session:
example:
loadedAt: 2019-06-24T11:45:01.109Z
endedAt: 2019-06-24T12:45:01.109Z
sessionId: sessionId
properties:
sessionId:
description: A unique identifier for your session. You can use this to track
what happens during a specific session.
type: string
loadedAt:
description: When the session started, with the date and time presented
in ISO-8601 format.
example: 2019-06-24T11:45:01.109Z
format: date-time
type: string
endedAt:
description: When the session ended, with the date and time presented in
ISO-8601 format.
example: 2019-06-24T12:45:01.109Z
format: date-time
type: string
type: object
live_stream_session_location:
description: The location of the viewer of the live stream.
example:
country: France
city: Paris
properties:
country:
description: The country of the viewer of the live stream.
example: France
type: string
city:
description: The city of the viewer of the live stream.
example: Paris
type: string
type: object
live_stream_session_referrer:
example:
searchTerm: video stream
medium: organic
source: https://google.com
url: https://api.video
properties:
url:
description: The website the viewer of the live stream was referred to in
order to view the live stream.
example: https://api.video
type: string
medium:
description: The type of search that brought the viewer to the live stream.
Organic would be they found it on their own, paid would be they found
it via an advertisement.
example: organic
type: string
source:
description: Where the viewer came from to see the live stream (usually
where they searched from).
example: https://google.com
type: string
searchTerm:
description: What term they searched for that led them to the live stream.
example: video stream
type: string
type: object
live_stream_session_device:
description: What type of device the user is on when in the live stream session.
example:
vendor: Dell
model: unknown
type: desktop
properties:
type:
description: What the type is like desktop, laptop, mobile.
example: desktop
type: string
vendor:
description: If known, what the brand of the device is, like Apple, Dell,
etc.
example: Dell
type: string
model:
description: The specific model of the device, if known.
example: unknown
type: string
type: object
live_stream_session_client:
description: What kind of browser the viewer is using for the live stream session.
example:
name: Firefox
type: browser
version: "67.0"
properties:
name:
description: The name of the browser used to view the live stream session.
example: Firefox
type: string
version:
description: The version of the browser used to view the live stream session.
example: "67.0"
type: string
type:
description: The type of client used to view the live stream session.
example: browser
type: string
type: object
videostatus_ingest:
description: Details about the capturing, transferring, and storing of your
video for use immediately or in the future.
properties:
status:
description: There are three possible ingest statuses. missing - you are
missing information required to ingest the video. uploading - the video
is in the process of being uploaded. uploaded - the video is ready for
use.
enum:
- missing
- uploading
- uploaded
example: uploaded
type: string
filesize:
description: The size of your file in bytes.
example: 200000
type: integer
receivedBytes:
description: The total number of bytes received, listed for each chunk of
the upload.
items:
$ref: '#/components/schemas/bytes_range'
type: array
type: object
videostatus_encoding_metadata:
properties:
width:
description: The width of the video in pixels.
type: integer
height:
description: The height of the video in pixels.
type: integer
bitrate:
description: The number of bits processed per second.
type: number
duration:
description: The length of the video.
type: integer
framerate:
description: The frequency with which consecutive images or frames appear
on a display. Shown in this API as frames per second (fps).
example: 60
type: integer
samplerate:
description: How many samples per second a digital audio system uses to
record an audio signal. The higher the rate, the higher the frequencies
that can be recorded. They are presented in this API using hertz.
example: 48000
type: integer
videoCodec:
description: 'The method used to compress and decompress digital video.
API Video supports all codecs in the libavcodec library. '
type: string
audioCodec:
description: The method used to compress and decompress digital audio for
your video.
type: string
aspectRatio:
type: string
type: object
videostatus_encoding:
properties:
playable:
description: Whether the video is playable or not.
example: true
type: boolean
qualities:
description: Available qualities the video can be viewed in.
items:
$ref: '#/components/schemas/quality'
type: array
metadata:
$ref: '#/components/schemas/videostatus_encoding_metadata'
type: object
account:
deprecated: true
properties:
quota:
$ref: '#/components/schemas/account_quota'
features:
description: 'Deprecated. What features are enabled for your account. Choices
include: app.dynamic_metadata - the ability to dynamically tag videos
to better segment and understand your audiences, app.event_log - the ability
to create and retrieve a log detailing how your videos were interacted
with, player.white_label - the ability to customise your player, stats.player_events
- the ability to see statistics about how your player is being used, transcode.mp4_support
- the ability to reformat content into mp4 using the H264 codec.'
example: '["app.dynamic_metadata, app.event_log"]'
items:
type: string
type: array
environment:
description: Deprecated. Whether you are using your production or sandbox
API key will impact what environment is displayed here, as well as stats
and features information. If you use your sandbox key, the environment
is "sandbox." If you use your production key, the environment is "production."
type: string
title: Account
type: object
player_assets:
example:
link: path/to/my/logo/mylogo.jpg
logo: mylogo.jpg
properties:
logo:
description: The name of the file containing the logo you want to use.
example: mylogo.jpg
type: string
link:
description: The path to the file containing your logo.
example: path/to/my/logo/mylogo.jpg
type: string
type: object
account_quota:
description: Deprecated
properties:
quotaUsed:
description: Deprecated
type: number
quotaRemaining:
description: Deprecated
type: number
quotaTotal:
description: Deprecated
type: number
type: object
securitySchemes:
bearerAuth:
scheme: bearer
type: http
x-client-base-paths:
production: https://ws.api.video
sandbox: https://sandbox.api.video
x-explorer-enabled: true
x-proxy-enabled: true
x-samples-enabled: true
x-samples-languages:
- curl
- node
- ruby
- javascript
- python