Voice Agent
curl --request PATCH \
--url https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": {
"imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg"
},
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
'import requests
url = "https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent"
payload = {
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": { "imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg" },
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: '5afe16ed-5fd2-4552-a993-903bc9c32bb6',
appearance: {
backgroundColor: '#ffffff',
borderColor: '#e1e1e1',
buttonColor: '#000000',
buttonRadius: 32,
buttonTextColor: '#ffffff',
cardRadius: 20,
focusOutlineColor: '#000000',
textColor: '#000000'
},
avatar: {
imageUrl: 'https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg'
},
model: {max_output_tokens: 2048, temperature: 0.7},
text: {
callToAction: 'Appointment?',
endCall: 'End',
listeningStatus: 'Listening',
speakingStatus: 'Talk to interrupt',
startCall: 'Start a call'
},
vad: {prefix_padding_ms: 500, silence_duration_ms: 1000, threshold: 0.8},
voice: 'shimmer'
})
};
fetch('https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent', 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://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'agentId' => '5afe16ed-5fd2-4552-a993-903bc9c32bb6',
'appearance' => [
'backgroundColor' => '#ffffff',
'borderColor' => '#e1e1e1',
'buttonColor' => '#000000',
'buttonRadius' => 32,
'buttonTextColor' => '#ffffff',
'cardRadius' => 20,
'focusOutlineColor' => '#000000',
'textColor' => '#000000'
],
'avatar' => [
'imageUrl' => 'https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg'
],
'model' => [
'max_output_tokens' => 2048,
'temperature' => 0.7
],
'text' => [
'callToAction' => 'Appointment?',
'endCall' => 'End',
'listeningStatus' => 'Listening',
'speakingStatus' => 'Talk to interrupt',
'startCall' => 'Start a call'
],
'vad' => [
'prefix_padding_ms' => 500,
'silence_duration_ms' => 1000,
'threshold' => 0.8
],
'voice' => 'shimmer'
]),
CURLOPT_HTTPHEADER => [
"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://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent"
payload := strings.NewReader("{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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.patch("https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Voice widget config updated successfully",
"voice_widget_config": {
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": {
"imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg"
},
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
}API Reference
Voice Agent
Voice Agent
PATCH
/
api
/
external
/
chatbot
/
{chatbotId}
/
voice-agent
Voice Agent
curl --request PATCH \
--url https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": {
"imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg"
},
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
'import requests
url = "https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent"
payload = {
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": { "imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg" },
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: '5afe16ed-5fd2-4552-a993-903bc9c32bb6',
appearance: {
backgroundColor: '#ffffff',
borderColor: '#e1e1e1',
buttonColor: '#000000',
buttonRadius: 32,
buttonTextColor: '#ffffff',
cardRadius: 20,
focusOutlineColor: '#000000',
textColor: '#000000'
},
avatar: {
imageUrl: 'https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg'
},
model: {max_output_tokens: 2048, temperature: 0.7},
text: {
callToAction: 'Appointment?',
endCall: 'End',
listeningStatus: 'Listening',
speakingStatus: 'Talk to interrupt',
startCall: 'Start a call'
},
vad: {prefix_padding_ms: 500, silence_duration_ms: 1000, threshold: 0.8},
voice: 'shimmer'
})
};
fetch('https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent', 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://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'agentId' => '5afe16ed-5fd2-4552-a993-903bc9c32bb6',
'appearance' => [
'backgroundColor' => '#ffffff',
'borderColor' => '#e1e1e1',
'buttonColor' => '#000000',
'buttonRadius' => 32,
'buttonTextColor' => '#ffffff',
'cardRadius' => 20,
'focusOutlineColor' => '#000000',
'textColor' => '#000000'
],
'avatar' => [
'imageUrl' => 'https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg'
],
'model' => [
'max_output_tokens' => 2048,
'temperature' => 0.7
],
'text' => [
'callToAction' => 'Appointment?',
'endCall' => 'End',
'listeningStatus' => 'Listening',
'speakingStatus' => 'Talk to interrupt',
'startCall' => 'Start a call'
],
'vad' => [
'prefix_padding_ms' => 500,
'silence_duration_ms' => 1000,
'threshold' => 0.8
],
'voice' => 'shimmer'
]),
CURLOPT_HTTPHEADER => [
"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://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent"
payload := strings.NewReader("{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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.patch("https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v2.okchat.ai/api/external/chatbot/{chatbotId}/voice-agent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentId\": \"5afe16ed-5fd2-4552-a993-903bc9c32bb6\",\n \"appearance\": {\n \"backgroundColor\": \"#ffffff\",\n \"borderColor\": \"#e1e1e1\",\n \"buttonColor\": \"#000000\",\n \"buttonRadius\": 32,\n \"buttonTextColor\": \"#ffffff\",\n \"cardRadius\": 20,\n \"focusOutlineColor\": \"#000000\",\n \"textColor\": \"#000000\"\n },\n \"avatar\": {\n \"imageUrl\": \"https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg\"\n },\n \"model\": {\n \"max_output_tokens\": 2048,\n \"temperature\": 0.7\n },\n \"text\": {\n \"callToAction\": \"Appointment?\",\n \"endCall\": \"End\",\n \"listeningStatus\": \"Listening\",\n \"speakingStatus\": \"Talk to interrupt\",\n \"startCall\": \"Start a call\"\n },\n \"vad\": {\n \"prefix_padding_ms\": 500,\n \"silence_duration_ms\": 1000,\n \"threshold\": 0.8\n },\n \"voice\": \"shimmer\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Voice widget config updated successfully",
"voice_widget_config": {
"agentId": "5afe16ed-5fd2-4552-a993-903bc9c32bb6",
"appearance": {
"backgroundColor": "#ffffff",
"borderColor": "#e1e1e1",
"buttonColor": "#000000",
"buttonRadius": 32,
"buttonTextColor": "#ffffff",
"cardRadius": 20,
"focusOutlineColor": "#000000",
"textColor": "#000000"
},
"avatar": {
"imageUrl": "https://assets.grok.com/users/e473c4f6-e103-4d71-8194-03a7ecc74370/0R8nPXaAvhBinoUh-generated_image.jpg"
},
"model": {
"max_output_tokens": 2048,
"temperature": 0.7
},
"text": {
"callToAction": "Appointment?",
"endCall": "End",
"listeningStatus": "Listening",
"speakingStatus": "Talk to interrupt",
"startCall": "Start a call"
},
"vad": {
"prefix_padding_ms": 500,
"silence_duration_ms": 1000,
"threshold": 0.8
},
"voice": "shimmer"
}
}Headers
Example:
"15a23c21867f4f38b0b46f5e4adb1caf87a040b34eb58f68"
Path Parameters
Example:
"3317853e-0af2-427d-a56f-351a9587f48f"
Body
application/json
⌘I