API Endpoints

Complete reference for all available REST API endpoints with examples.

Numbers

List, search, purchase, update, and release tracking numbers.

GET    /api/v1/numbers              # List all numbers
GET    /api/v1/numbers/:id          # Get a single number
POST   /api/v1/numbers/search       # Search available numbers by area code
POST   /api/v1/numbers/purchase      # Purchase a number
PATCH  /api/v1/numbers/:id          # Update a number (rename, assign call flow)
DELETE /api/v1/numbers/:id          # Release a number

Numbers: Example

List all tracking numbers for your business:

curl -H "Authorization: Bearer cs_key_..." \
  https://callscaler.com/api/v1/numbers

# Response
{
  "data": {
    "numbers": [
      {
        "id": "uuid",
        "phone_number": "+15735551234",
        "friendly_name": "Google Ads",
        "type": "local",
        "call_flow_id": "uuid",
        "call_flow_name": "Main Flow",
        "group_id": "uuid",
        "group_name": "Paid Search",
        "status": "active",
        "created_at": "2026-01-15T08:00:00Z"
      }
    ],
    "total": 1
  }
}

Call Flows

Create and manage call routing flows.

GET    /api/v1/call-flows            # List all call flows
GET    /api/v1/call-flows/:id        # Get call flow details + steps
POST   /api/v1/call-flows            # Create a call flow
PUT    /api/v1/call-flows/:id        # Update a call flow
DELETE /api/v1/call-flows/:id        # Delete a call flow
GET    /api/v1/call-flows/:id/versions  # List version history

Calls

Access call logs with full attribution data, recordings, and AI transcriptions.

GET  /api/v1/calls                   # List calls
GET  /api/v1/calls/:id               # Get call details
GET  /api/v1/calls/:id/recording     # Download call recording (audio)
GET  /api/v1/calls/:id/transcription # Get AI transcription
GET  /api/v1/calls/export            # Export calls as CSV

Calls: Filters

The calls list endpoint supports query parameters to filter results:

  • `page` and `per_page` for pagination
  • `date_from` and `date_to` (ISO 8601 format)
  • `status` (answered, missed, voicemail)
  • `number_id` to filter by tracking number
  • `call_flow_id` to filter by call flow
  • `qualified=true` for qualified calls only

Calls: Example

Get the last 5 answered calls:

curl -H "Authorization: Bearer cs_key_..." \
  "https://callscaler.com/api/v1/calls?per_page=5&status=answered"

# Response
{
  "data": {
    "calls": [
      {
        "id": "uuid",
        "caller_number": "+13055551234",
        "tracking_number": "+15735559876",
        "destination_number": "+13055554567",
        "call_flow_name": "Google Ads",
        "status": "answered",
        "duration_seconds": 145,
        "qualified": true,
        "ai_score": 85,
        "utm_source": "google",
        "utm_medium": "cpc",
        "utm_campaign": "plumbing",
        "gclid": "abc123",
        "landing_page": "https://yoursite.com/plumbing",
        "has_transcription": true,
        "created_at": "2026-03-23T14:30:00Z"
      }
    ],
    "total": 1
  }
}

Dashboard Stats

Get aggregate call statistics for your business. Supports date range filtering with `date_from` and `date_to` query parameters.

GET  /api/v1/dashboard/stats
GET  /api/v1/dashboard/stats?date_from=2026-03-01&date_to=2026-03-31

# Response
{
  "data": {
    "total_calls": 342,
    "answered_calls": 285,
    "missed_calls": 41,
    "voicemail_calls": 16,
    "qualified_calls": 198,
    "unique_callers": 267,
    "total_minutes": 1240,
    "average_duration": 217,
    "active_numbers": 12,
    "balance_cents": 4500
  }
}

Call Flows: Example

Get a single call flow with its full step configuration:

curl -H "Authorization: Bearer cs_key_..." \
  https://callscaler.com/api/v1/call-flows/UUID

# Response
{
  "data": {
    "call_flow": {
      "id": "uuid",
      "name": "Google Ads",
      "steps": [
        {"type": "greeting", "message": "Thanks for calling"},
        {"type": "forward", "number": "+15735554567"}
      ],
      "settings": {
        "recording": true,
        "whisper": true,
        "press1": false
      },
      "version": 3,
      "assigned_numbers": 4,
      "created_at": "2026-01-10T08:00:00Z"
    }
  }
}

Voicemails

List voicemails and download recordings. The recording endpoint returns the audio file directly (not JSON).

GET  /api/v1/voicemails              # List voicemails
GET  /api/v1/voicemails/:id          # Get voicemail details
GET  /api/v1/voicemails/:id/recording  # Download audio (returns audio/mpeg)

SMS Conversations

List SMS messages and send texts through your tracking numbers.

GET   /api/v1/sms                    # List all SMS messages
POST  /api/v1/texts                  # Send a text message

# Send a text
curl -X POST -H "Authorization: Bearer cs_key_..." \
  -H "Content-Type: application/json" \
  -d '{"from_number_id": "uuid", "to": "+15735551234", "body": "Hello!"}' \
  https://callscaler.com/api/v1/texts

Number Groups

Organize tracking numbers into groups for reporting and bulk management.

GET    /api/v1/number-groups                    # List groups
GET    /api/v1/number-groups/bulk-stats          # Stats for all groups
POST   /api/v1/number-groups                    # Create a group
PUT    /api/v1/number-groups/:id                # Update a group
DELETE /api/v1/number-groups/:id                # Delete a group
POST   /api/v1/number-groups/:id/members        # Add numbers to group
DELETE /api/v1/number-groups/:id/members/:numId # Remove number from group

Number Pools (DNI)

Manage dynamic number insertion pools for website visitor-level tracking.

GET    /api/v1/number-pools           # List pools
POST   /api/v1/number-pools           # Create a pool
GET    /api/v1/number-pools/:id       # Get pool details
PUT    /api/v1/number-pools/:id       # Update a pool
DELETE /api/v1/number-pools/:id       # Delete a pool

Form Submissions

Access form tracking submissions captured by the CallScaler tracking script on your website.

GET  /api/v1/forms                    # List form submissions
GET  /api/v1/forms/:id               # Get submission details

API Keys

Manage your API keys programmatically. Requires admin role. The full key is only returned on creation and cannot be retrieved later.

GET    /api/v1/api-keys              # List your API keys (prefix only)
POST   /api/v1/api-keys              # Create a new key (returns full key once)
DELETE /api/v1/api-keys/:id          # Revoke a key

# Create a key
curl -X POST -H "Authorization: Bearer cs_key_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My CRM Integration"}' \
  https://callscaler.com/api/v1/api-keys

# Response (save the key immediately)
{
  "data": {
    "id": "uuid",
    "name": "My CRM Integration",
    "key": "cs_key_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
    "prefix": "cs_key_a1b2c3d4",
    "created_at": "2026-03-23T12:00:00Z"
  }
}