ClawCall API

ClawCall API as documented publicly: 20 operations. Contract generated from the documentation by API Evangelist (2026-11-04); not the provider's own document.

Operations 20

POST /assistant POST /assistant #
GET /balance GET /balance #
POST /call POST /call #
POST /call/{id}/hangup End a call #
GET /call/{id}/recording Get a call recording #
DELETE /me/call-preferences Reset call settings #
PUT /me/call-preferences PUT /me/call-preferences #
GET /me/calls List recent calls #
DELETE /me/webhook Delete webhook configuration #
GET /me/webhook Get webhook configuration #
PUT /me/webhook PUT /me/webhook #
GET /me/webhook/deliveries GET /me/webhook/deliveries Recent calls with each event's status, attempts, and last error. #
POST /me/webhook/deliveries/{callId}/resend POST /me/webhook/deliveries/:call_id/resend Sends one event again. #
DELETE /me/webhook/headers/{name} Remove a custom webhook header #
PUT /me/webhook/headers/{name} Add or replace a custom webhook header #
POST /me/webhook/rotate-secret Rotate webhook signing secret #
POST /me/webhook/test POST /me/webhook/test Sends a signed webhook.test event and returns your endpoint's answer. #
POST /phone-number POST /phone-number #
POST /v1/calls POST /v1/calls #
GET /v1/calls/{callId} Bland AI Alternative: ClawCall vs Bland Pricing 2026 #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clawcall-dev:clawcall-dev-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clawcall-dev-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: ClawCall API
  version: '2026-11-04'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-04: 20 operation(s) read from 5 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; ClawCall has published no machine-readable contract that the
    pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 7
    documentation: 13
    pages-with-code: 4
    pages-read: 5
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-04'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://clawcall.dev/ai-phone-call-api
  - https://clawcall.dev/vs/vapi
  - https://clawcall.dev/docs
  - https://clawcall.dev/vs/retell
  - https://clawcall.dev/vs/bland
