Register an uploaded video
POST
https://octopus.livepush.io/streams/{stream_id}/videos
Base URL https://octopus.livepush.io — Core Streams & Media APIs
Registers an object already written to storage as a video in the library. This is the final step of an upload: request a URL, PUT the bytes, then call this.
Requires a token with the streams.videos.write scope.
Authorization
Send a valid access token in the Authorization header.
bearerAuth— Bearer token (JWT)
Authorization: Bearer YOUR_API_TOKEN
Try it
Loading the request builder…
POST
https://octopus.livepush.io/streams/{stream_id}/videos
— This call changes live data on your account.
Parameters
Path parameters
-
stream_idstring requiredUnique identifier of the stream.example: st_xxxxxxxxxxxxx
Request body
-
idstring requiredVideo identifier allocated when the upload URL was created. -
Keystring requiredObject key in the storage bucket. -
labelstring required -
uploadNamestring requiredOriginal filename. -
uploadUrlstring required -
zonestring requiredStorage zone the object was written to. -
sizeinteger requiredSize in bytes. -
mediaInfoVideoItemMediaInfo-
hasAudioTrackboolean -
durationnumber -
widthinteger -
heightinteger -
fpsnumber -
codecsVideoItemMediaInfoCodec[]2 nested fields
-
typeVideoCodecTypevideoaudio -
codecstring
-
-
tracksobject[]
-
-
encoding_presetstringEncoding preset to transcode with.
{
"id": "vd_xxxxxxxxxxxx",
"Key": "string",
"label": "Sunday service — 12 Jan",
"uploadName": "service-12-jan.mp4",
"uploadUrl": "string",
"zone": "eu-central",
"size": 734003200,
"mediaInfo": {
"hasAudioTrack": false,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
},
"encoding_preset": "string"
}
Code samples
curl -X POST 'https://octopus.livepush.io/streams/st_xxxxxxxxxxxxx/videos' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"id": "vd_xxxxxxxxxxxx",
"Key": "string",
"label": "Sunday service — 12 Jan",
"uploadName": "service-12-jan.mp4",
"uploadUrl": "string",
"zone": "eu-central",
"size": 734003200,
"mediaInfo": {
"hasAudioTrack": false,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
},
"encoding_preset": "string"
}'
const response = await fetch('https://octopus.livepush.io/streams/st_xxxxxxxxxxxxx/videos', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": "vd_xxxxxxxxxxxx",
"Key": "string",
"label": "Sunday service — 12 Jan",
"uploadName": "service-12-jan.mp4",
"uploadUrl": "string",
"zone": "eu-central",
"size": 734003200,
"mediaInfo": {
"hasAudioTrack": false,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
},
"encoding_preset": "string"
}),
});
if (!response.ok) {
throw new Error(`Livepush API error ${response.status}`);
}
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
}
payload = {
"id": "vd_xxxxxxxxxxxx",
"Key": "string",
"label": "Sunday service — 12 Jan",
"uploadName": "service-12-jan.mp4",
"uploadUrl": "string",
"zone": "eu-central",
"size": 734003200,
"mediaInfo": {
"hasAudioTrack": False,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
},
"encoding_preset": "string"
}
response = requests.post('https://octopus.livepush.io/streams/st_xxxxxxxxxxxxx/videos', headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()
Responses
Register an uploaded video.
-
idstring -
labelstring -
uploadNamestring -
sizenumber -
mediaInfoVideoItemMediaInfo-
hasAudioTrackboolean -
durationnumber -
widthinteger -
heightinteger -
fpsnumber -
codecsVideoItemMediaInfoCodec[]2 nested fields
-
typeVideoCodecTypevideoaudio -
codecstring
-
-
tracksobject[]
-
-
resourceGroupstringID of the video folder this video sits in, or absent when it is at the top level of the library. NamedresourceGroupfor compatibility — seeVideoFolder. -
zonestring -
descriptionstring -
createdAtstring<date-time> -
isDisabledboolean -
tagsstring[] -
mediaInfoEncodedVideoItemMediaInfo-
hasAudioTrackboolean -
durationnumber -
widthinteger -
heightinteger -
fpsnumber -
codecsVideoItemMediaInfoCodec[]2 nested fields
-
typeVideoCodecTypevideoaudio -
codecstring
-
-
tracksobject[]
-
{
"id": "vd_xxxxxxxxx",
"label": "string",
"uploadName": "string",
"size": 0,
"mediaInfo": {
"hasAudioTrack": false,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
},
"resourceGroup": "grp_xxxxxxxxxxxx",
"zone": "string",
"description": "string",
"createdAt": "2026-01-31T09:00:00.000Z",
"isDisabled": false,
"tags": [
"string"
],
"mediaInfoEncoded": {
"hasAudioTrack": false,
"duration": 0,
"width": 0,
"height": 0,
"fps": 0,
"codecs": [
{
"type": "video",
"codec": "string"
}
],
"tracks": [
{}
]
}
}
No response body.
Not found for this account.