curl --request GET \
--url https://tavusapi.com/v2/pals/{pal_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://tavusapi.com/v2/pals/{pal_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://tavusapi.com/v2/pals/{pal_id}', 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/pals/{pal_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://tavusapi.com/v2/pals/{pal_id}"
req, _ := http.NewRequest("GET", 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.get("https://tavusapi.com/v2/pals/{pal_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tavusapi.com/v2/pals/{pal_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pal_id": "pcb7a34da5fe",
"pal_name": "Life Coach",
"system_prompt": "As a Life Coach, you are a dedicated professional who specializes in...",
"default_face_id": "rc9cff32ceba",
"conferencing_email": "acme-anna@tavusinvite.com",
"disclosure_type": "auto",
"verbal_disclosure": "Just so you know, you're speaking with an AI agent from Acme.",
"visual_disclosure": "You are speaking with an AI agent.",
"document_ids": [
"d1234567890",
"d2468101214"
],
"document_tags": [
"product_info",
"company_policies"
],
"layers": {
"llm": {
"model": "<string>",
"base_url": "your-base-url",
"api_key": "your-api-key",
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location"
]
}
}
}
],
"headers": {
"Authorization": "Bearer your-api-key"
},
"extra_body": {
"temperature": 0.7,
"top_p": 0.9
}
},
"tts": {
"api_key": "your-api-key",
"tts_engine": "tavus-auto",
"voice_id": "v0a1b2c3d4e5f",
"external_voice_id": "external-voice-id",
"voice_settings": {
"speed": 0.5,
"emotion": [
"positivity:high",
"curiosity"
]
},
"tts_model_name": "sonic-3",
"pronunciation_dictionary_id": "pd_abc123def456"
},
"perception": {
"perception_model": "raven-1",
"emotion_recognition": "auto",
"visual_awareness_queries": [
"Is the user showing an ID card?",
"Does the user appear distressed or uncomfortable?"
],
"visual_tool_prompt": "You have a tool to notify the system when an ID card is detected, named `notify_if_id_shown`. You MUST use this tool when a form of ID is detected.",
"visual_tools": [
{
"type": "function",
"function": {
"name": "notify_if_id_shown",
"description": "Use this function when a drivers license or passport is detected in the image with high confidence. After collecting the ID, internally use final_ask()",
"parameters": {
"type": "object",
"properties": {
"id_type": {
"type": "string",
"description": "best guess on what type of ID it is"
}
},
"required": [
"id_type"
]
}
}
}
],
"audio_awareness_queries": [
"Does the user sound frustrated or confused?",
"Is the user speaking quickly as if in a hurry?"
],
"audio_tool_prompt": "You have a tool to escalate to a human agent when the user sounds very frustrated, named `escalate_to_human`. Use this tool when detecting sustained frustration.",
"audio_tools": [
{
"type": "function",
"function": {
"name": "escalate_to_human",
"description": "Escalate the conversation to a human agent when user frustration is detected",
"parameters": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "The reason for escalation"
}
},
"required": [
"reason"
]
}
}
}
]
},
"stt": {
"stt_engine": "tavus-auto",
"hotwords": "This is a hotword example"
},
"conferencing": {
"username": "acme-anna",
"allowlist": [
"alex@acme.com",
".*@acme\\.com"
]
}
},
"created_at": "",
"updated_at": "<string>"
}{
"error": "Invalid pal_id"
}{
"message": "Invalid access token"
}Get PAL
Returns a single PAL by its unique identifier.
curl --request GET \
--url https://tavusapi.com/v2/pals/{pal_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://tavusapi.com/v2/pals/{pal_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://tavusapi.com/v2/pals/{pal_id}', 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/pals/{pal_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://tavusapi.com/v2/pals/{pal_id}"
req, _ := http.NewRequest("GET", 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.get("https://tavusapi.com/v2/pals/{pal_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tavusapi.com/v2/pals/{pal_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pal_id": "pcb7a34da5fe",
"pal_name": "Life Coach",
"system_prompt": "As a Life Coach, you are a dedicated professional who specializes in...",
"default_face_id": "rc9cff32ceba",
"conferencing_email": "acme-anna@tavusinvite.com",
"disclosure_type": "auto",
"verbal_disclosure": "Just so you know, you're speaking with an AI agent from Acme.",
"visual_disclosure": "You are speaking with an AI agent.",
"document_ids": [
"d1234567890",
"d2468101214"
],
"document_tags": [
"product_info",
"company_policies"
],
"layers": {
"llm": {
"model": "<string>",
"base_url": "your-base-url",
"api_key": "your-api-key",
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location"
]
}
}
}
],
"headers": {
"Authorization": "Bearer your-api-key"
},
"extra_body": {
"temperature": 0.7,
"top_p": 0.9
}
},
"tts": {
"api_key": "your-api-key",
"tts_engine": "tavus-auto",
"voice_id": "v0a1b2c3d4e5f",
"external_voice_id": "external-voice-id",
"voice_settings": {
"speed": 0.5,
"emotion": [
"positivity:high",
"curiosity"
]
},
"tts_model_name": "sonic-3",
"pronunciation_dictionary_id": "pd_abc123def456"
},
"perception": {
"perception_model": "raven-1",
"emotion_recognition": "auto",
"visual_awareness_queries": [
"Is the user showing an ID card?",
"Does the user appear distressed or uncomfortable?"
],
"visual_tool_prompt": "You have a tool to notify the system when an ID card is detected, named `notify_if_id_shown`. You MUST use this tool when a form of ID is detected.",
"visual_tools": [
{
"type": "function",
"function": {
"name": "notify_if_id_shown",
"description": "Use this function when a drivers license or passport is detected in the image with high confidence. After collecting the ID, internally use final_ask()",
"parameters": {
"type": "object",
"properties": {
"id_type": {
"type": "string",
"description": "best guess on what type of ID it is"
}
},
"required": [
"id_type"
]
}
}
}
],
"audio_awareness_queries": [
"Does the user sound frustrated or confused?",
"Is the user speaking quickly as if in a hurry?"
],
"audio_tool_prompt": "You have a tool to escalate to a human agent when the user sounds very frustrated, named `escalate_to_human`. Use this tool when detecting sustained frustration.",
"audio_tools": [
{
"type": "function",
"function": {
"name": "escalate_to_human",
"description": "Escalate the conversation to a human agent when user frustration is detected",
"parameters": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "The reason for escalation"
}
},
"required": [
"reason"
]
}
}
}
]
},
"stt": {
"stt_engine": "tavus-auto",
"hotwords": "This is a hotword example"
},
"conferencing": {
"username": "acme-anna",
"allowlist": [
"alex@acme.com",
".*@acme\\.com"
]
}
},
"created_at": "",
"updated_at": "<string>"
}{
"error": "Invalid pal_id"
}{
"message": "Invalid access token"
}https://docs.tavus.io/openapi.yaml for the full HTTP API contract.Authorizations
Path Parameters
The unique identifier of the PAL.
"pcb7a34da5fe"
Response
A unique identifier for the PAL.
"pcb7a34da5fe"
A name for the PAL.
"Life Coach"
The system prompt that will be used by the llm.
"As a Life Coach, you are a dedicated professional who specializes in..."
The default face_id associated with this PAL if one exists.
"rc9cff32ceba"
The PAL's invitable meeting email on tavusinvite.com, derived from layers.conferencing.username. Present when conferencing is configured.
"acme-anna@tavusinvite.com"
Text the PAL speaks before its greeting when disclosure_type fires. Empty falls back to "Just a note, I am an AI system, not a person."
"Just so you know, you're speaking with an AI agent from Acme."
Text shown as an on-screen banner when disclosure_type fires. Empty falls back to "You are interacting with an AI system."
"You are speaking with an AI agent."
Array of document IDs that the PAL has access to. These documents will be available to the PAL in all their conversations. The document_ids are returned in the response of the Get Document and the Create Document endpoints.
["d1234567890", "d2468101214"]
Array of document tags that the PAL has access to. Documents matching these tags will be available to the PAL in all their conversations.
["product_info", "company_policies"]
Show child attributes
Show child attributes
The date and time the PAL was created.
""
The date and time of when the PAL was last updated.

