SONIQ Developer Platform

Build on the
world's first
telephony AI platform

100+ REST endpoints across 15 resource types — plus the first ever MCP server for telephony. Let any AI assistant make calls, search call memory, manage users, devices and queues in real time.

100
REST Endpoints
15
Resource Types
24
MCP Tools
15
Auth Scopes
<300ms
Screen Pop SLA
Why this matters

Calls + vectors + MCP = something no one else has

Every call SONIQ processes generates an AI transcript, summary, and vector embedding. The search_call_memory MCP tool exposes this semantic store to any AI.

"Has this customer complained about billing before?"

Searches 6 months of transcripts via embeddings

"Who called about the Manchester office this week?"

Semantic vector search, not keyword matching

"What did we promise this customer last time?"

Full caller memory with AI summaries <100ms

Authentication

Scoped API keys with fine-grained permissions. OAuth 2.0 for Claude.ai and the Anthropic Directory.

🔑 API Key

Generate in Settings → API Keys. Pass as Bearer token.

bash
curl https://api.soniqlabs.co.uk/api/v1/calls \
  -H "Authorization: Bearer soniq_live_YOUR_KEY"

🔐 OAuth 2.0

For Claude.ai and MCP clients. Standard authorization code + PKCE.

text
Authorize: https://mcp.soniqlabs.co.uk/oauth/authorize
Token:     https://mcp.soniqlabs.co.uk/oauth/token
Discovery: https://mcp.soniqlabs.co.uk/.well-known/oauth-authorization-server
Client ID: soniq-mcp

Permission Scopes (15)

calls:read

View calls, CDR, transcripts, recordings, analytics, queue status

calls:write

Make calls, hold, transfer, DTMF, notes, tags

contacts:read

Lookup contacts, screen pops, CRM fan-out

contacts:write

Create and update contacts, CRM sync

memory:read

Caller AI memory, semantic transcript search, insights

users:admin

Add, update, remove agents, SIP credentials, DND, devices, webhooks

numbers:admin

Search, order, assign and release phone numbers

flows:admin

Create and manage call flows, audio files

queues:read

View queues and live stats

queues:admin

Create queues, manage members and strategies

sms:read

View SMS messages and conversation threads

sms:write

Send outbound SMS messages

partners:read

View child orgs, users, stats (aggregate only)

partners:write

Create, update, suspend child orgs and their users

supervisor:write

Monitor live calls silently

MCP Server

Connect any AI in 30 seconds

24 tools, OAuth 2.0 + PKCE, SSE transport. The first telephony MCP server.

jonnyweareone/soniq-mcp
🌐Claude.ai / Remote
text
https://mcp.soniqlabs.co.uk/sse

SSE endpoint — add via Claude.ai Integrations

💻Claude Code
text
claude mcp add --transport http soniq \
  https://mcp.soniqlabs.co.uk/sse

CLI — add once, available in every project

🖥️Claude Desktop
text
{
  "mcpServers": {
    "soniq": {
      "command": "npx",
      "args": ["-y", "soniq-mcp"]
    }
  }
}

claude_desktop_config.json

All 24 Tools

get_live_calls
calls:read

Active calls right now

get_call_history
calls:read

CDR with AI summaries

get_call_detail
calls:read

Transcript + recording URL

get_missed_calls
calls:read

Unanswered calls for callback

get_queue_status
calls:read

Live queue depth + agent status

make_call
calls:write

Initiate outbound call

add_call_note
calls:write

Log note → syncs to CRM

lookup_contact
contacts:read

Phone/email → multi-CRM fan-out

get_screen_pop
contacts:read

Enriched caller data <300ms

create_contact
contacts:write

New contact + CRM sync

update_contact
contacts:write

Update contact + CRM sync

get_caller_memory
memory:read

Full AI call history for a number

search_call_memory
memory:read

Semantic vector search

get_call_analytics
memory:read

Volume, rates, durations

list_users
users:admin

Agents + live presence

create_user
users:admin

Add agent + provision SIP

update_user
users:admin

Update role / extension

remove_user
users:admin

Offboard + release extension

search_numbers
numbers:admin

Available numbers by area/prefix

