Calls
WhatsApp calls, answered by your code
Answer and place WhatsApp voice and video calls in a browser, in server code, over SIP or with your own voice agent.
No recordings
- Raw PCM audio for your code
- 16 kHz
- Max call participants
- 32
- Concurrent calls per SIP trunk
- 500
Answer anywhere
Four places a call can land.
Claim a call for one participant, or share it so a person and a bot hear the same caller. Unanswered calls end as missed. Polymorfa never declines for you.
On both routes
One call API for both kinds of number.
The same SDK and webhooks work for Linked Devices and Meta Cloud API numbers. Each call reports what it supports, and the components hide the rest.
- Voice and video
- Group calls, invites and call links
- Separate video per participant
- One-to-one voice calls
- The person grants call permission first
- Inbound hosting is a setting you turn on
In the call
Everything a WhatsApp call can do.
Group calls, call links, reactions and raised hands on Linked Devices numbers, from the API or the SDK.
In your code
A voice agent in a dozen lines.
Bring your own speech recognition, model and voice. Polymorfa carries the call and runs no model for you.
import { createBrowserCalls, createClientTokenProvider } from "@polymorfa/browser";
import { CallSurface, DialPad, PolymorfaProvider } from "@polymorfa/react";
const calls = createBrowserCalls({
session: "my-number",
getClientToken: createClientTokenProvider(),
});
await calls.connect();
<PolymorfaProvider>
<CallSurface controller={calls.controller} exclusive={false} />
<DialPad controller={calls.controller} />
</PolymorfaProvider>;Voice library
Audio for every call.
Upload recordings or generate speech from text with your ElevenLabs or OpenAI key. Every clip converts to one format, so call campaigns play it the same way.
Call history
Every call on the record. No recordings.
Read stats, list call records or export them. Polymorfa never records audio or video and never stores the other party's number.
Plans
Calls included with every number.
Allowances reset each month. Extra outbound calls on a Standard number use 20 credits each.
| Number | Inbound calls a month | Outbound calls a month |
|---|---|---|
| Free | 5 | 5 |
| Standard | Unlimited | 50 |
| Pro | Unlimited | Unlimited |
API surface
The Calls API.
Control live calls through the Messaging API. Set up trunks, audio and history through the Platform API.
Calls
- POST
/Call a person, a group of people or a WhatsApp groupmessaging/ voip/ calls - POST
/Answer or joinmessaging/ voip/ calls/ {id}/ accept - POST
/Invite another personmessaging/ voip/ calls/ {id}/ participants - DELETE
/End for everyonemessaging/ voip/ calls/ {id}
In the call
- POST
/Ring a participant againmessaging/ voip/ calls/ {id}/ participants/ ring - POST
/Send or clear a reactionmessaging/ voip/ calls/ {id}/ reaction - POST
/Raise or lower a handmessaging/ voip/ calls/ {id}/ hand - POST
/Create a call linkmessaging/ voip/ call-links
Setup and history
- PUT
/Calling, conference mode and simultaneous callsplatform/ sessions/ {session}/ call-settings - POST
/Connect a PBXplatform/ sip-trunks - POST
/Generate speechplatform/ voice/ audio/ tts - GET
/Export call recordsplatform/ calls/ export
Webhook events
- Event
call.receivedA call is ringing - Event
call.acceptedSomeone answered - Event
call.participant_joinedA person joined the call - Event
call.endedThe call finished, with its duration
Start with a free number
Your first real number is free. Add more numbers on Pay-As-You-Go.