curl --request POST \
--url https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"slug": "create_lead",
"description": "When to use, preconditions, what it returns",
"endpoint": "https://api.example.com/leads",
"method": "POST",
"enableBasicAuth": true,
"name": "Create Lead",
"basicAuthUsername": "username",
"basicAuthPassword": "password",
"headers": "{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}",
"bodyTemplate": "{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}",
"allowAdditionalProperties": false,
"parameters": [
{
"key": "email",
"type": "string",
"description": "Email of the lead",
"required": false
}
],
"icon": "http://localhost:3001"
}
'import requests
url = "https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools"
payload = {
"slug": "create_lead",
"description": "When to use, preconditions, what it returns",
"endpoint": "https://api.example.com/leads",
"method": "POST",
"enableBasicAuth": True,
"name": "Create Lead",
"basicAuthUsername": "username",
"basicAuthPassword": "password",
"headers": "{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}",
"bodyTemplate": "{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}",
"allowAdditionalProperties": False,
"parameters": [
{
"key": "email",
"type": "string",
"description": "Email of the lead",
"required": False
}
],
"icon": "http://localhost:3001"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
slug: 'create_lead',
description: 'When to use, preconditions, what it returns',
endpoint: 'https://api.example.com/leads',
method: 'POST',
enableBasicAuth: true,
name: 'Create Lead',
basicAuthUsername: 'username',
basicAuthPassword: 'password',
headers: '{"Content-Type": "application/json", "Authorization": "Bearer token"}',
bodyTemplate: '{"name": "{{name}}", "email": "{{email}}"}',
allowAdditionalProperties: false,
parameters: [
{
key: 'email',
type: 'string',
description: 'Email of the lead',
required: false
}
],
icon: 'http://localhost:3001'
})
};
fetch('https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools', 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://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools",
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([
'slug' => 'create_lead',
'description' => 'When to use, preconditions, what it returns',
'endpoint' => 'https://api.example.com/leads',
'method' => 'POST',
'enableBasicAuth' => true,
'name' => 'Create Lead',
'basicAuthUsername' => 'username',
'basicAuthPassword' => 'password',
'headers' => '{"Content-Type": "application/json", "Authorization": "Bearer token"}',
'bodyTemplate' => '{"name": "{{name}}", "email": "{{email}}"}',
'allowAdditionalProperties' => false,
'parameters' => [
[
'key' => 'email',
'type' => 'string',
'description' => 'Email of the lead',
'required' => false
]
],
'icon' => 'http://localhost:3001'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools"
payload := strings.NewReader("{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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.post("https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}"
response = http.request(request)
puts response.read_body{
"_id": "myapp_my-api-tool",
"appId": "my-app-id",
"slug": "my-api-tool",
"name": "My API Tool",
"description": "Calls an external API",
"icon": "https://example.com/icon.png",
"endpoint": "https://api.example.com/search",
"method": "GET",
"enableBasicAuth": false,
"headers": "{\"Content-Type\":\"application/json\"}",
"bodyTemplate": "{\"query\":\"{{query}}\"}",
"allowAdditionalProperties": false,
"parameters": [
{
"key": "query",
"type": "string",
"description": "The search query",
"required": true
}
],
"tool": {
"name": "my-api-tool",
"description": "Calls an external API",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
},
"createdAt": 1700000000000,
"updatedAt": 1700000000000
}Create API Tool
Creates a new API tool configuration for the application. Use this endpoint to define a custom API endpoint that agents can call during conversations. Uniqueness: The slug must be unique per appl
curl --request POST \
--url https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"slug": "create_lead",
"description": "When to use, preconditions, what it returns",
"endpoint": "https://api.example.com/leads",
"method": "POST",
"enableBasicAuth": true,
"name": "Create Lead",
"basicAuthUsername": "username",
"basicAuthPassword": "password",
"headers": "{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}",
"bodyTemplate": "{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}",
"allowAdditionalProperties": false,
"parameters": [
{
"key": "email",
"type": "string",
"description": "Email of the lead",
"required": false
}
],
"icon": "http://localhost:3001"
}
'import requests
url = "https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools"
payload = {
"slug": "create_lead",
"description": "When to use, preconditions, what it returns",
"endpoint": "https://api.example.com/leads",
"method": "POST",
"enableBasicAuth": True,
"name": "Create Lead",
"basicAuthUsername": "username",
"basicAuthPassword": "password",
"headers": "{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}",
"bodyTemplate": "{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}",
"allowAdditionalProperties": False,
"parameters": [
{
"key": "email",
"type": "string",
"description": "Email of the lead",
"required": False
}
],
"icon": "http://localhost:3001"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
slug: 'create_lead',
description: 'When to use, preconditions, what it returns',
endpoint: 'https://api.example.com/leads',
method: 'POST',
enableBasicAuth: true,
name: 'Create Lead',
basicAuthUsername: 'username',
basicAuthPassword: 'password',
headers: '{"Content-Type": "application/json", "Authorization": "Bearer token"}',
bodyTemplate: '{"name": "{{name}}", "email": "{{email}}"}',
allowAdditionalProperties: false,
parameters: [
{
key: 'email',
type: 'string',
description: 'Email of the lead',
required: false
}
],
icon: 'http://localhost:3001'
})
};
fetch('https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools', 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://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools",
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([
'slug' => 'create_lead',
'description' => 'When to use, preconditions, what it returns',
'endpoint' => 'https://api.example.com/leads',
'method' => 'POST',
'enableBasicAuth' => true,
'name' => 'Create Lead',
'basicAuthUsername' => 'username',
'basicAuthPassword' => 'password',
'headers' => '{"Content-Type": "application/json", "Authorization": "Bearer token"}',
'bodyTemplate' => '{"name": "{{name}}", "email": "{{email}}"}',
'allowAdditionalProperties' => false,
'parameters' => [
[
'key' => 'email',
'type' => 'string',
'description' => 'Email of the lead',
'required' => false
]
],
'icon' => 'http://localhost:3001'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools"
payload := strings.NewReader("{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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.post("https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{appId}.api-{region}.cometchat.io/v3/ai-agents/agent-builder/api-tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slug\": \"create_lead\",\n \"description\": \"When to use, preconditions, what it returns\",\n \"endpoint\": \"https://api.example.com/leads\",\n \"method\": \"POST\",\n \"enableBasicAuth\": true,\n \"name\": \"Create Lead\",\n \"basicAuthUsername\": \"username\",\n \"basicAuthPassword\": \"password\",\n \"headers\": \"{\\\"Content-Type\\\": \\\"application/json\\\", \\\"Authorization\\\": \\\"Bearer token\\\"}\",\n \"bodyTemplate\": \"{\\\"name\\\": \\\"{{name}}\\\", \\\"email\\\": \\\"{{email}}\\\"}\",\n \"allowAdditionalProperties\": false,\n \"parameters\": [\n {\n \"key\": \"email\",\n \"type\": \"string\",\n \"description\": \"Email of the lead\",\n \"required\": false\n }\n ],\n \"icon\": \"http://localhost:3001\"\n}"
response = http.request(request)
puts response.read_body{
"_id": "myapp_my-api-tool",
"appId": "my-app-id",
"slug": "my-api-tool",
"name": "My API Tool",
"description": "Calls an external API",
"icon": "https://example.com/icon.png",
"endpoint": "https://api.example.com/search",
"method": "GET",
"enableBasicAuth": false,
"headers": "{\"Content-Type\":\"application/json\"}",
"bodyTemplate": "{\"query\":\"{{query}}\"}",
"allowAdditionalProperties": false,
"parameters": [
{
"key": "query",
"type": "string",
"description": "The search query",
"required": true
}
],
"tool": {
"name": "my-api-tool",
"description": "Calls an external API",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
},
"createdAt": 1700000000000,
"updatedAt": 1700000000000
}Authorizations
API Key (i.e. Rest API Key from the Dashboard).
Body
Slug for the API tool (unique)
"create_lead"
Description of the API tool
"When to use, preconditions, what it returns"
API endpoint URL
"https://api.example.com/leads"
HTTP method
GET, POST, PUT, PATCH, DELETE "POST"
Whether to enable basic authentication
true
Name of the API tool
"Create Lead"
Basic auth username (required if enableBasicAuth is true)
"username"
Basic auth password (required if enableBasicAuth is true)
"password"
HTTP headers as a JSON string (e.g., '{"Content-Type": "application/json", "Authorization": "Bearer token"}')
"{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}"
Body template for the API request
"{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}"
Whether to allow additional properties
false
Array of parameters for the API tool
Show child attributes
Show child attributes
Icon for the API Tool
"http://localhost:3001"
Response
API tool created successfully
"myapp_my-api-tool"
"my-app-id"
"my-api-tool"
"My API Tool"
"Calls an external API"
"https://example.com/icon.png"
"https://api.example.com/search"
"GET"
false
"{\"Content-Type\":\"application/json\"}"
"{\"query\":\"{{query}}\"}"
false
Show child attributes
Show child attributes
Show child attributes
Show child attributes
1700000000000
1700000000000
Was this page helpful?