allocate_number
numbers:admin

Order + assign to flow

list_numbers
numbers:admin

Org numbers + flow assignments

list_call_flows
flows:admin

IVR, hunt groups, AI agents

create_call_flow
flows:admin

Build routing flow

monitor_call
supervisor:write

Silent supervisor listen

REST API

Full REST API — 100 endpoints

Base URL: https://api.soniqlabs.co.uk

bash
# Get live calls
curl https://api.soniqlabs.co.uk/api/v1/calls/live \
  -H "Authorization: Bearer soniq_live_YOUR_KEY"

# Queue live stats
curl https://api.soniqlabs.co.uk/api/v1/queues/QUEUE_ID/stats \
  -H "Authorization: Bearer soniq_live_YOUR_KEY"

# Send an SMS
curl -X POST https://api.soniqlabs.co.uk/api/v1/sms \
  -H "Authorization: Bearer soniq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"+447700900123","from":"+441612345678","body":"Your appointment is confirmed."}'

# Partner: create a child org
curl -X POST https://api.soniqlabs.co.uk/api/v1/partners \
  -H "Authorization: Bearer soniq_live_YOUR_PARTNER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Ltd","plan":"professional","admin_email":"admin@acme.co.uk"}'
GET/api/v1/calls
GET/api/v1/calls/live
GET/api/v1/calls/:id
POST/api/v1/calls
POST/api/v1/calls/:id/end
POST/api/v1/calls/:id/hold
POST/api/v1/calls/:id/unhold
POST/api/v1/calls/:id/transfer
POST/api/v1/calls/:id/dtmf
POST/api/v1/calls/:id/note
POST/api/v1/calls/:id/tag
GET/api/v1/calls/:id/recording
Webhooks

Real-time push events

Register endpoints to receive instant push notifications for calls, SMS, voicemail, users, and numbers. Each webhook is HMAC-signed with a secret you generate on creation.

call.startedcall.answeredcall.endedcall.missedcall.recordingcall.transcriptionvoicemail.receivedsms.receivedsms.sentuser.creatednumber.allocatedqueue.call_waiting
javascript
// Verify SONIQ webhook signature
import { createHmac } from 'crypto';

app.post('/webhook', (req, res) => {
  const sig = req.headers['x-soniq-signature'];
  const expected = createHmac('sha256', process.env.WEBHOOK_SECRET)
    .update(JSON.stringify(req.body))
    .digest('hex');

  if (sig !== expected) return res.status(401).send('Bad signature');

  const { event, data } = req.body;
  if (event === 'call.ended') {
    // data.call_id, data.from_number, data.talk_duration_seconds
    // data.recording_url, data.ai_summary
  }
  res.sendStatus(200);
});

Code examples

Screen pop on inbound ring

javascript
const res = await fetch(
  'https://api.soniqlabs.co.uk/api/v1/contacts/lookup?phone=+447700900123',
  { headers: { 'Authorization': 'Bearer YOUR_KEY' } }
);
// { name:"Jane Smith", company:"Acme Ltd",
//   source:"hubspot", lookup_ms:187 }

Semantic call history search

javascript
const res = await fetch(
  'https://api.soniqlabs.co.uk/api/v1/memory/search',
  { method:'POST',
    headers:{ 'Authorization':'Bearer YOUR_KEY', 'Content-Type':'application/json' },
    body: JSON.stringify({ query:'customer complained about invoice' }) }
);
const { results } = await res.json();

Create child org (partner)

javascript
await fetch('https://api.soniqlabs.co.uk/api/v1/partners', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_PARTNER_KEY',
             'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Acme Ltd', plan: 'professional',
    admin_email: 'admin@acme.co.uk',
    call_recording_enabled: true,
  }),
});

Queue live stats

javascript
const res = await fetch(
  'https://api.soniqlabs.co.uk/api/v1/queues/QUEUE_ID/stats',
  { headers: { 'Authorization': 'Bearer YOUR_KEY' } }
);
// { callers_waiting:3, agents_available:2,
//   today: { answered:47, abandoned:3, answer_rate:94 } }

Start building today

Generate an API key, connect the MCP server, and you're live in minutes.