Docs
ChangelogالعربيةDashboard
DocumentationAPI reference
API referenceCreate tool
  • Introduction
  • Authentication
    • GETVerify API key
  • Agents
    • POSTCreate agent
    • GETList agents
    • GETGet agent
    • PUTUpdate agent
    • DELDelete agent
    • POSTLink analysis groups to an agent
    • GETList analysis groups for an agent
  • Tools
    • POSTCreate tool
    • GETList tools
    • GETGet tool
    • PUTUpdate tool
    • DELDelete tool
    • POSTLink a tool to an agent
    • DELUnlink a tool from an agent
    • GETList tools for an agent
    • GETList agents for a tool
  • Analysis groups
    • POSTCreate analysis group
    • GETList analysis groups
    • GETGet analysis group
    • PUTUpdate analysis group
    • DELDelete analysis group
    • POSTLink an agent to an analysis group
    • POSTLink agents to an analysis group
    • GETList agents for an analysis group
    • DELUnlink an analysis group from an agent
  • Knowledge bases
    • POSTCreate knowledge base
    • GETList knowledge bases
    • GETGet knowledge base
    • PATCHUpdate knowledge base
    • DELDelete knowledge base
  • Documents
    • POSTAdd PDF document
    • POSTAdd text document
    • POSTAdd URL document
    • GETList documents
    • GETGet document
    • DELDelete document
  • Calls
    • POSTCreate outbound call
    • GETGet call
    • POSTSearch calls
    • POSTGet call analytics
    • POSTExport calls
    • GETGet recording download URL
    • POSTCreate outbound call (legacy path)
  • Web calls
    • POSTCreate web call
    • POSTCreate web call (legacy path)
  • SIP inbound
    • POSTCreate SIP inbound trunk
    • GETList SIP inbound trunks
    • GETGet SIP inbound trunk
    • DELDelete SIP inbound trunk
  • SIP outbound
    • POSTCreate SIP outbound trunk
    • GETList SIP outbound trunks
    • GETGet SIP outbound trunk
    • DELDelete SIP outbound trunk
  • Agent inbound links
    • POSTLink an agent to an inbound trunk
    • GETList agent inbound links
    • DELDelete agent inbound link
  • Text to speech
    • POSTGenerate speech
    • GETList voices
    • GETGet voice
    • POSTClone a voice
    • DELDelete cloned voice
  • Speech to text
    • POSTTranscribe an audio file
    • GETGet transcription job
    • GETList transcription jobs
    • WSStream speech to text
  • Contacts
    • POSTCreate contact
    • GETList contacts
    • GETSearch contacts
    • GETGet contact
    • PATCHUpdate contact
    • GETList conversations for a contact
  • Conversations
    • GETList conversations
    • POSTFilter conversations
    • POSTList conversations by contact
    • GETGet conversation
    • GETList conversation messages
    • POSTSend a message
    • POSTSend a message with an attachment
    • GETList conversation attachments
    • POSTAssign conversation
    • POSTChange conversation status
    • POSTChange conversation priority
    • POSTMark conversation as seen
  • Tickets
    • POSTCreate ticket
    • GETList tickets
    • POSTFilter tickets
    • POSTList tickets by contact
    • GETGet ticket
    • GETList ticket messages
    • POSTAdd a ticket message
    • POSTAdd a ticket message with attachments
    • POSTAssign ticket
    • POSTChange ticket status
    • POSTChange ticket priority
    • POSTChange ticket type
    • POSTCreate ticket inbox
    • GETList ticket inboxes
    • PATCHUpdate ticket inbox
    • DELDelete ticket inbox
  • WhatsApp
    • POSTConnect a WhatsApp number
    • GETList WhatsApp inboxes
    • GETGet WhatsApp inbox
    • PATCHUpdate WhatsApp inbox
    • DELDelete WhatsApp inbox
    • POSTCreate WhatsApp conversation
    • GETList WhatsApp conversations
    • POSTFilter WhatsApp conversations
    • POSTList WhatsApp conversations by contact
    • POSTAssign an agent to a WhatsApp number
    • GETGet the agent on a WhatsApp number
    • DELRemove the agent from a WhatsApp number
    • POSTGet WhatsApp analytics
  • Instagram
    • GETList Instagram accounts
    • GETGet Instagram account
    • DELDelete Instagram account
    • GETList Instagram conversations
    • POSTFilter Instagram conversations
    • POSTList Instagram conversations by contact
    • POSTAssign an agent to an Instagram account
    • GETGet the agent on an Instagram account
    • DELRemove the agent from an Instagram account
  • TikTok
    • GETList TikTok accounts
    • GETGet TikTok account
    • DELDelete TikTok account
    • GETList TikTok conversations
    • POSTFilter TikTok conversations
    • POSTList TikTok conversations by contact
    • POSTAssign an agent to a TikTok account
    • GETGet the agent on a TikTok account
    • DELRemove the agent from a TikTok account

