TransportationDocumentedScanned

kallyai

Make phone calls via KallyAI API - an AI phone assistant that calls businesses on your behalf.

Share:

Installation

npx clawhub@latest install kallyai

View the full skill documentation and source below.

Documentation

KallyAI API Integration

KallyAI is an AI phone assistant that makes calls to businesses on behalf of users.

Complete Workflow

When a user asks to make a call:

Step 1: Gather Call Details

Collect from user:

  • Phone number to call (required)

  • What to accomplish - the task description (required)

  • Category: restaurant, clinic, hotel, or general (required)

  • For reservations: name, date, time, party size


Step 2: Authenticate User

Use the CLI OAuth flow:

This opens a login page. After authentication, the user is redirected to the localhost callback with tokens:

Start a local HTTP server to capture the callback and extract the tokens.

Step 3: Make the Call

Once authenticated, call the API:

POST 
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "submission": {
    "task_category": "general",
    "task_description": "Ask about store hours and availability",
    "respondent_phone": "+15551234567",
    "language": "en",
    "call_language": "en"
  },
  "timezone": "America/New_York"
}

Step 4: Report Results

Response contains:

{
  "call_id": "uuid",
  "status": "success",
  "highlights": "They have iPhone 15 for €800, good condition",
  "next_steps": "Call back to arrange pickup"
}

Status values: success, no_answer, busy, failed, voicemail, cancelled


CLI Commands Reference

Making Calls

kallyai -p "+15551234567" -t "Reserve a table for 4 at 8pm" \
  --category restaurant \
  --name "John Smith" \
  --party-size 4 \
  --date "2026-01-28" \
  --time "20:00"
OptionShortDescription
--phone-pPhone number (E.164 format)
--task-tWhat the AI should accomplish
--category-crestaurant, clinic, hotel, general
--language-len or es
--nameYour name (for reservations)
--businessBusiness name
--party-sizeParty size (restaurants)
--dateYYYY-MM-DD
--timeHH:MM (24-hour)

Account & Usage

kallyai --usage        # Show minutes/calls remaining
kallyai --subscription # Show subscription status
kallyai --billing      # Open Stripe billing portal

Call History

kallyai --history              # List recent calls
kallyai --call-info <ID>       # Get call details
kallyai --transcript <ID>      # Get conversation transcript

Authentication

kallyai --login      # Force re-authentication
kallyai --logout     # Clear saved credentials
kallyai --auth-status # Check if logged in

Quick Reference

Base URL: **CLI OAuth URL:**

Required fields for calls:

FieldDescription




task_categoryrestaurant, clinic, hotel, general
task_descriptionWhat AI should accomplish
respondent_phonePhone number in E.164 format (+1234567890)

Optional fields:

FieldDescription








business_nameName of business
user_nameName for reservation
appointment_dateYYYY-MM-DD
appointment_timeHH:MM (24-hour)
party_sizeNumber of people (1-50)
languageen or es
call_languageen or es

Example Requests

Restaurant reservation:

{
  "submission": {
    "task_category": "restaurant",
    "task_description": "Reserve table for 4 at 8pm",
    "respondent_phone": "+14155551234",
    "business_name": "Italian Bistro",
    "user_name": "John Smith",
    "party_size": 4,
    "appointment_date": "2026-01-28",
    "appointment_time": "20:00"
  },
  "timezone": "America/New_York"
}

Medical appointment:

{
  "submission": {
    "task_category": "clinic",
    "task_description": "Schedule dental checkup",
    "respondent_phone": "+14155551234",
    "user_name": "Jane Doe",
    "time_preference_text": "morning before 11am"
  },
  "timezone": "America/New_York"
}

Common Errors

CodeHTTPAction
quota_exceeded402User needs to upgrade at kallyai.com/pricing
missing_phone_number422Ask user for phone number
emergency_number422Cannot call 911/emergency services
country_restriction403Country not supported

Security

  • Token storage: ~/.kallyai_token.json with 0600 permissions
  • CSRF protection: State parameter validation
  • Localhost only: OAuth redirects only to localhost/127.0.0.1
  • Auto-refresh: Tokens refresh automatically when expired