API Reference

Integrate HelixPhone with your systems using webhooks, call recording uploads, and CRM screen pops.

Sections

1. Status Change Webhook

Sends a POST request to your configured endpoint on every status change. This is the primary integration point for real-time call monitoring, wallboards, and analytics.

Configuration

  • Settings > Webhook Endpoint URL: The URL to receive POST requests
  • Settings > Webhook API Key: Optional Bearer token for authentication

Request Format

Method: POST
Content-Type: application/json
Authorization: Bearer <API Key>
Timeout: 10 seconds
Retry: Once after 1 second on failure

Payload Example

{
  "event":         "status_change",
  "status":        "on_call",
  "direction":     "inbound",
  "remote_number": "4169987587",
  "remote_name":   "John Doe",
  "extension":     "1001",
  "call_id":       "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "timestamp":     "2026-02-17T17:48:16.0000000Z",
  "duration":      0
}

Status Values

Status Direction When
available null Phone registers successfully
ringing inbound/outbound Call arrives or you dial out
on_call inbound/outbound Call is answered
hold inbound/outbound Call placed on hold
available inbound/outbound Call ends (duration populated)
offline null Phone unregisters

2. CRM Lookup Integration

Automatically opens a URL in the default browser when an incoming call is answered.

URL Format

Use {phone} as a placeholder for the caller's phone number:

https://crm.company.com/search?phone={phone}

The phone number is URL-encoded automatically. Special characters like +, (, ), and spaces are properly escaped.

3. Call Recording Upload

HelixPhone can automatically upload call recordings to your server via HTTP POST.

Recording Format

  • Format: WAV (16-bit PCM, mono, 8000 Hz)
  • Size: ~960 KB per minute
  • Filename: {TO}_{FROM}_{YYYY}_{MM}_{DD}_{HH}_{mm}_{EPOCH_MS}.wav

Upload Request

Method: POST
Content-Type: multipart/form-data
Authorization: Bearer <API Key>
Field name: file
Retry: Up to 3 attempts

4. Configuration Reference

All settings are stored in: %LOCALAPPDATA%\HelixPhone\settings.json

Full Example

{
  "Sip": {
    "Server": "sip.provider.com",
    "Port": 5060,
    "Transport": "UDP",
    "Username": "1001",
    "Password": "secret"
  },
  "Webhook": {
    "EndpointUrl": "https://your-server.com/webhook",
    "ApiKey": "your-secret"
  },
  "Recording": {
    "Enabled": true,
    "UploadUrl": "https://your-server.com/recordings",
    "ApiKey": "your-secret"
  },
  "Crm": {
    "Enabled": true,
    "LookupUrl": "https://crm.company.com/search?phone={phone}"
  }
}