---
title: "Create a custom tool"
method: POST
path: "/public/v1/tools"
tags: ["Custom Tools"]
---

# Create a custom tool

`POST /public/v1/tools`

Creates a custom tool (an API call tool). Requires a USER API key. WhatsApp template tools are not supported in the public API.

## Request body

- PublicToolCreateInput
  - `type` 'API_CALL'
  - `name` string, required
  - `description` string, required
  - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', required
  - `url` string, uri, required
  - `body` string — Raw request body template (typically a JSON string). Interpolate argument values with single braces, e.g. {contactName} (not double braces).
  - `arguments` object[]
    - `name` string, required
    - `description` string
    - `dataType` 'STRING' | 'NUMBER' | 'DECIMAL' | 'BOOLEAN', required — Argument type. Use STRING, NUMBER (covers decimals), or BOOLEAN. DECIMAL is accepted but not shown in the app UI — prefer NUMBER.
    - `required` boolean — Whether the caller must provide this argument. Defaults to true.
    - `defaultValue` string — Fallback value (as a string, coerced to dataType) used when the argument is omitted.
  - `headers` object[]
    - `key` string, required
    - `value` string, required
  - `queryParams` object[]
    - `key` string, required
    - `value` string, required

## Response `201`

Created tool

- CustomTool
  - `id` number, required
  - `name` string, required
  - `description` string, required
  - `createdAt` string, required
  - `updatedAt` string, required
  - `status` 'PAUSED' | 'ACTIVE' | 'DELETED', nullable
  - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', nullable
  - `url` string, nullable
  - `body` string, nullable
  - `arguments` object[], nullable
    - `name` string, required
    - `description` string, nullable
    - `dataType` 'STRING' | 'NUMBER' | 'DECIMAL' | 'BOOLEAN', required
    - `required` boolean, nullable
    - `defaultValue` string, nullable
  - `headers` object[], nullable
    - `key` string, required
    - `value` string, required
  - `queryParams` object[], nullable
    - `key` string, required
    - `value` string, required
  - `type` 'API_CALL' | 'WHATSAPP_TEMPLATE_MESSAGE', required

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/getfrontline/apis/public-api.md) · [All operations](https://skmtc.net/getfrontline/apis/public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getfrontline/public-api/revisions/9d33b6aad674/schema)
