Set this tenant's recording retention
curl --request PUT \
--url https://apiv2.vodex.ai/v1/tenants/{id}/retention \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"days": 1825
}'import requests
url = "https://apiv2.vodex.ai/v1/tenants/{id}/retention"
payload = { "days": 1825 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({days: 1825})
};
fetch('https://apiv2.vodex.ai/v1/tenants/{id}/retention', 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://apiv2.vodex.ai/v1/tenants/{id}/retention",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'days' => 1825
]),
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://apiv2.vodex.ai/v1/tenants/{id}/retention"
payload := strings.NewReader("{\n \"days\": 1825\n}")
req, _ := http.NewRequest("PUT", 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.put("https://apiv2.vodex.ai/v1/tenants/{id}/retention")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"days\": 1825\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiv2.vodex.ai/v1/tenants/{id}/retention")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"days\": 1825\n}"
response = http.request(request)
puts response.read_body{
"tenant": "<string>",
"retentionDays": 123,
"prefix": "recordings/<tenant>/"
}{
"error": "not found"
}{
"error": "not found"
}{
"error": "not found"
}Tenants
Set this tenant's recording retention
The tenant in the URL must be the caller’s own — anything else is 404
(not 403: “not yours” should look like “no such tenant”).
Prefer PUT /v1/retention, which is the same operation without the
redundant id. This route now delegates to it, so the period it sets
governs the transcript and the call record as well as the audio — it
no longer writes a bucket lifecycle rule on its own.
PUT
/
tenants
/
{id}
/
retention
Set this tenant's recording retention
curl --request PUT \
--url https://apiv2.vodex.ai/v1/tenants/{id}/retention \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"days": 1825
}'import requests
url = "https://apiv2.vodex.ai/v1/tenants/{id}/retention"
payload = { "days": 1825 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({days: 1825})
};
fetch('https://apiv2.vodex.ai/v1/tenants/{id}/retention', 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://apiv2.vodex.ai/v1/tenants/{id}/retention",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'days' => 1825
]),
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://apiv2.vodex.ai/v1/tenants/{id}/retention"
payload := strings.NewReader("{\n \"days\": 1825\n}")
req, _ := http.NewRequest("PUT", 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.put("https://apiv2.vodex.ai/v1/tenants/{id}/retention")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"days\": 1825\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiv2.vodex.ai/v1/tenants/{id}/retention")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"days\": 1825\n}"
response = http.request(request)
puts response.read_body{
"tenant": "<string>",
"retentionDays": 123,
"prefix": "recordings/<tenant>/"
}{
"error": "not found"
}{
"error": "not found"
}{
"error": "not found"
}Authorizations
Tenant API key (vdx_live_…) as Authorization: Bearer.
Path Parameters
Body
application/json
Required range:
1 <= x <= 3650