curl --request POST \
--url https://api.cekura.ai/test_framework/v2/aiagents/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"name": "<string>",
"project": 123,
"language": "en",
"telephony": {
"phone_number": "<string>",
"inbound": false,
"sip_uri": "<string>",
"sip_auth": "<unknown>",
"websocket_url": "<string>",
"websocket_auth": "<unknown>",
"outbound_numbers": [
"<string>"
]
},
"provider": {
"agent_id": "<string>",
"credentials": {
"api_key": "<string>",
"config": {
"public_key": "<string>",
"trigger_url": "<string>",
"trigger_secret": "<string>"
}
},
"chat_agent_details": {
"config": {
"agent_id": "<string>"
}
},
"auto_dial_outbound": true,
"auto_import_calls": true,
"auto_sync_prompt": true,
"send_post_conversation_metadata": true,
"redact_fields": [],
"configure_from_provider": false
},
"agent_speaks_first": true,
"predefined_metrics": "<unknown>",
"knowledge_base_files": [
{
"id": 123,
"file_name": "<string>",
"name": "<string>",
"content_base64": "<string>"
}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"mock_tools": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"mock_data": "<unknown>",
"freetext_params": [
"<string>"
],
"served_via": {
"type": "direct",
"mock_index": 2
}
}
],
"mock_tools_enabled": true,
"dynamic_variables": [
{
"name": "<string>",
"description": "<string>",
"id": 123
}
],
"email_id": "jsmith@example.com"
}
'import requests
url = "https://api.cekura.ai/test_framework/v2/aiagents/"
payload = {
"description": "<string>",
"name": "<string>",
"project": 123,
"language": "en",
"telephony": {
"phone_number": "<string>",
"inbound": False,
"sip_uri": "<string>",
"sip_auth": "<unknown>",
"websocket_url": "<string>",
"websocket_auth": "<unknown>",
"outbound_numbers": ["<string>"]
},
"provider": {
"agent_id": "<string>",
"credentials": {
"api_key": "<string>",
"config": {
"public_key": "<string>",
"trigger_url": "<string>",
"trigger_secret": "<string>"
}
},
"chat_agent_details": { "config": { "agent_id": "<string>" } },
"auto_dial_outbound": True,
"auto_import_calls": True,
"auto_sync_prompt": True,
"send_post_conversation_metadata": True,
"redact_fields": [],
"configure_from_provider": False
},
"agent_speaks_first": True,
"predefined_metrics": "<unknown>",
"knowledge_base_files": [
{
"id": 123,
"file_name": "<string>",
"name": "<string>",
"content_base64": "<string>"
}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"mock_tools": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"mock_data": "<unknown>",
"freetext_params": ["<string>"],
"served_via": {
"type": "direct",
"mock_index": 2
}
}
],
"mock_tools_enabled": True,
"dynamic_variables": [
{
"name": "<string>",
"description": "<string>",
"id": 123
}
],
"email_id": "jsmith@example.com"
}
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({
description: '<string>',
name: '<string>',
project: 123,
language: 'en',
telephony: {
phone_number: '<string>',
inbound: false,
sip_uri: '<string>',
sip_auth: '<unknown>',
websocket_url: '<string>',
websocket_auth: '<unknown>',
outbound_numbers: ['<string>']
},
provider: {
agent_id: '<string>',
credentials: {
api_key: '<string>',
config: {public_key: '<string>', trigger_url: '<string>', trigger_secret: '<string>'}
},
chat_agent_details: {config: {agent_id: '<string>'}},
auto_dial_outbound: true,
auto_import_calls: true,
auto_sync_prompt: true,
send_post_conversation_metadata: true,
redact_fields: [],
configure_from_provider: false
},
agent_speaks_first: true,
predefined_metrics: '<unknown>',
knowledge_base_files: [{id: 123, file_name: '<string>', name: '<string>', content_base64: '<string>'}],
webhook_url: '<string>',
webhook_secret: '<string>',
mock_tools: [
{
id: 123,
name: '<string>',
description: '<string>',
mock_data: '<unknown>',
freetext_params: ['<string>'],
served_via: {type: 'direct', mock_index: 2}
}
],
mock_tools_enabled: true,
dynamic_variables: [{name: '<string>', description: '<string>', id: 123}],
email_id: 'jsmith@example.com'
})
};
fetch('https://api.cekura.ai/test_framework/v2/aiagents/', 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.cekura.ai/test_framework/v2/aiagents/",
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([
'description' => '<string>',
'name' => '<string>',
'project' => 123,
'language' => 'en',
'telephony' => [
'phone_number' => '<string>',
'inbound' => false,
'sip_uri' => '<string>',
'sip_auth' => '<unknown>',
'websocket_url' => '<string>',
'websocket_auth' => '<unknown>',
'outbound_numbers' => [
'<string>'
]
],
'provider' => [
'agent_id' => '<string>',
'credentials' => [
'api_key' => '<string>',
'config' => [
'public_key' => '<string>',
'trigger_url' => '<string>',
'trigger_secret' => '<string>'
]
],
'chat_agent_details' => [
'config' => [
'agent_id' => '<string>'
]
],
'auto_dial_outbound' => true,
'auto_import_calls' => true,
'auto_sync_prompt' => true,
'send_post_conversation_metadata' => true,
'redact_fields' => [
],
'configure_from_provider' => false
],
'agent_speaks_first' => true,
'predefined_metrics' => '<unknown>',
'knowledge_base_files' => [
[
'id' => 123,
'file_name' => '<string>',
'name' => '<string>',
'content_base64' => '<string>'
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'mock_tools' => [
[
'id' => 123,
'name' => '<string>',
'description' => '<string>',
'mock_data' => '<unknown>',
'freetext_params' => [
'<string>'
],
'served_via' => [
'type' => 'direct',
'mock_index' => 2
]
]
],
'mock_tools_enabled' => true,
'dynamic_variables' => [
[
'name' => '<string>',
'description' => '<string>',
'id' => 123
]
],
'email_id' => 'jsmith@example.com'
]),
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.cekura.ai/test_framework/v2/aiagents/"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\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.cekura.ai/test_framework/v2/aiagents/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v2/aiagents/")
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 \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": 303,
"name": "Support Bot",
"description": "Handles inbound support calls",
"project": 42,
"language": "en",
"telephony": {
"inbound": true,
"phone_number": "+14155551234",
"sip_uri": null
},
"provider": {
"type": "custom"
},
"agent_speaks_first": null,
"knowledge_base_files": [],
"mock_tools": [
{
"id": 1,
"name": "get_order",
"description": "Look up an order",
"mock_data": [
{
"input": {
"order_id": "A1"
},
"output": {
"status": "shipped"
}
}
],
"served_via": {
"type": "direct",
"url": "https://api.cekura.ai/test_framework/v1/aiagents/303/tool/get_order/"
}
},
{
"id": 2,
"name": "crm_lookup",
"description": "CRM read",
"mock_data": [],
"served_via": {
"type": "mcp",
"mock_index": 1,
"url": "https://api.cekura.ai/test_framework/v1/aiagents/303/mcp/1/"
}
}
],
"mock_tools_enabled": false,
"mock_tools_provider": null,
"dynamic_variables": [
{
"id": 10,
"name": "customer_name",
"description": "Caller name"
}
],
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}{
"id": 123,
"progress_id": "<string>"
}{
"field_name": [
"<string>"
]
}Create Agent
Register an AI voice agent with Cekura. Provider credentials are nested under a provider block rather than flat fields.
curl --request POST \
--url https://api.cekura.ai/test_framework/v2/aiagents/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"name": "<string>",
"project": 123,
"language": "en",
"telephony": {
"phone_number": "<string>",
"inbound": false,
"sip_uri": "<string>",
"sip_auth": "<unknown>",
"websocket_url": "<string>",
"websocket_auth": "<unknown>",
"outbound_numbers": [
"<string>"
]
},
"provider": {
"agent_id": "<string>",
"credentials": {
"api_key": "<string>",
"config": {
"public_key": "<string>",
"trigger_url": "<string>",
"trigger_secret": "<string>"
}
},
"chat_agent_details": {
"config": {
"agent_id": "<string>"
}
},
"auto_dial_outbound": true,
"auto_import_calls": true,
"auto_sync_prompt": true,
"send_post_conversation_metadata": true,
"redact_fields": [],
"configure_from_provider": false
},
"agent_speaks_first": true,
"predefined_metrics": "<unknown>",
"knowledge_base_files": [
{
"id": 123,
"file_name": "<string>",
"name": "<string>",
"content_base64": "<string>"
}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"mock_tools": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"mock_data": "<unknown>",
"freetext_params": [
"<string>"
],
"served_via": {
"type": "direct",
"mock_index": 2
}
}
],
"mock_tools_enabled": true,
"dynamic_variables": [
{
"name": "<string>",
"description": "<string>",
"id": 123
}
],
"email_id": "jsmith@example.com"
}
'import requests
url = "https://api.cekura.ai/test_framework/v2/aiagents/"
payload = {
"description": "<string>",
"name": "<string>",
"project": 123,
"language": "en",
"telephony": {
"phone_number": "<string>",
"inbound": False,
"sip_uri": "<string>",
"sip_auth": "<unknown>",
"websocket_url": "<string>",
"websocket_auth": "<unknown>",
"outbound_numbers": ["<string>"]
},
"provider": {
"agent_id": "<string>",
"credentials": {
"api_key": "<string>",
"config": {
"public_key": "<string>",
"trigger_url": "<string>",
"trigger_secret": "<string>"
}
},
"chat_agent_details": { "config": { "agent_id": "<string>" } },
"auto_dial_outbound": True,
"auto_import_calls": True,
"auto_sync_prompt": True,
"send_post_conversation_metadata": True,
"redact_fields": [],
"configure_from_provider": False
},
"agent_speaks_first": True,
"predefined_metrics": "<unknown>",
"knowledge_base_files": [
{
"id": 123,
"file_name": "<string>",
"name": "<string>",
"content_base64": "<string>"
}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"mock_tools": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"mock_data": "<unknown>",
"freetext_params": ["<string>"],
"served_via": {
"type": "direct",
"mock_index": 2
}
}
],
"mock_tools_enabled": True,
"dynamic_variables": [
{
"name": "<string>",
"description": "<string>",
"id": 123
}
],
"email_id": "jsmith@example.com"
}
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({
description: '<string>',
name: '<string>',
project: 123,
language: 'en',
telephony: {
phone_number: '<string>',
inbound: false,
sip_uri: '<string>',
sip_auth: '<unknown>',
websocket_url: '<string>',
websocket_auth: '<unknown>',
outbound_numbers: ['<string>']
},
provider: {
agent_id: '<string>',
credentials: {
api_key: '<string>',
config: {public_key: '<string>', trigger_url: '<string>', trigger_secret: '<string>'}
},
chat_agent_details: {config: {agent_id: '<string>'}},
auto_dial_outbound: true,
auto_import_calls: true,
auto_sync_prompt: true,
send_post_conversation_metadata: true,
redact_fields: [],
configure_from_provider: false
},
agent_speaks_first: true,
predefined_metrics: '<unknown>',
knowledge_base_files: [{id: 123, file_name: '<string>', name: '<string>', content_base64: '<string>'}],
webhook_url: '<string>',
webhook_secret: '<string>',
mock_tools: [
{
id: 123,
name: '<string>',
description: '<string>',
mock_data: '<unknown>',
freetext_params: ['<string>'],
served_via: {type: 'direct', mock_index: 2}
}
],
mock_tools_enabled: true,
dynamic_variables: [{name: '<string>', description: '<string>', id: 123}],
email_id: 'jsmith@example.com'
})
};
fetch('https://api.cekura.ai/test_framework/v2/aiagents/', 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.cekura.ai/test_framework/v2/aiagents/",
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([
'description' => '<string>',
'name' => '<string>',
'project' => 123,
'language' => 'en',
'telephony' => [
'phone_number' => '<string>',
'inbound' => false,
'sip_uri' => '<string>',
'sip_auth' => '<unknown>',
'websocket_url' => '<string>',
'websocket_auth' => '<unknown>',
'outbound_numbers' => [
'<string>'
]
],
'provider' => [
'agent_id' => '<string>',
'credentials' => [
'api_key' => '<string>',
'config' => [
'public_key' => '<string>',
'trigger_url' => '<string>',
'trigger_secret' => '<string>'
]
],
'chat_agent_details' => [
'config' => [
'agent_id' => '<string>'
]
],
'auto_dial_outbound' => true,
'auto_import_calls' => true,
'auto_sync_prompt' => true,
'send_post_conversation_metadata' => true,
'redact_fields' => [
],
'configure_from_provider' => false
],
'agent_speaks_first' => true,
'predefined_metrics' => '<unknown>',
'knowledge_base_files' => [
[
'id' => 123,
'file_name' => '<string>',
'name' => '<string>',
'content_base64' => '<string>'
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'mock_tools' => [
[
'id' => 123,
'name' => '<string>',
'description' => '<string>',
'mock_data' => '<unknown>',
'freetext_params' => [
'<string>'
],
'served_via' => [
'type' => 'direct',
'mock_index' => 2
]
]
],
'mock_tools_enabled' => true,
'dynamic_variables' => [
[
'name' => '<string>',
'description' => '<string>',
'id' => 123
]
],
'email_id' => 'jsmith@example.com'
]),
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.cekura.ai/test_framework/v2/aiagents/"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\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.cekura.ai/test_framework/v2/aiagents/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v2/aiagents/")
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 \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"project\": 123,\n \"language\": \"en\",\n \"telephony\": {\n \"phone_number\": \"<string>\",\n \"inbound\": false,\n \"sip_uri\": \"<string>\",\n \"sip_auth\": \"<unknown>\",\n \"websocket_url\": \"<string>\",\n \"websocket_auth\": \"<unknown>\",\n \"outbound_numbers\": [\n \"<string>\"\n ]\n },\n \"provider\": {\n \"agent_id\": \"<string>\",\n \"credentials\": {\n \"api_key\": \"<string>\",\n \"config\": {\n \"public_key\": \"<string>\",\n \"trigger_url\": \"<string>\",\n \"trigger_secret\": \"<string>\"\n }\n },\n \"chat_agent_details\": {\n \"config\": {\n \"agent_id\": \"<string>\"\n }\n },\n \"auto_dial_outbound\": true,\n \"auto_import_calls\": true,\n \"auto_sync_prompt\": true,\n \"send_post_conversation_metadata\": true,\n \"redact_fields\": [],\n \"configure_from_provider\": false\n },\n \"agent_speaks_first\": true,\n \"predefined_metrics\": \"<unknown>\",\n \"knowledge_base_files\": [\n {\n \"id\": 123,\n \"file_name\": \"<string>\",\n \"name\": \"<string>\",\n \"content_base64\": \"<string>\"\n }\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"mock_tools\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mock_data\": \"<unknown>\",\n \"freetext_params\": [\n \"<string>\"\n ],\n \"served_via\": {\n \"type\": \"direct\",\n \"mock_index\": 2\n }\n }\n ],\n \"mock_tools_enabled\": true,\n \"dynamic_variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": 123\n }\n ],\n \"email_id\": \"jsmith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": 303,
"name": "Support Bot",
"description": "Handles inbound support calls",
"project": 42,
"language": "en",
"telephony": {
"inbound": true,
"phone_number": "+14155551234",
"sip_uri": null
},
"provider": {
"type": "custom"
},
"agent_speaks_first": null,
"knowledge_base_files": [],
"mock_tools": [
{
"id": 1,
"name": "get_order",
"description": "Look up an order",
"mock_data": [
{
"input": {
"order_id": "A1"
},
"output": {
"status": "shipped"
}
}
],
"served_via": {
"type": "direct",
"url": "https://api.cekura.ai/test_framework/v1/aiagents/303/tool/get_order/"
}
},
{
"id": 2,
"name": "crm_lookup",
"description": "CRM read",
"mock_data": [],
"served_via": {
"type": "mcp",
"mock_index": 1,
"url": "https://api.cekura.ai/test_framework/v1/aiagents/303/mcp/1/"
}
}
],
"mock_tools_enabled": false,
"mock_tools_provider": null,
"dynamic_variables": [
{
"id": 10,
"name": "customer_name",
"description": "Caller name"
}
],
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}{
"id": 123,
"progress_id": "<string>"
}{
"field_name": [
"<string>"
]
}Authorizations
OAuth access token issued by Cekura for connected apps.
Body
A detailed description of what this agent does and how it should interact Example:
AI agent for handling customer support inquiries and resolving technical issues
Agent name. Optional when configure_from_provider is set — it's fetched from the provider.
255The project this agent belongs to
The primary language this agent uses for communication (e.g. 'en' for English)
af- Afrikaansar- Arabicbn- Bengalibg- Bulgarianzh- Chinese Simplifiedcs- Czechda- Danishnl- Dutchen- Englishet- Estonianfi- Finnishfr- Frenchde- Germanel- Greekgu- Gujaratihi- Hindihe- Hebrewhu- Hungarianid- Indonesianit- Italianja- Japanesekn- Kannadako- Koreanms- Malayml- Malayalammr- Marathimulti- Multilingualno- Norwegianpl- Polishpa- Punjabipt- Portuguesero- Romanianru- Russiansk- Slovakes- Spanishsv- Swedishth- Thaitr- Turkishtl- Tagalogta- Tamilte- Teluguuk- Ukrainianvi- Vietnamese
af, ar, bn, bg, zh, cs, da, nl, en, et, fi, fr, de, el, gu, hi, he, hu, id, it, ja, kn, ko, ms, ml, mr, multi, no, pl, pa, pt, ro, ru, sk, es, sv, th, tr, tl, ta, te, uk, vi Phone and SIP/websocket channel configuration.
Show child attributes
Show child attributes
AI platform integration. Nested credentials replace the flat {provider}_api_key fields.
Show child attributes
Show child attributes
True = agent speaks first; False = test user speaks first; null = auto-detect.
predefined metrics to use for the agent
Full desired set of knowledge base files. Reference existing by id; add new ones with file_name + content_base64. Omitted existing files are deleted.
Show child attributes
Show child attributes
Webhook URL for this agent. When set, overrides the project-level webhook URL for events from this agent.
Secret sent in X-CEKURA-SECRET header. Applies when agent webhook_url is set. Write-only — never returned in API responses. Use webhook_secret_configured to check whether one is set.
Full desired set of mock tools. Items with id (or a matching name) update existing tools; items without create new ones. Omitted existing tools are deleted.
Show child attributes
Show child attributes
Whether mock tools should be selected by default when configuring a run.
Full desired set of dynamic variable definitions, matched by name. Omitted existing variables are deleted.
Show child attributes
Show child attributes
Email address this agent receives at. When set, enables email-based test runs.
254Response
A detailed description of what this agent does and how it should interact Example:
AI agent for handling customer support inquiries and resolving technical issues
Agent ID.
Example: 2142
Agent name. Optional when configure_from_provider is set — it's fetched from the provider.
255The project this agent belongs to
The primary language this agent uses for communication (e.g. 'en' for English)
af- Afrikaansar- Arabicbn- Bengalibg- Bulgarianzh- Chinese Simplifiedcs- Czechda- Danishnl- Dutchen- Englishet- Estonianfi- Finnishfr- Frenchde- Germanel- Greekgu- Gujaratihi- Hindihe- Hebrewhu- Hungarianid- Indonesianit- Italianja- Japanesekn- Kannadako- Koreanms- Malayml- Malayalammr- Marathimulti- Multilingualno- Norwegianpl- Polishpa- Punjabipt- Portuguesero- Romanianru- Russiansk- Slovakes- Spanishsv- Swedishth- Thaitr- Turkishtl- Tagalogta- Tamilte- Teluguuk- Ukrainianvi- Vietnamese
af, ar, bn, bg, zh, cs, da, nl, en, et, fi, fr, de, el, gu, hi, he, hu, id, it, ja, kn, ko, ms, ml, mr, multi, no, pl, pa, pt, ro, ru, sk, es, sv, th, tr, tl, ta, te, uk, vi Phone and SIP/websocket channel configuration.
Show child attributes
Show child attributes
AI platform integration (provider type, agent id, credential status, chat config).
Show child attributes
Show child attributes
True = agent speaks first; False = test user speaks first; null = auto-detect.
Knowledge base files attached to the agent.
Show child attributes
Show child attributes
Personality profiles enabled for this agent
Example: [1, 2, 3]
Webhook URL for this agent. When set, overrides the project-level webhook URL for events from this agent.
Mock tools registered on the agent, each with its mock data and runtime access (served_via).
Show child attributes
Show child attributes
Whether mock tools should be selected by default when configuring a run.
Provider the mock tools were fetched from (vapi, retell, elevenlabs, custom). Null until auto-fetch has been run.
Dynamic variable definitions for the agent, ordered by name.
Show child attributes
Show child attributes
Timestamp when the agent was created
Example: "2021-01-01T00:00:00Z"
Timestamp when the agent was last updated
Example: "2021-01-01T00:00:00Z"
Email address this agent receives at. When set, enables email-based test runs.
254