Skip to main content
POST
/
ai-agents
/
agent-builder
/
api-tools
Create API Tool
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"
}
'
{
  "_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

apikey
string
header
required

API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).

Body

application/json
slug
string
required

Slug for the API tool (unique)

Example:

"create_lead"

description
string
required

Description of the API tool

Example:

"When to use, preconditions, what it returns"

endpoint
string
required

API endpoint URL

Example:

"https://api.example.com/leads"

method
enum<string>
required

HTTP method

Available options:
GET,
POST,
PUT,
PATCH,
DELETE
Example:

"POST"

enableBasicAuth
boolean
required

Whether to enable basic authentication

Example:

true

name
string
required

Name of the API tool

Example:

"Create Lead"

basicAuthUsername
string

Basic auth username (required if enableBasicAuth is true)

Example:

"username"

basicAuthPassword
string

Basic auth password (required if enableBasicAuth is true)

Example:

"password"

headers
string

HTTP headers as a JSON string (e.g., '{"Content-Type": "application/json", "Authorization": "Bearer token"}')

Example:

"{\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer token\"}"

bodyTemplate
string

Body template for the API request

Example:

"{\"name\": \"{{name}}\", \"email\": \"{{email}}\"}"

allowAdditionalProperties
boolean
default:false

Whether to allow additional properties

Example:

false

parameters
object[]

Array of parameters for the API tool

icon
string

Icon for the API Tool

Example:

"http://localhost:3001"

Response

API tool created successfully

_id
string
Example:

"myapp_my-api-tool"

appId
string
Example:

"my-app-id"

slug
string
Example:

"my-api-tool"

name
string
Example:

"My API Tool"

description
string
Example:

"Calls an external API"

icon
string
Example:

"https://example.com/icon.png"

endpoint
string
Example:

"https://api.example.com/search"

method
string
Example:

"GET"

enableBasicAuth
boolean
Example:

false

headers
string | null
Example:

"{\"Content-Type\":\"application/json\"}"

bodyTemplate
string | null
Example:

"{\"query\":\"{{query}}\"}"

allowAdditionalProperties
boolean
Example:

false

parameters
object[]
tool
object
createdAt
number
Example:

1700000000000

updatedAt
number
Example:

1700000000000