Skip to main content
POST
/
video
/
v1
/
videos
/
upload
Create a direct upload
curl --request POST \
  --url https://api.voyant.travel/video/v1/videos/upload \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "fileSize": 16106127360,
  "maxDurationSeconds": 10800,
  "name": "<string>",
  "requireSignedUrls": true,
  "allowedOrigins": [
    "<string>"
  ],
  "tags": [
    "<string>"
  ],
  "watermarkProfileId": "<string>",
  "thumbnailTimestampPct": 0.5,
  "meta": {}
}
'
{
  "data": {
    "video": {
      "id": "<string>",
      "organizationId": "<string>",
      "readyToStream": true,
      "thumbnailTimestampPct": 123,
      "requireSignedUrls": true,
      "allowedOrigins": [
        "<string>"
      ],
      "tags": [
        "<string>"
      ],
      "meta": {},
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z",
      "providerVideoUid": "<string>",
      "name": "<string>",
      "durationSeconds": 123,
      "sizeBytes": 123,
      "inputWidth": 123,
      "inputHeight": 123,
      "thumbnailUrl": "<string>",
      "playbackHlsUrl": "<string>",
      "playbackDashUrl": "<string>",
      "maxDurationSeconds": 123,
      "maxSizeBytes": 123,
      "watermarkProfileId": "<string>",
      "downloadReadyAt": "2023-11-07T05:31:56Z",
      "errorCode": "<string>",
      "errorMessage": "<string>",
      "uploadedAt": "2023-11-07T05:31:56Z",
      "readyAt": "2023-11-07T05:31:56Z",
      "lastEventAt": "2023-11-07T05:31:56Z"
    },
    "uploadUrl": "<string>",
    "uploadExpiresAt": "2023-11-07T05:31:56Z"
  }
}

Authorizations

Authorization
string
header
required

Voyant Cloud API token, passed as Authorization: Bearer <token>. Each token carries a fixed set of scopes; an operation rejects tokens missing its required scope.

Body

application/json
fileSize
integer
required

Total file size in bytes. Used as the TUS Upload-Length. Max 30 GB.

Required range: 1 <= x <= 32212254720
maxDurationSeconds
integer
required

Cloudflare Stream caps total length at 21,600 seconds (6 hours).

Required range: 1 <= x <= 21600
name
string | null
Maximum string length: 200
requireSignedUrls
boolean
allowedOrigins
string[]
Maximum array length: 20
Maximum string length: 253
tags
string[]
Maximum array length: 50
Maximum string length: 64
watermarkProfileId
string | null
Maximum string length: 120
thumbnailTimestampPct
number | null
Required range: 0 <= x <= 1
meta
object

Response

Upload ticket

data
object
required