Upload a video or audio file for the canvas timeline. Videos are processed in the background.
curl --request POST \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"kind": "<string>",
"id": "<string>",
"url": "<string>",
"name": "<string>",
"duration": 123,
"status": "<string>",
"public": true,
"fileSize": 123,
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Content
Upload a video or audio file for the canvas timeline. Videos are processed in the background.
POST
/
api
/
v0
/
content
/
canvases
/
{canvasId}
/
media
Upload a video or audio file for the canvas timeline. Videos are processed in the background.
curl --request POST \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/media")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"kind": "<string>",
"id": "<string>",
"url": "<string>",
"name": "<string>",
"duration": 123,
"status": "<string>",
"public": true,
"fileSize": 123,
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
CompanyApiKeyBearerAuth & CompanyId
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Path Parameters
Response
Audio: the stored clip (200). Video: a processing item (202) to poll
An uploaded video or audio clip
video or audio
Video or audio id
Permanent public URL to use as the clip src
File name
Length in seconds
processing, ready or failed
False for a private video; placing it makes a public copy
Size in bytes, when known
Why processing failed

