Telephony (Voice Calls)
What it is
Section titled “What it is”Wetel Telephony is a live voice call between a caller (a browser or an app) and a Wetel agent, carried over WebRTC with LiveKit. The caller talks, the agent talks back, and either side can interrupt.
On a call, the agent:
- speaks first, says it is an AI, and offers to hand over to a person;
- listens while it talks, so a caller can interrupt it (barge-in);
- answers with the agent’s published workflow, the same rules, guardrails, hard-locked response nodes and tools as the chat version of that agent;
- uses the same session and memory model as chat: a call is a session, and its text is stored like a chat transcript.
Under the hood each call is three steps in a loop: streaming speech recognition turns the caller’s speech into text, the agent’s workflow answers that text, and streaming speech synthesis speaks the reply. The recognition, language-model and voice providers are Wetel’s choice behind the agent and can be replaced; this documentation does not commit to any vendor for them.
Calls from an AI employee
Section titled “Calls from an AI employee”A workspace owner can make an AI employee phone their own number with the startOutboundCall mutation. It is a self-test: the destination must be the number on the owner’s profile (allowed prefixes +1 and +60 by default), it is off unless both the platform and the workspace switch are on, and every call has a hard maximum length of 15 to 300 seconds. Calls to other people are not available. See the reference for the call states and the errors.
Who it is for
Section titled “Who it is for”Teams that already have, or are building, a Wetel agent and want to try it by voice: an inbound enquiry line, a callback desk, a “talk to us” button in a web page or app. It is a pilot-stage capability for integrators who will test it with us, not yet a product to put in front of the public unattended.
What works today, what does not, what is next
Section titled “What works today, what does not, what is next”One table, three answers. “Staging” means the test environment, enabled on request; nothing in this section is in production.
Works today (staging, on request)
Section titled “Works today (staging, on request)”| Capability | Notes |
|---|---|
| Browser or app voice call to an agent over WebRTC (LiveKit) | A Wetel person runs the voice worker for an arranged test session |
Partner call-start API, sdkStartVoiceCall | In production the same call answers FORBIDDEN (“Voice calls are not enabled on this environment”) |
| Agent speaks first, says it is an AI, offers a person | The words come from the agent’s workflow, so they are only as good as the workflow you publish |
| Handing over to a person | Spoken offer only: the agent says someone will call back. There is no live transfer of the call |
| Barge-in: caller interrupts, agent stops, interrupted turn is cancelled | |
| Answers from the agent’s published workflow, with session and memory like chat | |
| Transcript | Live captions on the caller’s page; the conversation text is stored in the session, like a chat transcript |
| Per-key daily call cap and cleanup of calls nobody joined | 1,000 call requests per API key per UTC day by default; an unjoined call is closed as EXPIRED within about 15 minutes |
| Usage metering | Metered with the session (speech and model usage), as for chat |
| English | The only language tested on live calls so far |
Does not work today
Section titled “Does not work today”| Capability | Plain answer |
|---|---|
| Voice calls in production | Not available. Staging only, on request |
| Ordinary phone calls, inbound or outbound, including Malaysian (+60) numbers | Not available. Wetel has no phone number, no carrier connection and no phone-call (SIP) service running today. See the FAQ |
| WhatsApp calls | Not available. In preparation; it needs a media component that is not built yet |
| Joining a Google Meet, Zoom or Teams meeting as an AI participant | Not available. Research and design only. See the FAQ |
| Outbound calls to other people | Not available. Consented follow-ups and requested callbacks are at specification stage; cold sales calls are not offered (see controls and compliance). A self-test call to the owner’s own number is a pilot, see Calls from an AI employee |
| Call recording | Off. Wetel does not record call audio |
| Call records and per-call reports (duration, end reason, cost per call) | Not available to you yet. The session transcript and session usage are what you have |
| Per-call spending limits (longest call, calls at once, daily and monthly spend) | Not available to you yet |
| Malay, Chinese and mixed-language live calls | Not tested yet. Speech recognition and synthesis for English, Malay and Mandarin exist for voice messages; live calls have only been tested in English |
| A published per-minute price | None yet |
| Self-service: switching voice on for your workspace yourself, an always-on worker | Not available. Voice is enabled per test, with Wetel |
What is next (no dates promised)
Section titled “What is next (no dates promised)”- An always-on hosted voice worker, so a test does not need a Wetel person.
- Faster replies: faster speech and model providers and a streaming workflow path.
- Call records, per-call reports and per-call spending limits.
- WhatsApp calling through your own WhatsApp Business number.
- Ordinary inbound phone calls through a licensed telecom provider.
- Consented follow-ups and callbacks the person asked for (specification stage).
The order can change with what pilots show. See the roadmap for what each item needs.
Current measured numbers
Section titled “Current measured numbers”Measured on 2026-10-18 and 2026-10-19 from a laptop in Malaysia against the nearest LiveKit region (India South), with synthetic speech. Run-to-run noise is about 0.5 s. Real callers on real networks will differ.
| Measure | Today | Target for a human-feeling call |
|---|---|---|
| Reply time, prompt-only agent (end of caller speech to first agent audio) | about 2.6 to 3.7 s | about 1.5 s |
| Reply time through the partner API with a published workflow | about 3 to 5 s | about 1.5 s |
Workflow turn alone, with fast models on its llm nodes | about 1 to 2.8 s, median about 1.9 s | n/a |
| Speech-to-speech option (Gemini Live, no Wetel workflow on that call) | about 1.4 to 1.8 s (staging, 2026-11-04) | about 1.5 s |
The 1.5 s target is met only by the speech-to-speech option, which gives up the Wetel workflow for that call (instructions only: no workflow guardrail nodes, no tools, no Wetel session transcript; a preview model). With the workflow or the prompt-only agent it is not met today. The tuned prompt-only agent on the Malaysian demo worker now measures about 3.5 s (faster speech recognition and voice, 200 ms end-of-turn wait).
For the workflow and prompt-only paths the 1.5 s target is not met. A call feels like a slightly slow phone line, not like talking to a person. Where the time goes:
| Step | About |
|---|---|
| End-of-turn detection (floor) | 0.6 s |
| Language model, first token | 0.7 to 1.1 s |
| Speech synthesis, first audio byte | 0.35 s |
| Network | the rest |
Tuning the turn-taking settings barely changed the result. What did help was setting a fast modelOverride on the workflow’s llm nodes: a workflow whose nodes ran on the slower default provider took 2 to 12 s per turn; on a fast model it took about 2 s.
A media server in Malaysia (a measurement, not a product). On 2026-10-23 we measured a self-hosted media server in Malaysia against the LiveKit Cloud region in India, from a Malaysian laptop on Wi-Fi with synthetic traffic: the round trip through the media server was about 12 to 20 ms in our tests, against about 73 to 77 ms for LiveKit Cloud in India. That is roughly 60 ms saved per round trip, which is small next to a 3 to 5 s reply, so it does not by itself make calls feel faster. Calls today still go through LiveKit Cloud, and this is not offered as a service.
How a call runs
Section titled “How a call runs”sequenceDiagram participant S as Your server participant W as Wetel API participant P as Caller's page or app participant L as LiveKit participant V as Voice worker S->>W: sdkStartVoiceCall (X-Api-Key) W-->>S: livekitUrl, livekitToken, sessionId S-->>P: livekitUrl, livekitToken P->>L: join the room, publish microphone L->>V: dispatch worker into the room V-->>P: greeting (says it is an AI) loop each caller turn P->>V: caller speech V->>V: transcribe, run the agent's workflow V-->>P: reply, spoken sentence by sentence end Note over P,V: If the caller speaks while the agent talks, the agent stops and that turn is cancelledStep by step code is in the quickstart.
Pricing
Section titled “Pricing”Not set yet. Usage is metered with the session (speech and model usage), as for chat. A per-minute voice price will be published later; there are no numbers to quote today.
How to get access
Section titled “How to get access”Ask for a test session. We enable voice on your staging workspace, agree a time window, and run the worker for it. Send us the agent you want to test and a workflow you have made voice-safe (see the authoring guide).
Known limits
Section titled “Known limits”- The join token’s contents are readable by the caller’s browser (see security).
- Reply time is about 3 to 5 s today, well above the 1.5 s target.
- The 30-starts-a-minute workspace ceiling is counted per server process, so with several API instances the effective ceiling can be higher.
- A call that is started but never joined is closed as
EXPIREDwithin about 15 minutes of the request; until then its session shows as active. - Each API key can start at most 1,000 calls per UTC day by default (see limits).
- There are no call records or per-call reports yet; the session transcript is what you have.
- English first; Malay, Chinese and code-switching on live calls are not tested yet.
- Replies reach the voice layer per workflow turn, not token by token.
- A request for a person is a spoken offer of a callback; the call is not transferred.
- No phone number, no SIP, no WhatsApp calling and no meeting participation is offered.
Is it in production? No. Staging only, on request.
Can I call it from my own backend and web page without Wetel’s help? The API is self-service once voice is enabled for you, but a voice worker must be running for the room. Today Wetel runs it for arranged test sessions.
Can I call a phone number? Only as a Wetel-run demo on the test environment: Wetel can arrange a test call to a demo number so you can talk to an agent (see How a call flows). Phone numbers of your own, Malaysian numbers and production calls are not available yet. See the roadmap for WhatsApp and SIP.
Can my customers phone a Malaysian (+60) number and reach the agent, or can the agent call a +60 number? Not today, in either direction. Wetel does not hold phone numbers, has no connection to a telecom carrier, and runs no phone-call (SIP) service. Ordinary phone calls are planned to come through a licensed telecom provider, inbound first; there is no date. Until then, a voice call reaches the agent from a browser or an app.
Can the agent join our Google Meet, Zoom or Teams meeting? Not today. It is at research and design stage. The meeting platforms limit how a third-party AI can join and speak (some allow listening only, some need the host’s approval or put bots in the lobby), and everyone in the meeting would need to be told an AI is present and agree to it. We will not promise a meeting feature until those questions are settled.
Which languages work on a call? Live calls have been tested in English only. Speech recognition and synthesis for English, Malay and Mandarin are available for voice messages; live-call tests in Malay and Chinese have not been done yet.
Which agent answers? Any agent in your workspace with a published workflow. Make it voice-safe first.
Do you record calls? Not by default. See controls and compliance.
What does it cost? Metered with the session; no per-minute price is published yet.
Does it make outbound calls? Only as a pilot self-test on staging: an AI employee can phone the workspace owner’s own number (see Calls from an AI employee); nothing to other people. Wetel’s policy: no cold outbound sales calls, that is, calls to people who did not ask to hear from you. Follow-ups and callbacks for people who already have a relationship with you and agreed to be called (for example, someone who enquired and asked to be called back) are planned, at specification stage, with no date. See controls and compliance.
Pages in this section
Section titled “Pages in this section”- Quickstart: server and browser code.
sdkStartVoiceCallreference- Building a voice-safe workflow
- Pilot testing and acceptance
- Call controls, privacy and compliance
- Roadmap
- Why Wetel chose LiveKit: a sourced comparison.