Audovo Developer Platform
Incorporate the complete power of Audovo—cloud telephony, programmable IVRs, real-time WebRTC softphones, two-way SMS, automated alert calls, and voicemail transcription—into any custom application or CRM. Built with transparent cost translation so developers and resellers can track usage and automatically pass wholesale charges along to their customers.
Authentication & Scopes
All REST API requests require an API key generated in Dashboard → Developer API Keys. Pass your key via Bearer token, X-API-Key header, or URL query parameter:
Authorization: Bearer ak_live_your_key_here X-API-Key: ak_live_your_key_here
| Scope | Grants Access To |
|---|---|
| * | Full access to all resources (default for developer keys) |
| calls | Make calls, list logs, manage active audio streams, alert calls |
| sms | Send text messages, list inbound/outbound messages, conversation threads |
| numbers | List and update routing configuration of leased phone numbers |
| voicemails | Listen to voicemail audio, read AI transcripts, mark archived |
| contacts | Address book CRUD and CRM contact activities |
| billing | Inspect rates, real-time wallet deductions, and cost usage aggregations |
| webhooks | Manage webhooks, inspect delivery logs, send test events |
Base URL
https://audovo.com/api/v1
Cost Translation & Reseller Billing
Audovo is designed for software platforms, agencies, and SaaS developers who bundle voice & SMS services for their own end-clients. Every billable event in Audovo (voice calls, SMS segments, number leases) automatically translates costs so you can pass them along transparently or mark them up.
{
"event": "call.completed",
"data": {
"call_sid": "CA1a2b3c4d5e...",
"duration": 105,
"cost": {
"currency": "USD",
"billed_amount": 0.0400,
"rate_per_minute": 0.0200,
"duration_seconds": 105,
"billable_minutes": 2,
"unit_type": "minute",
"markup_suggestions": {
"cost_plus_20_pct": 0.0480,
"cost_plus_30_pct": 0.0520,
"cost_plus_50_pct": 0.0600
}
}
}
}
Interactive Wholesale → Retail Cost Calculator
Model your customer pass-through billing or SaaS profit margins with our live formula simulator:
GET /costs/rates — Telephony Rate Card
Inspect the live pricing rates applied to your account, current wallet balance, and overage rates.
GET /costs/usage — Usage Aggregation
Retrieve itemized seconds, billable minutes, SMS counts, and wallet deductions for any custom date range.
GET /calls — List Calls with Costs
Search and paginate historical calls with translated costs, duration, status, and recording URLs.
GET /calls/{id} — Retrieve Call & Audio
Fetch complete details for a single call leg by ID or Twilio Call SID.
POST /calls — Programmatic Outbound Call
Initiate an automated outbound phone call from your Audovo number to any client destination.
curl -X POST https://audovo.com/api/v1/calls \
-H "Authorization: Bearer ak_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "+18435551234",
"from": "+18435559876",
"contact_name": "Jane Smith"
}'
from audovo import Audovo client = Audovo(api_key="ak_live_xxxx") call = client.calls.create(to="+18435551234", from_number="+18435559876") print(call["call_sid"], call["status"])
const { Audovo } = require('./audovo-client.js'); const audovo = new Audovo('ak_live_xxxx'); const call = await audovo.calls.create({ to: '+18435551234', from: '+18435559876' }); console.log(call.call_sid);
require_once 'sdk/php/Audovo.php'; $audovo = new \Audovo\AudovoClient('ak_live_xxxx'); $call = $audovo->createCall('+18435551234', '+18435559876'); echo $call['call_sid'];
POST /calls/notify — Automated Alert Calls & SMS
Trigger text-to-speech alert phone calls, SMS notifications, or both simultaneously to critical staff.
POST /sms — Send Outbound SMS
Send an SMS text message from your Audovo leased number to any mobile phone.
curl -X POST https://audovo.com/api/v1/sms \
-H "Authorization: Bearer ak_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "+18435551234",
"body": "Hello from Audovo! Your scheduled delivery is ready."
}'
GET /sms — List Message Logs
Retrieve message history with segment counting and calculated costs.
GET /sms/threads — Conversation Threads
Get messages grouped by contact with last message previews and unread counts for building messaging UIs.
GET /numbers — List Active Leased Numbers
List all phone numbers assigned to your Audovo organization with routing modes and assigned IVR menus.
PUT /numbers/{id} — Update Number Settings
Modify friendly names, routing mode (normal, voicemail, contacts_only), or notification emails.
GET /numbers/available — Search Numbers to Purchase
Search available local and toll-free numbers by area code or digit pattern.
GET /voicemails — List Voicemails
Retrieve recorded voicemail messages with audio stream links, duration, and read/archive filters.
GET /voicemails/{id} — Voicemail Audio & Transcription
Retrieve single voicemail details with AI text transcription and audio recording URL.
PATCH /voicemails/{id} — Update Read / Archive State
DELETE /voicemails/{id} — Delete Voicemail & Purge Audio
GET /contacts — Address Book & CRM Contacts
Search contacts by name, company, or phone number with full pagination.
POST /contacts — Create Contact
GET & PUT /settings — Account Telephony Settings
Manage office timezone, voicemail greetings, email notifications, and holiday closures.
GET /ivr — IVR Menus & Graph Trees
Inspect active daytime and after-hours IVR menus with keypress routing branches.
Real-time Webhook Infrastructure
Audovo streams real-time HTTP POST events to your servers whenever telephony or messaging events occur. All payloads include timestamps, unique event IDs, and automated cost translation.
| Event Type | Description |
|---|---|
| call.started | Inbound call detected on a leased number before ringing |
| call.answered | Call picked up by an agent, IVR menu, or softphone |
| call.completed | Call ended; includes recording URL and cost translation |
| voicemail.received | New voicemail audio message recorded and saved |
| voicemail.transcribed | AI voicemail transcription finished and available |
| sms.received | Incoming text message received on any Audovo number |
| sms.sent | Outbound SMS dispatched with segment cost breakdown |
| contact.created | New contact added to the address book |
HMAC-SHA256 Signature Verification
Each webhook request includes an X-Audovo-Signature header computed using your webhook's secret key (whsec_...):
X-Audovo-Signature: sha256=a1b2c3d4e5f6...
import hmac, hashlib def verify_audovo_webhook(raw_body_bytes, signature_header, secret): expected = "sha256=" + hmac.new(secret.encode('utf-8'), raw_body_bytes, hashlib.sha256).hexdigest() return hmac.compare_digest(signature_header, expected)
const crypto = require('crypto'); function verifyAudovoWebhook(rawBodyBuffer, signatureHeader, secret) { const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBodyBuffer).digest('hex'); return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected)); }
function verify_audovo_webhook($rawBody, $signatureHeader, $secret) { $expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret); return hash_equals($signatureHeader, $expected); }
Managing Webhooks via API
Register new endpoints dynamically or send an instant test event with POST /api/v1/webhooks/{id}.
GET /webhooks/deliveries — Webhook Audit Logs
Inspect real-time HTTP response status codes, execution duration in milliseconds, and response payloads for debugging your integration.
Official Python SDK
Install or include sdk/python/audovo.py. Fully typed with zero external dependencies:
from audovo import Audovo client = Audovo("ak_live_xxxx") # Fetch rates & calculate markup rates = client.costs.get_rates() markup = client.costs.calculate_markup(wholesale_cost=0.04, markup_percent=35) # Send SMS client.sms.send(to="+18435551234", body="Your code is 4920")
Official PHP SDK
Drop sdk/php/Audovo.php into your project:
require_once 'sdk/php/Audovo.php'; $audovo = new \Audovo\AudovoClient('ak_live_xxxx'); $calls = $audovo->listCalls(['direction' => 'inbound']);
Universal JavaScript Client
Use sdk/v1/audovo-client.js in Node.js or browser:
const { Audovo } = require('./audovo-client.js'); const audovo = new Audovo('ak_live_xxxx'); const numbers = await audovo.numbers.list();
Click-to-Call Website Embed
Add a "Call Us" floating button or automated callback modal to any site with one line of HTML:
<script src="https://audovo.com/sdk/v1/embed-click-to-call.js"
data-api-key="ak_live_xxxx"
data-phone="+18435551234"
data-label="Call Our Team"
data-theme="dark"></script>
"Text Us" SMS Chat Bubble Embed
Allow website visitors to send an SMS to your team directly from your homepage:
<script src="https://audovo.com/sdk/v1/embed-sms.js"
data-api-key="ak_live_xxxx"
data-label="Text Us"
data-position="bottom-left"></script>