Skip to main content
POST
Create a tool

Authorizations

Authorization
string
header
required

Your v3 API key, e.g. ask_live_…

Headers

X-Subaccount-Id
string

Target subaccount for the request. Required unless the API key is authorized for exactly one subaccount (then it defaults to that one). Alternatively pass subaccount_id (or legacy location_id) in the request body. Omitting it on a multi-subaccount key returns 400 subaccount_required.

Body

application/json
name
string
required
Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$
description
string
category
string
tool_type
enum<string>

Tool type. FUNCTION (chat/LLM, default) or CUSTOM (voice tool with URL); END_CALL/PRESS_DIGIT/TRANSFER_CALL are builtins.

Available options:
FUNCTION,
CUSTOM,
END_CALL,
PRESS_DIGIT,
TRANSFER_CALL
url
string<uri>
http_method
enum<string>

HTTP method for the tool's endpoint (default POST).

Available options:
GET,
POST,
PUT,
PATCH,
DELETE
headers
object
parameters
object

JSON Schema object describing the tool's parameters.

required_params
string[]
speak_during_execution
boolean
speak_after_execution
boolean
execution_message_description
string
transfer_prompt
string
subaccount_id
string

Target subaccount id. Prefer the X-Subaccount-Id header; this body field is a fallback.

location_id
string

Alias for subaccount_id (GHL location id).

Response

Success

data
object
required
request_id
string
required
error
null