> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create tool

> Creates a callable tool for agents.



## OpenAPI

````yaml /api-reference/openapi.json post /tool
openapi: 3.1.0
info:
  title: SuperU API
  description: >-
    Comprehensive API reference for SuperU voice agents, calls, tools, contacts,
    audiences, and knowledge bases.
  version: 1.0.0
servers:
  - url: https://voip-middlware.superu.ai
    description: Production
security:
  - superUApiKey: []
tags:
  - name: Calls
    description: Create and analyze calls.
  - name: Agents
    description: Create, list, import, update, and delete agents.
  - name: Agent Versions
    description: Manage versions for existing agents.
  - name: Phone Numbers
    description: Fetch phone numbers available in your account.
  - name: Call Logs
    description: Retrieve call history with filters.
  - name: Tools
    description: Create and manage callable tools.
  - name: Folders
    description: Organize agents into folders.
  - name: Contacts
    description: Create and list contacts.
  - name: Audiences
    description: Create and manage audiences and contacts.
  - name: Knowledge Base
    description: Upload and manage knowledge bases.
  - name: Campaigns
    description: Create and manage outbound campaigns with automated workflows.
paths:
  /tool:
    post:
      tags:
        - Tools
      summary: Create tool
      description: Creates a callable tool for agents.
      operationId: createTool
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ToolCreateRequest'
            example:
              name: Tool 1
              type: apiRequest
              url: https://www.google.com
              description: hehe
              method: GET
              body:
                type: object
                properties:
                  new:
                    type: string
                    description: '2'
              headers:
                type: object
                properties:
                  new:
                    type: string
                    description: '2'
              timeoutSeconds: 20
        description: Request body for Create tool.
      responses:
        '201':
          description: Tool created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
              example:
                tool_uuid: 0a425650-60ac-4fd4-9554-5579844ce3e5
                user_id: user_32UrXxvrVxWSYp1dGLsPdElDtRt
                type: apiRequest
                createdAt: '2026-05-05T06:20:17.548305'
                updatedAt: '2026-05-05T06:20:17.548307'
                method: GET
                url: https://www.google.com
                name: Tool 1
                description: hehe
                timeoutSeconds: 20
                body: '{...}'
                headers: '{...}'
                messages: []
                backoffPlan:
                  type: fixed
                  maxRetries: 0
                  baseDelaySeconds: 1
                  excludedStatusCodes:
                    - 400
                    - 401
                    - 403
                    - 404
                variableExtractionPlan: null
                rejectionPlan: null
                _id: 69f98c2185578cdac8d33010
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '501':
          $ref: '#/components/responses/NotImplemented'
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request POST \\
              --url https://voip-middlware.superu.ai/tool \\
              --header 'superU-Api-Key: YOUR_SUPERU_API_KEY' \\
              --data '{
              "name": "Tool 1",
              "type": "apiRequest",
              "url": "https://www.google.com",
              "description": "hehe",
              "method": "GET",
              "body": {
                "type": "object",
                "properties": {
                  "new": {
                    "type": "string",
                    "description": "2"
                  }
                }
              },
              "headers": {
                "type": "object",
                "properties": {
                  "new": {
                    "type": "string",
                    "description": "2"
                  }
                }
              },
              "timeoutSeconds": 20
            }'
        - lang: python
          label: Python
          source: |-
            from superu import SuperU

            client = SuperU("YOUR_SUPERU_API_KEY")

            payload = {
                "name": "Tool 1",
                "type": "apiRequest",
                "url": "https://www.google.com",
                "description": "hehe",
                "method": "GET",
                "body": {
                    "type": "object",
                    "properties": {
                        "new": {
                            "type": "string",
                            "description": "2"
                        }
                    }
                },
                "headers": {
                    "type": "object",
                    "properties": {
                        "new": {
                            "type": "string",
                            "description": "2"
                        }
                    }
                },
                "timeoutSeconds": 20
            }

            response = client.tools.create(**payload)
            print(response)
components:
  schemas:
    ToolCreateRequest:
      allOf:
        - type: object
          required:
            - name
            - type
            - url
            - description
            - method
          properties:
            name:
              type: string
              description: Tool name
              example: Tool 1
            type:
              type: string
              description: Tool type
              example: apiRequest
            url:
              type: string
              description: Request URL
              example: https://www.google.com
            description:
              type: string
              description: What the tool does
              example: hehe
            method:
              type: string
              description: HTTP method
              example: GET
            body:
              type: object
              description: Request body schema.
              additionalProperties: true
              example:
                type: object
                properties:
                  new:
                    type: string
                    description: '2'
            headers:
              type: object
              description: Request header schema.
              additionalProperties: true
              example:
                type: object
                properties:
                  new:
                    type: string
                    description: '2'
            timeoutSeconds:
              type: integer
              description: Request timeout in seconds
              example: 20
      description: Tool Create Request schema.
    GenericResponse:
      type: object
      properties:
        status:
          type: string
          description: Indicates if the request was successful.
          example: success
        message:
          type: string
          description: A descriptive message about the result of the request.
          example: Request completed successfully
        data:
          type: object
          additionalProperties: true
          description: The payload of the response, if any.
      additionalProperties: true
      description: A generic response schema for successful API calls.
    ErrorResponse:
      type: object
      required:
        - message
      properties:
        status:
          type: string
          example: error
          description: Status value.
        message:
          type: string
          example: Invalid request payload
          description: Message value.
        error:
          type: string
          example: Bad Request
          description: Error value.
        code:
          type: string
          example: BAD_REQUEST
          description: Code value.
      additionalProperties: true
      description: Error Response schema.
  responses:
    BadRequest:
      description: Bad Request - invalid parameters or payload.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: error
            code: BAD_REQUEST
            message: Request validation failed.
    Unauthorized:
      description: Unauthorized - missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: error
            code: UNAUTHORIZED
            message: Invalid or missing superU-Api-Key.
    NotFound:
      description: Not Found - requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: error
            code: NOT_FOUND
            message: Resource not found.
    InternalServerError:
      description: Internal Server Error - unexpected backend error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: error
            code: INTERNAL_SERVER_ERROR
            message: An unexpected server error occurred.
    NotImplemented:
      description: >-
        Not Implemented - this action is not available in the current
        deployment.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: error
            code: NOT_IMPLEMENTED
            message: This endpoint is not implemented for your workspace.
  securitySchemes:
    superUApiKey:
      type: apiKey
      in: header
      name: superU-Api-Key
      description: Your SuperU API key.

````