api.video
  1. Videos - Delegated upload
api.video
  • Account
    • Show account
      GET
  • Analytics
    • List live stream player sessions
      GET
    • List player session events
      GET
    • List video player sessions
      GET
  • Authentication
    • Authenticate
      POST
    • Refresh token
      POST
  • Live
    • List all live streams
      GET
    • Create live stream
      POST
    • Delete a live stream
      DELETE
    • Show live stream
      GET
    • Update a live stream
      PATCH
    • Delete a thumbnail
      DELETE
    • Upload a thumbnail
      POST
  • Players
    • List all players
      GET
    • Create a player
      POST
    • Delete a player
      DELETE
    • Show a player
      GET
    • Update a player
      PATCH
    • Delete logo
      DELETE
    • Upload a logo
      POST
  • Videos - Delegated upload
    • Upload with an upload token
      POST
    • List all active upload tokens.
      GET
    • Generate an upload token
      POST
    • Delete an upload token
      DELETE
    • Show upload token
      GET
  • Videos
    • List all videos
    • Create a video
    • Delete a video
    • Show a video
    • Update a video
    • Upload a video
    • Show video status
    • Pick a thumbnail
    • Upload a thumbnail
  • Captions
    • List video captions
    • Delete a caption
    • Show a caption
    • Update caption
    • Upload a caption
  • Chapters
    • List video chapters
    • Delete a chapter
    • Show a chapter
    • Upload a chapter
  • Webhooks
    • List all webhooks
    • Create Webhook
    • Delete a Webhook
    • Show Webhook details
  1. Videos - Delegated upload

Upload with an upload token

POST
/upload
Videos - Delegated upload
When given a token, anyone can upload a file to the URI https://ws.api.video/upload?token=<tokenId>.
Example with cURL:
$ curl  --request POST --url 'https://ws.api.video/upload?token=toXXX'
 --header 'content-type: multipart/form-data'
 -F file=@video.mp4
Or in an HTML form, with a little JavaScript to convert the form into JSON:

Dealing with large files#

We have created a tutorial to walk through the steps required.
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://ws.api.video/upload?token=to1tcmSFHeYY5KzyhOqVKMKb' \
--form 'file=@"path/to/video/video.mp4"'
Response Response Example
201 - response
{
  "assets": {
    "hls": "https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8",
    "iframe": "<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>",
    "player": "https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae",
    "thumbnail": "https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"
  },
  "description": "An amazing video explaining the string theory",
  "metadata": [
    {
      "key": "Author",
      "value": "John Doe"
    },
    {
      "key": "Format",
      "value": "Tutorial"
    }
  ],
  "panoramic": false,
  "playerId": "pl45KFKdlddgk654dspkze",
  "public": false,
  "publishedAt": "4665-07-14T23:36:18.598Z",
  "source": {
    "uri": "/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"
  },
  "tags": [
    "maths",
    "string theory",
    "video"
  ],
  "title": "Maths video",
  "videoId": "vi4k0jvEUuaTdRAEjQ4Jfrgz"
}

Request

Query Params
token
string 
required
The unique identifier for the token you want to use to upload a video.
Example:
to1tcmSFHeYY5KzyhOqVKMKb
Header Params
Content-Range
string 
optional
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
Body Params multipart/form-data
file
file 
required
The path to the video you want to upload.
Example:
path/to/video/video.mp4
videoId
string 
optional
The video id returned by the first call to this endpoint in a large video upload scenario.

Responses

🟢201Created
application/json
Body
assets
object (videoAssets) 
optional
Collection of details about the video object that you can use to work with the video object.
hls
string <uri>
optional
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.
iframe
string 
optional
Code to use video from a third party website
Example:
<iframe src="//embed.api.video/c188ed58-3403-46a2-b91b-44603d10b2c9?token=831a9bd9-9f50-464c-a369-8e9d914371ae" width="100%" height="100%" frameborder="0" scrolling="no" allowfullscreen=""></iframe>
mp4
string <uri>
optional
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
player
string <uri>
optional
Raw url of the player.
Example:
https://embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae
thumbnail
string <uri>
optional
Poster of the video.
Example:
https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg
description
string 
optional
A description for the video content.
Example:
An amazing video explaining string theory.
metadata
array[object (metadata) {2}] 
optional
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. Dynamic Metadata allows you to define a key that allows any value pair.
Example:
[{"key":"Author", "value":"John Doe"}, {"key":"Format", "value":"Tutorial"}]
key
string 
optional
The constant that defines the data set.
Example:
Color
value
string 
optional
A variable which belongs to the data set.
Example:
Green
mp4Support
boolean 
optional
This lets you know whether mp4 is supported. If enabled, an mp4 URL will be provided in the response for the video.
Example:
true
panoramic
boolean 
optional
Defines if video is panoramic.
Example:
false
playerId
string 
optional
The id of the player that will be applied on the video.
Example:
pl45KFKdlddgk654dspkze
public
boolean 
optional
Defines if the content is publicly reachable or if a unique token is needed for each play session. Default is true. Tutorials on private videos.
Example:
false
publishedAt
string 
optional
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.000Z
source
object (videoSource) 
optional
Source information about the video.
liveStream
object (video_source_live_stream) 
optional
This appears if the video is from a Live Record.
type
string 
optional
uri
string 
optional
The URL where the video is stored.
Example:
/videos/vi4k0jvEUuaTdRAEjQ4Prklg/source
tags
array
optional
One array of tags (each tag is a string) in order to categorize a video. Tags may include spaces.
Example:
"tags": ["maths", "string theory", "video"]
title
string 
optional
The title of the video content.
Example:
Maths video
updatedAt
string <date-time>
optional
The date and time the video was updated. Date and time are provided using ISO-8601 UTC format.
Example:
2019-12-16T08:15:51.000Z
videoId
string 
optional
The unique identifier of the video object.
Example:
vi4k0jvEUuaTdRAEjQ4Prklg
🟠400Bad Request
Modified at 2023-08-15 05:52:15
Previous
Upload a logo
Next
List all active upload tokens.
Built with