servers:
- url: https://api.clawcall.dev
paths:
  /assistant:
    post:
      operationId: post_assistant
      tags:
      - Assistant
      summary: POST /assistant
      x-source: https://clawcall.dev/vs/vapi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAssistantRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAssistantResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.vapi.ai/assistant  -H \"Authorization: Bearer $VAPI_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"name\": \"Store caller\",\n \"model\": {\n \"provider\": \"openai\",\n \"model\": \"gpt-4o\",\n \"messages\": [{ \"role\"\
          : \"system\", \"content\": \"Ask whether the store has 10mm hex keys in stock and when it closes today.\" }]\n },\n \"voice\": { \"\
          provider\": \"11labs\", \"voiceId\": \"your-voice-id\" }"
  /balance:
    get:
      operationId: get_balance
      tags:
      - Balance
      summary: GET /balance
      x-source: https://clawcall.dev/docs
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl Copy curl https://api.clawcall.dev/balance -H "X-Api-Key: $CLAWCALL_API_KEY" Limits Calls go to US +1 numbers only, and
          every call opens with an English recording notice. Trial and Unlimited accounts place one outbound call at a time on shared lines. A
          second call while one is running returns 409 concurrent_call_limit . Wait for the current call to finalize before placing the next.
          Anonymous '
  /call:
    post:
      operationId: post_call
      tags:
      - Call
      summary: POST /call
      x-source: https://clawcall.dev/ai-phone-call-api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCallRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.clawcall.dev/call  -H 'Content-Type: application/json'  -H 'X-Api-Key: clawcall_sk_...'  -d '{\n \"\
          to\": \"+1XXXXXXXXXX\",\n \"task\": \"Call the pharmacy and ask whether my refill is ready for pickup\",\n \"voice\": \"chris\"\n }'\
          \ Replace clawcall_sk_... with a server-side API key, and keep it out of client code, prompts, and public repositories. Poll until lifecycle\
          \ is finalized . The e"
  /call/{id}/hangup:
    post:
      operationId: post_call_id_hangup
      tags:
      - Call
      summary: End a call
      x-source: https://clawcall.dev/docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCallIdHangupResponse'
      x-evidence:
        kind: documentation
  /call/{id}/recording:
    get:
      operationId: get_call_id_recording
      tags:
      - Call
      summary: Get a call recording
      x-source: https://clawcall.dev/docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCallIdRecordingResponse'
      x-evidence:
        kind: documentation
  /me/call-preferences:
    delete:
      operationId: delete_me_call_preferences
      tags:
      - Me
      summary: Reset call settings
      x-source: https://clawcall.dev/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteMeCallPreferencesResponse'
      x-evidence:
        kind: documentation
    put:
      operationId: put_me_call_preferences
      tags:
      - Me
      summary: PUT /me/call-preferences
      x-source: https://clawcall.dev/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutMeCallPreferencesRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl Copy curl -X PUT https://api.clawcall.dev/me/call-preferences  -H \"Content-Type: application/json\"  -H \"X-Api-Key: $CLAWCALL_API_KEY\"\
          \  -d '{\n \"voice\": \"sarah\",\n \"personality\": \"Alex, a calm assistant calling on behalf of Jordan Lee.\",\n \"greeting\": \"\
          Hi, this is Alex calling on behalf of Jordan Lee.\",\n \"warm_greeting\": true\n }' Reserved numbers and inbound calls A reserved number\
          \ gives your acc"
  /me/calls:
    get:
      operationId: get_me_calls
      tags:
      - Me
      summary: List recent calls
      x-source: https://clawcall.dev/docs
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Default 25, max 200.
      - name: direction
        in: query
        required: false
        schema:
          type: string
        description: '"outbound" or "inbound".'
      - name: since
        in: query
        required: false
        schema:
          type: string
        description: ISO time; only calls ended at or after this time.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMeCallsResponse'
      x-evidence:
        kind: documentation
  /me/webhook:
    delete:
      operationId: delete_me_webhook
      tags:
      - Me
      summary: Delete webhook configuration
      x-source: https://clawcall.dev/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteMeWebhookResponse'
      x-evidence:
        kind: documentation
    get:
      operationId: get_me_webhook
      tags:
      - Me
      summary: Get webhook configuration
      x-source: https://clawcall.dev/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMeWebhookResponse'
      x-evidence:
        kind: documentation
    put:
      operationId: put_me_webhook
      tags:
      - Me
      summary: PUT /me/webhook
      x-source: https://clawcall.dev/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutMeWebhookRequest'
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutMeWebhookResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl Copy curl -X PUT https://api.clawcall.dev/me/webhook  -H "Content-Type: application/json"  -H "X-Api-Key: $CLAWCALL_API_KEY"  -d
          ''{ "url": "https://example.com/clawcall/webhook", "headers": { "Authorization": "Bearer your-endpoint-token" } }'''
  /me/webhook/deliveries:
    get:
      operationId: get_me_webhook_deliveries
      tags:
      - Me
      summary: GET /me/webhook/deliveries Recent calls with each event's status, attempts, and last error.
      x-source: https://clawcall.dev/docs
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /me/webhook/deliveries/{callId}/resend:
    post:
      operationId: post_me_webhook_deliveries_callId_resend
      tags:
      - Me
      summary: POST /me/webhook/deliveries/:call_id/resend Sends one event again.
      x-source: https://clawcall.dev/docs
      parameters:
      - name: callId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMeWebhookDeliveriesCallidResendRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /me/webhook/headers/{name}:
    delete:
      operationId: delete_me_webhook_headers_name
      tags:
      - Me
      summary: Remove a custom webhook header
      x-source: https://clawcall.dev/docs
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteMeWebhookHeadersNameResponse'
      x-evidence:
        kind: documentation
    put:
      operationId: put_me_webhook_headers_name
      tags:
      - Me
      summary: Add or replace a custom webhook header
      x-source: https://clawcall.dev/docs
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutMeWebhookHeadersNameRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutMeWebhookHeadersNameResponse'
      x-evidence:
        kind: documentation
  /me/webhook/rotate-secret:
    post:
      operationId: post_me_webhook_rotate_secret
      tags:
      - Me
      summary: Rotate webhook signing secret
      x-source: https://clawcall.dev/docs
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMeWebhookRotateSecretResponse'
      x-evidence:
        kind: documentation
  /me/webhook/test:
    post:
      operationId: post_me_webhook_test
      tags:
      - Me
      summary: POST /me/webhook/test Sends a signed webhook.test event and returns your endpoint's answer.
      x-source: https://clawcall.dev/docs
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /phone-number:
    post:
      operationId: post_phone_number
      tags:
      - Phone Number
      summary: POST /phone-number
      x-source: https://clawcall.dev/vs/vapi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostPhoneNumberRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostPhoneNumberResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://api.vapi.ai/phone-number  -H "Authorization: Bearer $VAPI_API_KEY"  -H "Content-Type: application/json"  -d
          ''{ "provider": "vapi", "assistantId": "your-assistant-id", "numberDesiredAreaCode": "415" }'''
  /v1/calls:
    post:
      operationId: post_v1_calls
      tags:
      - Calls
      summary: POST /v1/calls
      x-source: https://clawcall.dev/vs/bland
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1CallsRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1CallsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.bland.ai/v1/calls  -H \"Authorization: Bearer $BLAND_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"phone_number\": \"+15551234567\",\n \"task\": \"Ask whether the store has 10mm hex keys in stock and when it closes today.\"\
          \n }'"
  /v1/calls/{callId}:
    get:
      operationId: get_v1_calls_callId
      tags:
      - Calls
      summary: 'Bland AI Alternative: ClawCall vs Bland Pricing 2026'
      x-source: https://clawcall.dev/vs/bland
      parameters:
      - name: callId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1CallsCallidResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    PostAssistantRequest:
      type: object
      properties:
        name:
          type: string
        model:
          type: object
          properties:
            provider:
              type: string
            model:
              type: string
            messages:
              type: array
              items:
                type: object
                properties:
                  role:
                    type: string
                  content:
                    type: string
        voice:
          type: object
          properties:
            provider:
              type: string
            voiceId:
              type: string
    PostAssistantResponse:
      type: object
      properties:
        call_id:
          type: string
        status:
          type: string
    PostCallRequest:
      type: object
      properties:
        to:
          type: string
        task:
          type: string
        voice:
          type: string
    PostCallIdHangupResponse:
      type: object
      properties:
        success:
          type: boolean
          description: True when the hangup request succeeded.
        message:
          type: string
          description: Message such as "Call already ended" if applicable.
    GetCallIdRecordingResponse:
      type: object
      properties:
        redirect:
          type: string
          description: 302 redirect to a temporary recording URL.
    DeleteMeCallPreferencesResponse:
      type: object
      properties:
        reset:
          type: boolean
          description: True when preferences were reset.
    PutMeCallPreferencesRequest:
      type: object
      properties:
        voice:
          type: string
        personality:
          type: string
        greeting:
          type: string
        warm_greeting:
          type: boolean
    GetMeCallsResponse:
      type: object
      properties:
        calls:
          type: array
          description: Array of call objects without _meta.
        recordingWindowMinutes:
          type: integer
          description: Window length for recording availability.
    DeleteMeWebhookResponse:
      type: object
      properties:
        deleted:
          type: boolean
          description: True when the webhook was removed.
    GetMeWebhookResponse:
      type: object
      properties:
        url:
          type: string
          description: Configured endpoint URL or null.
        secret:
          type: string
          description: Signing secret or null.
        events:
          type: array
          description: List of enabled events.
        headers:
          type: array
          description: Custom headers with masked values.
    PutMeWebhookRequest:
      type: object
      properties:
        url:
          type: string
        headers:
          type: object
          properties:
            Authorization:
              type: string
    PutMeWebhookResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            action:
              type: object
              properties:
                type:
                  type: string
                url:
                  type: string
                sign_in_url:
                  type: string
                description:
                  type: string
            quota:
              type: object
              properties:
                used_seconds:
                  type: integer
                remaining_seconds:
                  type: integer
                limit_seconds:
                  type: integer
                tier:
                  type: string
    PostMeWebhookDeliveriesCallidResendRequest:
      type: object
      properties:
        event:
          type: string
          description: event name, e.g., "call.completed"
      required:
      - event
    DeleteMeWebhookHeadersNameResponse:
      type: object
      properties:
        deleted:
          type: boolean
          description: True when the header was removed.
    PutMeWebhookHeadersNameRequest:
      type: object
      properties:
        value:
          type: string
          description: Header value.
      required:
      - value
    PutMeWebhookHeadersNameResponse:
      type: object
      properties:
        header:
          type: object
          description: Saved header with name and masked value.
    PostMeWebhookRotateSecretResponse:
      type: object
      properties:
        secret:
          type: string
          description: New signing secret.
    PostPhoneNumberRequest:
      type: object
      properties:
        provider:
          type: string
        assistantId:
          type: string
        numberDesiredAreaCode:
          type: string
    PostPhoneNumberResponse:
      type: object
      properties:
        call_id:
          type: string
        status:
          type: string
    PostV1CallsRequest:
      type: object
      properties:
        phone_number:
          type: string
        task:
          type: string
    PostV1CallsResponse:
      type: object
      properties:
        status:
          type: string
        call_id:
          type: string
    GetV1CallsCallidResponse:
      type: object
      properties:
        call_id:
          type: string
          description: Identifier of the call
        status:
          type: string
          description: Current status of the call (e.g., success)
        completed:
          type: boolean
          description: Whether the call has completed
        answered_by:
          type: string
          description: Entity that answered the call (e.g., human, voicemail)
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
security:
- apiKey: []
tags:
- name: Assistant
- name: Balance
- name: Call
- name: Calls
- name: Me
- name: Phone Number