curl --request PATCH \
--url https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"agentName": "<string>",
"greetingMessage": "<string>",
"preamble": "<unknown>",
"pokeMessages": [
"<string>"
],
"realTime": true,
"silenceThreshold": 123,
"interrupt": true,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": {
"test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
}
},
"required": [
"test"
]
},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"tools": {
"genderDetection": false,
"smartCallEnd": false
},
"params": {}
}
'import requests
url = "https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}"
payload = {
"agentName": "<string>",
"greetingMessage": "<string>",
"preamble": "<unknown>",
"pokeMessages": ["<string>"],
"realTime": True,
"silenceThreshold": 123,
"interrupt": True,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": { "test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
} },
"required": ["test"]
},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"tools": {
"genderDetection": False,
"smartCallEnd": False
},
"params": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentName: '<string>',
greetingMessage: '<string>',
preamble: '<unknown>',
pokeMessages: ['<string>'],
realTime: true,
silenceThreshold: 123,
interrupt: true,
outcome: '<string>',
outcomeResponseShape: {
type: 'object',
properties: {test: {type: 'number', description: 'Hello world from Hamsa AI!'}},
required: ['test']
},
webhookUrl: 'https://example.com/webhook',
webhookAuth: {authKey: 'Token', authSecret: 'Secret'},
tools: {genderDetection: false, smartCallEnd: false},
params: {}
})
};
fetch('https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}', 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.tryhamsa.com/v1/voice-agents/{voiceAgentId}",
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([
'agentName' => '<string>',
'greetingMessage' => '<string>',
'preamble' => '<unknown>',
'pokeMessages' => [
'<string>'
],
'realTime' => true,
'silenceThreshold' => 123,
'interrupt' => true,
'outcome' => '<string>',
'outcomeResponseShape' => [
'type' => 'object',
'properties' => [
'test' => [
'type' => 'number',
'description' => 'Hello world from Hamsa AI!'
]
],
'required' => [
'test'
]
],
'webhookUrl' => 'https://example.com/webhook',
'webhookAuth' => [
'authKey' => 'Token',
'authSecret' => 'Secret'
],
'tools' => [
'genderDetection' => false,
'smartCallEnd' => false
],
'params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.tryhamsa.com/v1/voice-agents/{voiceAgentId}"
payload := strings.NewReader("{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": false,
"message": "success",
"data": {
"id": "<string>",
"agentName": "<string>",
"greetingMessage": "<string>",
"description": "<string>",
"preamble": "<string>",
"lang": "<string>",
"pokeMessages": [
"<string>"
],
"realTime": true,
"silenceThreshold": 123,
"interrupt": true,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": {
"test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
}
},
"required": [
"test"
]
},
"projectId": "<string>",
"apiKeyId": "<string>",
"voiceRecordId": "<string>",
"voiceRecord": {},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"params": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}Update Voice Agent Route
curl --request PATCH \
--url https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"agentName": "<string>",
"greetingMessage": "<string>",
"preamble": "<unknown>",
"pokeMessages": [
"<string>"
],
"realTime": true,
"silenceThreshold": 123,
"interrupt": true,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": {
"test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
}
},
"required": [
"test"
]
},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"tools": {
"genderDetection": false,
"smartCallEnd": false
},
"params": {}
}
'import requests
url = "https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}"
payload = {
"agentName": "<string>",
"greetingMessage": "<string>",
"preamble": "<unknown>",
"pokeMessages": ["<string>"],
"realTime": True,
"silenceThreshold": 123,
"interrupt": True,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": { "test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
} },
"required": ["test"]
},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"tools": {
"genderDetection": False,
"smartCallEnd": False
},
"params": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentName: '<string>',
greetingMessage: '<string>',
preamble: '<unknown>',
pokeMessages: ['<string>'],
realTime: true,
silenceThreshold: 123,
interrupt: true,
outcome: '<string>',
outcomeResponseShape: {
type: 'object',
properties: {test: {type: 'number', description: 'Hello world from Hamsa AI!'}},
required: ['test']
},
webhookUrl: 'https://example.com/webhook',
webhookAuth: {authKey: 'Token', authSecret: 'Secret'},
tools: {genderDetection: false, smartCallEnd: false},
params: {}
})
};
fetch('https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}', 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.tryhamsa.com/v1/voice-agents/{voiceAgentId}",
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([
'agentName' => '<string>',
'greetingMessage' => '<string>',
'preamble' => '<unknown>',
'pokeMessages' => [
'<string>'
],
'realTime' => true,
'silenceThreshold' => 123,
'interrupt' => true,
'outcome' => '<string>',
'outcomeResponseShape' => [
'type' => 'object',
'properties' => [
'test' => [
'type' => 'number',
'description' => 'Hello world from Hamsa AI!'
]
],
'required' => [
'test'
]
],
'webhookUrl' => 'https://example.com/webhook',
'webhookAuth' => [
'authKey' => 'Token',
'authSecret' => 'Secret'
],
'tools' => [
'genderDetection' => false,
'smartCallEnd' => false
],
'params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.tryhamsa.com/v1/voice-agents/{voiceAgentId}"
payload := strings.NewReader("{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tryhamsa.com/v1/voice-agents/{voiceAgentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentName\": \"<string>\",\n \"greetingMessage\": \"<string>\",\n \"preamble\": \"<unknown>\",\n \"pokeMessages\": [\n \"<string>\"\n ],\n \"realTime\": true,\n \"silenceThreshold\": 123,\n \"interrupt\": true,\n \"outcome\": \"<string>\",\n \"outcomeResponseShape\": {\n \"type\": \"object\",\n \"properties\": {\n \"test\": {\n \"type\": \"number\",\n \"description\": \"Hello world from Hamsa AI!\"\n }\n },\n \"required\": [\n \"test\"\n ]\n },\n \"webhookUrl\": \"https://example.com/webhook\",\n \"webhookAuth\": {\n \"authKey\": \"Token\",\n \"authSecret\": \"Secret\"\n },\n \"tools\": {\n \"genderDetection\": false,\n \"smartCallEnd\": false\n },\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": false,
"message": "success",
"data": {
"id": "<string>",
"agentName": "<string>",
"greetingMessage": "<string>",
"description": "<string>",
"preamble": "<string>",
"lang": "<string>",
"pokeMessages": [
"<string>"
],
"realTime": true,
"silenceThreshold": 123,
"interrupt": true,
"outcome": "<string>",
"outcomeResponseShape": {
"type": "object",
"properties": {
"test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
}
},
"required": [
"test"
]
},
"projectId": "<string>",
"apiKeyId": "<string>",
"voiceRecordId": "<string>",
"voiceRecord": {},
"webhookUrl": "https://example.com/webhook",
"webhookAuth": {
"authKey": "Token",
"authSecret": "Secret"
},
"params": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}Authorizations
Pass the API key in the Authorization header, You need to put Token keyword before the API key. e.g. 'Authorization: Token '
Path Parameters
Body
Greeting Message can be customized by adding params like: {{name}}, to make the message more personal!
Preamble can be customized by adding params like: {{agentName}}, to make the prompt more specific and context aware!
ar, en The messages to say to the user when he doesn't respond!
A prompt to take the conversation and transform it to anything you like, like creating an article out of the conversation!
Recursive OpenAPI-style shape with 'type', 'properties', 'required', 'items', ...etc. Please refer to the OpenAPI Outcome Response Instructions above for more information.
{
"type": "object",
"properties": {
"test": {
"type": "number",
"description": "Hello world from Hamsa AI!"
}
},
"required": ["test"]
}
"https://example.com/webhook"
Authorization header to be sent in this format: Authorization: [authKey] [authSecret]
Show child attributes
Show child attributes
For trying voices and choosing one by yourself, or event cloning a voice, please visit Hamsa Agents platform voices tab here.
ab55c68b-091b-43b4-a55a-0be82093cd23, 79f81a3b-10f7-4eea-b0aa-5bd0b887d8cd, f87b58a6-dd88-4f77-86e4-10099e8412c8, 35189a1c-afbd-4ab7-9aa2-1af88c70ac63, 88d45604-12e9-4f7a-93bf-e16cf04c9214, 2ef6405e-7313-4b5e-b738-b0536ed0a36a, 9bead147-7ae5-47aa-80d3-f54668568a69, e2803890-f4dd-46f7-bfc6-1d3dc761c8ae, ac5ca565-175c-48d8-98dc-2fccc906cf4b, fb4d10c0-295d-43a9-9d8e-8775144b4b23, 3c249172-a61a-4a72-9375-1591b73d7ef6, 21f9d3fc-ae8b-41a2-9165-a3186433ae3c, 8e9f526c-eb30-417d-9e7a-65f704917fcc, 8a97dfe8-fe9d-40c5-8f94-7bf9b142e254 Show child attributes
Show child attributes
Set the params you define in the greeting message or preamble fields here, the key is the same as the param and the value is the param value. Press 'Add new property' below to set the param name then press enter, after that add the value.