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

API request
Ringing
Connected
Completed
Webhook event

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.
Fictional example: start an outbound call. The call is a simulation until a provider is configured.
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

AuthenticationBearer token, key scoped by project and environment
Create a callPOST /calls, Idempotency-Key required
Statusesringing, connected, completed, failed
Eventscall.ringing, call.connected, call.completed, call.failed
Webhook signatureTelqio-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.