curl --request POST \
--url https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"wait_seconds": 180,
"upload_id": "<string>"
}
'import requests
url = "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get"
payload = {
"account_id": "<string>",
"wait_seconds": 180,
"upload_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({account_id: '<string>', wait_seconds: 180, upload_id: '<string>'})
};
fetch('https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get', 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.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'wait_seconds' => 180,
'upload_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyVideo-upload get
Status of a video upload started with upload_video: PENDING → PREPARING → UPLOADING → PROCESSING → AVAILABLE (or FAILED). This call WAITS (up to wait_seconds, default 3 minutes) for the upload to finish before answering, so call it once rather than polling; if it still says still_running, call it again. Once AVAILABLE, the video_urn is what create_creative’s SINGLE_VIDEO branch takes as video_id.
CLI: adside linkedin video-upload get
curl --request POST \
--url https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"wait_seconds": 180,
"upload_id": "<string>"
}
'import requests
url = "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get"
payload = {
"account_id": "<string>",
"wait_seconds": 180,
"upload_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({account_id: '<string>', wait_seconds: 180, upload_id: '<string>'})
};
fetch('https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get', 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.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'wait_seconds' => 180,
'upload_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/video-upload/get")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"wait_seconds\": 180,\n \"upload_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
A personal API key (adside_pat_…) or a token from adside login. Either carries the permissions of the person it belongs to.
Path Parameters
1Body
LinkedIn Ad Account ID. Omit it: it defaults to the account this workspace is connected to, and any other account is refused.
Seconds to wait for the upload to reach AVAILABLE (or FAILED) before answering. Default 180, max 240. Leave the default: one call then usually returns the video_urn. 0 returns the current state at once.
0 <= x <= 240The upload_id returned by upload_video. Omit it to get the most recent upload for this workspace.
1Response
Success