VoxLink.ai

API Reference

Create mid call tool

Create a new mid call tool

Updated 30 June 2026

This endpoint allows you to create a new mid call tool that can be used by your AI assistants to interact with external APIs during calls.

Body Parameters

The public API creates HTTP request tools. Automation Platform tools (which generate a linked flow) are created from the dashboard. Tool values support dynamic variables — use {param} for AI-extracted parameters in the URL, and {{variable}} (e.g. {{customer_phone}}) in the URL, header values, and static field values.

namestringrequired

Tool name — letters, numbers and underscores, starting with a letter or underscore (max 64 characters, e.g., get_weather, book_appointment)

descriptionstringrequired

Detailed explanation of when and how the AI should use this tool (max 255 characters)

endpointstringrequired

Valid URL of the API endpoint to call (max 2048 characters)

methodstringrequired

HTTP method: GET, POST, PUT, PATCH, or DELETE

body_formatstring

How the request body is encoded for write methods (POST/PUT/PATCH): json (default) or form (application/x-www-form-urlencoded)

timeoutinteger

Request timeout in seconds (1-30, default: 10)

headersarray

HTTP headers to send with the request

namestringrequired

  Header name

valuestringrequired

  Header value (max 2048 chars; supports `{{variable}}` substitution)

static_fieldsarray

Fixed key/value pairs always sent with the request (the AI never changes them)

keystringrequired

  Field key (max 64 chars)

valuestring

  Field value (max 2048 chars; supports `{{variable}}` substitution)

schemaarray

Parameters that the AI will extract from conversation and send to the endpoint

namestringrequired

  Parameter name (1-64 chars, must start with a letter or underscore, can contain letters, numbers and underscores)

typestringrequired

  Parameter type: `string`, `number`, `float`, or `boolean`

descriptionstringrequired

  Description to help AI understand how to extract this parameter (3-255 chars)

requiredboolean

  Whether the AI must collect this parameter. Optional parameters are only sent when a value was collected. Defaults to `false`.

Response fields

messagestring

Success message

dataobject

The created tool object

idinteger

  The unique identifier of the tool

namestring

  The name of the tool

descriptionstring

  Tool description

typestring

  Tool type: `http` or `automation`

endpointstring

  API endpoint URL

methodstring

  HTTP method

body_formatstring

  Request body encoding: `json` or `form`

timeoutinteger

  Request timeout in seconds

headersarray

  HTTP headers

static_fieldsarray

  Fixed key/value pairs always sent with the request

schemaarray

  Parameter schema

created_atstring

  ISO 8601 timestamp

updated_atstring

  ISO 8601 timestamp
{
  "message": "Tool created successfully",
  "data": {
    "id": 1,
    "name": "check_order_status",
    "description": "Use this tool to check the status of a customer's order.",
    "type": "http",
    "endpoint": "https://api.yourstore.com/orders/{order_id}/status",
    "method": "GET",
    "body_format": "json",
    "timeout": 10,
    "headers": [
      {
        "name": "Content-Type",
        "value": "application/json"
      },
      {
        "name": "Authorization",
        "value": "Bearer {{crm_key}}"
      }
    ],
    "static_fields": [
      {
        "key": "source",
        "value": "voxlink"
      },
      {
        "key": "caller",
        "value": "{{customer_phone}}"
      }
    ],
    "schema": [
      {
        "name": "order_id",
        "type": "string",
        "description": "The customer's order ID",
        "required": true
      },
      {
        "name": "amount",
        "type": "float",
        "description": "Order total as a decimal, e.g. 19.99",
        "required": false
      },
      {
        "name": "priority_order",
        "type": "boolean",
        "description": "Whether this is a priority order",
        "required": false
      }
    ],
    "created_at": "2025-10-10T12:00:00.000000Z",
    "updated_at": "2025-10-10T12:00:00.000000Z"
  }
}
{
  "message": "Tool name must start with a letter or underscore and contain only letters, numbers, and underscores (max 64 characters).",
  "errors": {
    "name": [
      "Tool name must start with a letter or underscore and contain only letters, numbers, and underscores (max 64 characters)."
    ]
  }
}
{
  "message": "You have reached your plan limit of 5 mid call tools. Please upgrade your plan to create more tools."
}

Attaching Tools to Assistants

After creating a tool, you need to attach it to an assistant to use it during calls. Tools are managed through the Assistant API:

  • Create Assistant - Use the tool_ids parameter to attach tools when creating an assistant
  • Update Assistant - Use the tool_ids parameter to add, remove, or replace tools on an existing assistant

Related guides