curl --request POST \
--url https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore', 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://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"video": {
"id": 123,
"code": "<string>",
"title": "<string>",
"workspace_id": 123,
"folder_id": 123,
"tags": [
"<string>"
],
"player_version": "v2",
"landscape_hls": "<string>",
"portrait_hls": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"restored_version_id": 123
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"message": "No query results for model [App\\\\Models\\\\WorkspaceVideo] 481"
}Restore a past deploy
Re-applies a past version’s settings snapshot as the video’s live settings, recompiles the player, and snapshots the restore itself as a new version. Restoring is not destructive to history: the version you restored from, and every version before it, are still there afterward.
Like deploy, the player is compiled and pushed to both CDNs before anything is marked live.
Requires a token with the videos:write scope.
curl --request POST \
--url https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore', 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://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trackplay.io/api/v1/videos/{video}/deploys/{version}/restore")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"video": {
"id": 123,
"code": "<string>",
"title": "<string>",
"workspace_id": 123,
"folder_id": 123,
"tags": [
"<string>"
],
"player_version": "v2",
"landscape_hls": "<string>",
"portrait_hls": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"restored_version_id": 123
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"message": "No query results for model [App\\\\Models\\\\WorkspaceVideo] 481"
}Authorizations
A scoped token minted in Settings → API tokens. Send it as Authorization: Bearer tplt_… or X-API-Key: tplt_….
Headers
Retry-safe key. The first response for a given key is cached for 24 hours and replayed on a repeat, with Idempotency-Replayed: true set.
Path Parameters
The video's numeric ID.
The version ID to restore, from GET /videos/{video}/deploys.
Response
Restored.
A video and its settings. A video carries around thirty option-group columns (style, playback, autoplay, captions, chapters, CTA cards, playlist, and more) that are not itemized here. Read GET /videos/{video}/settings for the full set, or the dedicated endpoint for the group you care about (captions, chapters, AI segments, CTA cards).
Show child attributes
Show child attributes