Voice API: place and receive calls from your application
Start a call with one request, follow it status by status and receive every event through a signed webhook. Custom quote pricing.
Custom quote
A voice API lets your application start calls, receive them and control them without running telephony yourself. You send a request, and TELQIO sets up the call through the provider selected for that destination.
A call moves through readable statuses: ringing, connected, completed or failed. TELQIO shows the status as it is known and does not invent a failure cause the network did not report.
To bridge two parties, the API calls the first one, then the second, and connects them. A call flow can add a menu, business hours or a transfer.
How it flows
Practical uses
Calls from your application
A button in your interface starts a call from an agent to a customer.
Bridging two parties
Connect a buyer and a seller without either of them seeing the other's number.
Voice notifications
Alert a contact by phone when a critical event happens in your system.
A call log you can query
Query calls by project, with duration, status and billable duration.
Features
- Outbound and inbound calls by API
- Connecting two parties
- DTMF input, voice menus and conferences, depending on the provider
- Call statuses ringing, connected, completed and failed
- Signed webhooks for every call event
- Call log by project, with duration and billable duration
Limits to know
- Which call commands exist (DTMF, conference, transfer) depends on the provider selected for the destination.
- Calls to a country are possible only if that country is validated for outbound calling in your contract.
- Ringing, conversation and billable duration are three different things. An unanswered ring is not billed like a conversation.
- A call made of several technical segments can produce several usage lines, depending on the contract.
- The network does not always report the exact cause of a failure. In that case the status stays failed with no added explanation.
curl -X POST "https://api.example.test/v1/calls" \
-H "Authorization: Bearer tq_test_EXEMPLE" \
-H "Idempotency-Key: 7b1d2c4e-0000-4000-8000-000000000002" \
-H "Content-Type: application/json" \
-d '{ "from": "+33199001234", "to": "+33199001235", "project_id": "project_a" }'
# => { "id": "call_example", "status": "ringing", "simulated": true }
# History
curl "https://api.example.test/v1/calls?limit=20" \
-H "Authorization: Bearer tq_test_EXEMPLE"
# => { "data": [{ "id": "call_example", "direction": "outbound", "status": "completed",
# "duration_seconds": 42, "billable_seconds": 42, "project_id": "project_a" }],
# "next_cursor": null }Technical details
| Authentication | Bearer token, key scoped by project and environment |
|---|---|
| Create a call | POST /calls, Idempotency-Key required |
| Statuses | ringing, connected, completed, failed |
| Events | call.ringing, call.connected, call.completed, call.failed |
| Webhook signature | Telqio-Signature header, HMAC-SHA256, 300 s tolerance |
Frequently asked questions
Can I call every country?
No. Outbound calling works only to countries validated with the selected provider and included in your contract. You can check them in the country catalog.
Why does one call appear on several usage lines?
A call can include several technical segments, for example when bridging two parties. Depending on the contract, each segment can produce a line. The call log shows the detail.
How do I receive call events?
By webhook. Each request is signed and carries an event id you should deduplicate. Verify the signature before you process the content.
Related use cases
Documentation
Related services
Let's talk about your calls
Describe your destinations, expected volumes and use cases. We reply with a detailed quote.