Automated Alert Calls & SMS
Trigger real phone calls or text messages from any software, webhook, or script. Connect your timeclock, monitoring tools, CRM, or any system — let Audovo call the right people when something important happens.
Authentication
All API requests require an API key. Generate one in Dashboard → API Keys.
Pass your key in the Authorization header:
Authorization: Bearer ak_live_your_key_here
Alternatively append ?key=ak_live_xxx to the URL — useful on servers that strip Authorization headers.
Base URL
https://audovo.com/api/v1
All endpoints return Content-Type: application/json. Send request bodies as JSON with Content-Type: application/json.
POST /calls/notify — Trigger an Alert Call or SMS
The core endpoint. Fires a text-to-speech call, an SMS, or both simultaneously. The recipient picks up and hears your message, or receives it as a text — your choice.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | string | array | required | Phone number(s) to call/text. US 10-digit or E.164. Array of up to 10 numbers. |
| message | string | required* | Text to speak or send as SMS. Max 4,000 chars. *Not required if template_id provided. |
| action_type | string | optional | call (default), sms, or both. Controls whether a call, SMS, or both are sent. |
| template_id | string | optional | Use a saved template. Inline params override template defaults. |
| from | string | optional | Caller/sender ID. Must be an active Audovo number. Auto-selected by default. |
| voice | string | optional | alice (default), man, woman. Call only. |
| repeat | integer | optional | Times to repeat message. 1–5. Default: 1. Call only. |
| gather | boolean | optional | Ask recipient to press 1 to acknowledge. Logged in your dashboard. Call only. |
| send_sms | boolean | optional | Shorthand for action_type: "both". Pass true to add an SMS alongside a call. |
| source | string | optional | Label for your dashboard logs. E.g. timeclock_system. Max 100 chars. |
Call only (minimal)
curl -X POST https://audovo.com/api/v1/calls/notify \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{"to":"+15551234567","message":"Alert: No staff have clocked in.","source":"timeclock"}'
Call + SMS simultaneously
curl -X POST https://audovo.com/api/v1/calls/notify \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{ "to": ["+15551234567", "+15559876543"], "message": "Emergency: Server room temperature exceeded threshold.", "action_type": "both", "repeat": 2, "gather": true, "source": "server_monitor" }'
Response
{
"ok": true,
"calls": [
{
"to": "+15551234567",
"type": "both",
"call_sid": "CA9f4e5b2a...", // present when action_type includes "call"
"sms_sid": "SM7c3d8e1f...", // present when action_type includes "sms"
"status": "initiated",
"log_id": 42
}
]
}
GET /calls/templates — List Templates
Returns all saved templates. Create them in Dashboard → Automations or via API.
curl https://audovo.com/api/v1/calls/templates \
-H 'Authorization: Bearer ak_live_YOUR_KEY'
POST /calls/templates — Create Template
Save a reusable config. Your integration only needs to send the template_id at trigger time.
curl -X POST https://audovo.com/api/v1/calls/templates \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{ "name": "No Staff Clocked In", "message": "Alert: No staff have clocked in. Please call your manager immediately.", "action_type": "both", "voice": "alice", "repeat": 2, "gather": true }'
// Response { "ok": true, "template_id": "tpl_a3f8b2c1d4e5", "name": "No Staff Clocked In" }
POST /calls/templates — Delete Template
curl -X POST https://audovo.com/api/v1/calls/templates \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{"action":"delete","template_id":"tpl_a3f8b2c1d4e5"}'
Use Cases
Any system that can send an HTTP POST can trigger an Audovo alert. Here are common real-world scenarios your team can implement in minutes:
Timeclock — No Staff Alert
Timeclock detects nobody clocked in 15 min after open. Calls + texts the manager automatically.
"source": "timeclock_busybusy"
Security — After-Hours Motion
Door/motion sensor triggers a webhook. Owner receives a call immediately.
"gather": true
Server Monitoring
Datadog or UptimeRobot hits a webhook. On-call engineer gets called within seconds.
"action_type": "call"
Order Shipped SMS
Your CRM texts a customer the moment a shipping label is created.
"source": "shopify_webhook"
Shift Reminder
Scheduling software texts staff 1 hour before their shift — reducing no-shows.
"source": "scheduling_app"
Payment Failed
Billing system calls a key account before they churn when payment fails.
"gather": true
System Down
Monitoring calls + texts your entire on-call rotation at once.
"action_type": "both"
Appointment Reminder
CRM sends an SMS the morning of a scheduled appointment.
"language": "es-MX"
5-Minute Quickstart
Step 1 — Get an API key
Go to Dashboard → API Keys → Create Key. Copy the key — it starts with ak_live_.
Step 2 — Create a template
curl -X POST https://audovo.com/api/v1/calls/templates \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{"name":"Test Alert","message":"This is a test. Your alert system is working correctly.","gather":true}'
Step 3 — Trigger it
curl -X POST https://audovo.com/api/v1/calls/notify \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{"template_id":"tpl_YOUR_ID","to":"+1YOUR_NUMBER","source":"quickstart"}'
Your phone should ring within a few seconds. Check Dashboard → Automations → Trigger Log to see it logged.
Code Examples
curl -X POST https://audovo.com/api/v1/calls/notify \ -H 'Authorization: Bearer ak_live_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{ "to": "+15551234567", "message": "Alert: No staff have clocked in at your location.", "action_type": "both", "repeat": 2, "gather": true, "source": "my_timeclock_system" }'
import requests response = requests.post( "https://audovo.com/api/v1/calls/notify", headers={"Authorization": "Bearer ak_live_YOUR_KEY"}, json={ "to": "+15551234567", "message": "Alert: No staff have clocked in.", "action_type": "both", "source": "timeclock_system", } ) data = response.json() print(data["calls"][0]["call_sid"])
const res = await fetch('https://audovo.com/api/v1/calls/notify', { method: 'POST', headers: { 'Authorization': 'Bearer ak_live_YOUR_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ to: '+15551234567', message: 'Alert: No staff have clocked in.', action_type: 'both', source: 'timeclock_system', }), }); const data = await res.json(); console.log(data.calls[0].call_sid);
$ch = curl_init('https://audovo.com/api/v1/calls/notify'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode([ 'to' => '+15551234567', 'message' => 'Alert: No staff have clocked in.', 'action_type' => 'both', 'source' => 'timeclock_system', ]), CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ak_live_YOUR_KEY', 'Content-Type: application/json', ], ]); $data = json_decode(curl_exec($ch), true); curl_close($ch); echo $data['calls'][0]['call_sid'];
Zapier & Make (No-Code)
No code needed. Use Webhooks by Zapier or Make HTTP module:
- Create a Zap · Trigger: your timeclock/CRM/monitoring app
- Action: Webhooks by Zapier → POST
- URL: https://audovo.com/api/v1/calls/notify
- Headers: Authorization: Bearer ak_live_YOUR_KEY
- Body Type: JSON · Body: paste your payload with template_id
Receiving Status Webhooks
After a call completes, Twilio posts a status update. You can view all triggered calls and their status in Dashboard → Automations → Trigger Log, including whether the recipient pressed 1 to acknowledge.
Error Handling
{ "ok": false, "error": "Invalid phone number format.", "code": 400 }
| HTTP Code | Meaning |
|---|---|
| 400 | Bad request — missing or invalid field |
| 401 | Missing or invalid API key |
| 403 | Account suspended, or caller ID not owned by account |
| 404 | Template not found |
| 503 | Twilio credentials not configured |