curl --request GET \
--url https://tavusapi.com/v2/deployments/{deployment_id}/initimport requests
url = "https://tavusapi.com/v2/deployments/{deployment_id}/init"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://tavusapi.com/v2/deployments/{deployment_id}/init', 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://tavusapi.com/v2/deployments/{deployment_id}/init",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://tavusapi.com/v2/deployments/{deployment_id}/init"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tavusapi.com/v2/deployments/{deployment_id}/init")
.asString();require 'uri'
require 'net/http'
url = URI("https://tavusapi.com/v2/deployments/{deployment_id}/init")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"deployment_id": "<string>",
"channel": "widget",
"customization": {},
"has_password": true,
"replica_thumbnail_video_url": "<string>",
"thumbnail_video_url": "<string>",
"thumbnail_image_url": "<string>",
"show_tavus_branding": true,
"limits": {
"max_call_duration": 123,
"daily_call_limit_per_user": 123
},
"captcha": {
"provider": "<string>",
"site_key": "<string>",
"challenge_path": "<string>",
"action": "<string>"
},
"is_available": true,
"unavailable_reason": "<string>"
}{
"error": "<string>"
}Get Deployment Init Config
Public endpoint called when a widget or embed mounts. Returns customization, limits, captcha settings, and availability.
Does not return a PAL identifier - the widget/embed runtime never reads it from /init.
No API key required. Origin and browser-context checks apply for non-preview callers.
curl --request GET \
--url https://tavusapi.com/v2/deployments/{deployment_id}/initimport requests
url = "https://tavusapi.com/v2/deployments/{deployment_id}/init"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://tavusapi.com/v2/deployments/{deployment_id}/init', 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://tavusapi.com/v2/deployments/{deployment_id}/init",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://tavusapi.com/v2/deployments/{deployment_id}/init"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tavusapi.com/v2/deployments/{deployment_id}/init")
.asString();require 'uri'
require 'net/http'
url = URI("https://tavusapi.com/v2/deployments/{deployment_id}/init")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"deployment_id": "<string>",
"channel": "widget",
"customization": {},
"has_password": true,
"replica_thumbnail_video_url": "<string>",
"thumbnail_video_url": "<string>",
"thumbnail_image_url": "<string>",
"show_tavus_branding": true,
"limits": {
"max_call_duration": 123,
"daily_call_limit_per_user": 123
},
"captcha": {
"provider": "<string>",
"site_key": "<string>",
"challenge_path": "<string>",
"action": "<string>"
},
"is_available": true,
"unavailable_reason": "<string>"
}{
"error": "<string>"
}https://docs.tavus.io/openapi.yaml for the full HTTP API contract.Path Parameters
Response
Init configuration
Configuration returned to widget, embed, and landing-page clients on init.
widget, embed, landing-page Full customization tree including channel-specific blocks (widget, landing_page) and shared screens (preview, haircheck, after_call).
Removed. Use thumbnail_video_url and thumbnail_image_url instead.
URL for the face preview video thumbnail.
URL for the face preview image thumbnail.
Show child attributes
Show child attributes
Present when Turnstile is enabled.
Show child attributes
Show child attributes
Set when is_available is false, e.g. daily_limit or total_limit.