Tools

Create tool

Create a new function-calling tool in the current project. A tool is an HTTP webhook the agent can call during a conversation; the agent decides when to invoke it based on the name and description, then sends the configured parameters to your url. The response returns the full tool record including its generated id (the tool_id). After creating a tool you typically link it to one or more agents with POST /api/ext/tool/link before it can be used in a call.

POST
https://api.nabrah.ai/api/ext/tool
Create tool
curl --request POST \
  --url 'https://api.nabrah.ai/api/ext/tool' \
  --header 'X-API-Key: <your-api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "get_weather",
  "description": "Look up the current weather for a city. Call this when the caller asks about weather conditions.",
  "url": "https://api.example.com/weather",
  "method": "GET",
  "timeout_seconds": 5,
  "parameters": [
    {
      "name": "api_token",
      "location": "header",
      "parameter_type": "constant",
      "data_type": "string",
      "description": "Service API token",
      "required": true,
      "value": "secret-token-123",
      "default_value": ""
    },
    {
      "name": "city",
      "location": "query",
      "parameter_type": "inferred",
      "data_type": "string",
      "description": "The city the caller is asking about",
      "required": true,
      "value": "",
      "default_value": "Riyadh"
    }
  ]
}'
{
  "name": "string",
  "description": "string",
  "url": "string",
  "method": "GET",
  "id": "00000000-0000-4000-8000-000000000000",
  "project_id": "00000000-0000-4000-8000-000000000000",
  "created_at": "2026-01-15T12:00:00.000Z",
  "updated_at": "2026-01-15T12:00:00.000Z",
  "timeout_seconds": 5,
  "parameters": [
    {
      "name": "string",
      "location": "query",
      "parameter_type": "constant",
      "data_type": "string",
      "description": "string",
      "tool_id": "00000000-0000-4000-8000-000000000000",
      "required": false,
      "value": "string",
      "default_value": "string"
    }
  ],
  "link_id": "00000000-0000-4000-8000-000000000000"
}

Request fields

Describe the webhook the agent should call and the parameters it may pass.

Tool definition

name and description tell the model what the tool does and when to use it — write them clearly because the agent selects tools from these. url is the endpoint Nabrah calls; method is the HTTP verb (GET, POST, etc.). timeout_seconds bounds how long Nabrah waits for your endpoint.

namedescriptionurlmethodtimeout_seconds
parameters[]

Defines each value sent with the call. name is the parameter key. location is where it is placed (query, header, path, or body). parameter_type is either constant (a fixed value you supply in value) or inferred from the conversation by the model. data_type is the JSON type (string, number, boolean, etc.). description guides the model when it must fill the value. required marks whether the agent must provide it. value holds the fixed value for constant parameters; default_value is used when no value is supplied.

namelocationparameter_typedata_typedescriptionrequiredvaluedefault_value

Next step: linking

Creating a tool does not attach it to any agent.

Take the id from the response and call POST /api/ext/tool/link with that tool_id plus an agent_id to make the tool available during the agent's conversations.

Delivery and retries

How Nabrah calls your endpoint during a call or chat.

One attempt per use

Each time the agent uses the tool, Nabrah calls your endpoint once and waits up to timeout_seconds. There is no automatic retry or backoff, and no request ID is sent.

timeout_seconds
Errors

Your status code and response body are passed back to the agent, which decides what to tell the caller. On a timeout or connection error the agent is told the tool failed. The agent may call the tool again in the same conversation, so make booking-style endpoints idempotent, for example by keying them on your own appointment ID.

Authorization

X-API-Keystringheaderrequired

Your workspace API key. Create one in the dashboard under API keys.

Body

application/json

A GET webhook with two query parameters: a constant API token and a model-filled city name.

Example
{
  "name": "get_weather",
  "description": "Look up the current weather for a city. Call this when the caller asks about weather conditions.",
  "url": "https://api.example.com/weather",
  "method": "GET",
  "timeout_seconds": 5,
  "parameters": [
    {
      "name": "api_token",
      "location": "header",
      "parameter_type": "constant",
      "data_type": "string",
      "description": "Service API token",
      "required": true,
      "value": "secret-token-123",
      "default_value": ""
    },
    {
      "name": "city",
      "location": "query",
      "parameter_type": "inferred",
      "data_type": "string",
      "description": "The city the caller is asking about",
      "required": true,
      "value": "",
      "default_value": "Riyadh"
    }
  ]
}

Response

200

Successful Response

application/json

422

Validation Error

application/json

PreviousToolsNextList tools
© 2026 Nabrah. All rights reserved.
ChangelogPrivacy PolicyTerms of Service