Skip to main content
POST
/
v1
/
tools
Create an API tool
curl --request POST \
  --url https://api-sandbox.featherhq.com/v1/tools \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "name": "<string>",
  "description": "<string>",
  "tool_type": "api_call",
  "configuration": {
    "url": "<string>",
    "method": "GET",
    "headers": [
      {
        "key": "<string>",
        "value": "<string>",
        "secure": false
      }
    ],
    "query_params": [
      {
        "key": "<string>",
        "value": "<string>",
        "secure": false
      }
    ],
    "body": {},
    "timeout": 30,
    "variables": [
      {
        "name": "<string>",
        "type": "str",
        "description": "<string>",
        "required": false
      }
    ],
    "retry": {
      "max_retries": 0,
      "base_delay_seconds": 1,
      "max_delay_seconds": 30,
      "jitter": true
    }
  },
  "transfer_target": {
    "destination": "<string>",
    "mode": "cold"
  },
  "response_schema": {
    "field_mappings": [
      {
        "path": "<string>",
        "alias": "<string>"
      }
    ]
  },
  "input_defaults": {},
  "metadata": {}
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "description": "<string>",
  "active_revision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "active_revision": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "tool_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "name": "<string>",
    "description": "<string>",
    "status": "<string>",
    "created_by": "<string>",
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "default_count": 123,
    "pinned_count": 123,
    "stale_input_fields": [
      "<string>"
    ],
    "merged_input_preview": {},
    "configuration": {
      "url": "<string>",
      "method": "GET",
      "headers": [
        {
          "key": "<string>",
          "value": "<string>",
          "secure": false
        }
      ],
      "query_params": [
        {
          "key": "<string>",
          "value": "<string>",
          "secure": false
        }
      ],
      "body": {},
      "timeout": 30,
      "variables": [
        {
          "name": "<string>",
          "type": "str",
          "description": "<string>",
          "required": false
        }
      ],
      "retry": {
        "max_retries": 0,
        "base_delay_seconds": 1,
        "max_delay_seconds": 30,
        "jitter": true
      }
    },
    "transfer_target": {
      "destination": "<string>",
      "mode": "cold"
    },
    "response_schema": {
      "field_mappings": [
        {
          "path": "<string>",
          "alias": "<string>"
        }
      ]
    },
    "has_secrets": false,
    "input_defaults": {}
  },
  "metadata": {}
}

Authorizations

x-api-key
string
header
required

Body

application/json
name
string
required
description
string | null
tool_type
enum<string>
default:api_call
Available options:
api_call,
call_transfer
configuration
APICallConfiguration · object

Configuration for an API_CALL tool, stored in Tool.configuration.

Supports {{variable}} placeholders in url, headers, and body that are resolved at execution time from the tool's input variables and runtime metadata (via {{metadata.key}}).

transfer_target
TransferTargetInput · object

Operator-supplied config for a shared call_transfer target (ENG, voice).

The reusable cold-transfer destination. Mirrors the storage-facing fields of :class:~src.shared.transfer_contracts.TransferTargetConfig; the request layer only checks shape/mode here, while destination validity (E.164 or sip: URI) is enforced at the service layer via :func:~src.custom_tools.api._shared.transfer_target.validate_transfer_target_config so a bad destination surfaces as a clean 422. The label / when-to-use are carried on the Tool's name / description, not here.

response_schema
ResponseFieldSelector · object

Defines which fields to extract from a tool response.

input_defaults
Input Defaults · object
metadata
Metadata · object

Response

Successful Response

id
string<uuid>
required
organization_id
string<uuid>
required
name
string
required
description
string | null
required
tool_type
enum<string>
required
Available options:
api_call,
call_transfer
active_revision_id
string<uuid> | null
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
active_revision
ToolRevisionResponse · object
metadata
Metadata · object