Agents
Create agent
Create an AI agent for a sender. Each sender can have at most one agent.
POST
/
v1
/
senders
/
{senderId}
/
agent
Create agent
curl --request POST \
--url https://api.zavu.dev/v1/senders/{senderId}/agent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Customer Support",
"provider": "openai",
"model": "gpt-4o-mini",
"systemPrompt": "You are a helpful customer support agent. Be friendly and concise.",
"apiKey": "sk-..."
}
'import requests
url = "https://api.zavu.dev/v1/senders/{senderId}/agent"
payload = {
"name": "Customer Support",
"provider": "openai",
"model": "gpt-4o-mini",
"systemPrompt": "You are a helpful customer support agent. Be friendly and concise.",
"apiKey": "sk-..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Customer Support',
provider: 'openai',
model: 'gpt-4o-mini',
systemPrompt: 'You are a helpful customer support agent. Be friendly and concise.',
apiKey: 'sk-...'
})
};
fetch('https://api.zavu.dev/v1/senders/{senderId}/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://api.zavu.dev/v1/senders/{senderId}/agent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Customer Support',
'provider' => 'openai',
'model' => 'gpt-4o-mini',
'systemPrompt' => 'You are a helpful customer support agent. Be friendly and concise.',
'apiKey' => 'sk-...'
]),
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://api.zavu.dev/v1/senders/{senderId}/agent"
payload := strings.NewReader("{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.zavu.dev/v1/senders/{senderId}/agent")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zavu.dev/v1/senders/{senderId}/agent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}"
response = http.request(request)
puts response.read_body{
"agent": {
"id": "agent_abc123",
"senderId": "sender_12345",
"name": "Customer Support Agent",
"enabled": true,
"model": "gpt-4o-mini",
"systemPrompt": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"contextWindowMessages": 10,
"includeContactMetadata": true,
"maxTokens": 123,
"temperature": 123,
"triggerOnChannels": [
"sms",
"whatsapp"
],
"triggerOnMessageTypes": [
"text"
],
"stats": {
"totalInvocations": 123,
"totalTokensUsed": 123,
"totalCost": 123
},
"voice": {
"enabled": true,
"greeting": "Hi, thanks for calling Acme. How can I help you today?",
"greetings": {
"es": "Hola, soy Atlas. Preguntame lo que quieras."
},
"language": "en",
"model": "openai/gpt-4o",
"sttProvider": "<string>",
"sttModel": "<string>",
"ttsProvider": "<string>",
"ttsVoiceId": "aria",
"voiceSpeed": 1,
"interruptible": true,
"maxCallDurationMinutes": 15,
"maxIdleSeconds": 30,
"recordCalls": true,
"voicemailAction": "hangup",
"voicemailMessage": "<string>",
"transferPhoneNumber": "+14155551234"
},
"senderIds": [
"<string>"
]
}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
Maximum string length:
100LLM provider for the AI agent.
Available options:
openai, anthropic, google, mistral, zavu Maximum string length:
10000API key for the LLM provider. Required unless provider is 'zavu'.
Required range:
1 <= x <= 50Required range:
1 <= x <= 4096Required range:
0 <= x <= 2Voice Agent configuration. Enable this to let the agent answer and place phone calls with Zavu's managed voice pipeline. Requires the Voice Agents feature to be enabled for your team.
Show child attributes
Show child attributes
Response
Agent created.
AI Agent configuration for a sender.
Show child attributes
Show child attributes
⌘I
Create agent
curl --request POST \
--url https://api.zavu.dev/v1/senders/{senderId}/agent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Customer Support",
"provider": "openai",
"model": "gpt-4o-mini",
"systemPrompt": "You are a helpful customer support agent. Be friendly and concise.",
"apiKey": "sk-..."
}
'import requests
url = "https://api.zavu.dev/v1/senders/{senderId}/agent"
payload = {
"name": "Customer Support",
"provider": "openai",
"model": "gpt-4o-mini",
"systemPrompt": "You are a helpful customer support agent. Be friendly and concise.",
"apiKey": "sk-..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Customer Support',
provider: 'openai',
model: 'gpt-4o-mini',
systemPrompt: 'You are a helpful customer support agent. Be friendly and concise.',
apiKey: 'sk-...'
})
};
fetch('https://api.zavu.dev/v1/senders/{senderId}/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://api.zavu.dev/v1/senders/{senderId}/agent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Customer Support',
'provider' => 'openai',
'model' => 'gpt-4o-mini',
'systemPrompt' => 'You are a helpful customer support agent. Be friendly and concise.',
'apiKey' => 'sk-...'
]),
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://api.zavu.dev/v1/senders/{senderId}/agent"
payload := strings.NewReader("{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.zavu.dev/v1/senders/{senderId}/agent")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zavu.dev/v1/senders/{senderId}/agent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Customer Support\",\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"systemPrompt\": \"You are a helpful customer support agent. Be friendly and concise.\",\n \"apiKey\": \"sk-...\"\n}"
response = http.request(request)
puts response.read_body{
"agent": {
"id": "agent_abc123",
"senderId": "sender_12345",
"name": "Customer Support Agent",
"enabled": true,
"model": "gpt-4o-mini",
"systemPrompt": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"contextWindowMessages": 10,
"includeContactMetadata": true,
"maxTokens": 123,
"temperature": 123,
"triggerOnChannels": [
"sms",
"whatsapp"
],
"triggerOnMessageTypes": [
"text"
],
"stats": {
"totalInvocations": 123,
"totalTokensUsed": 123,
"totalCost": 123
},
"voice": {
"enabled": true,
"greeting": "Hi, thanks for calling Acme. How can I help you today?",
"greetings": {
"es": "Hola, soy Atlas. Preguntame lo que quieras."
},
"language": "en",
"model": "openai/gpt-4o",
"sttProvider": "<string>",
"sttModel": "<string>",
"ttsProvider": "<string>",
"ttsVoiceId": "aria",
"voiceSpeed": 1,
"interruptible": true,
"maxCallDurationMinutes": 15,
"maxIdleSeconds": 30,
"recordCalls": true,
"voicemailAction": "hangup",
"voicemailMessage": "<string>",
"transferPhoneNumber": "+14155551234"
},
"senderIds": [
"<string>"
]
}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}{
"code": "invalid_request",
"message": "Phone number is invalid",
"details": {}
}