Call a Customer
Place a call from a team member to a customer, on WhatsApp or on a phone line.
Places a call from a team member to a customer, on WhatsApp or on a phone line.
- WHATSAPP · VOIP: the reply carries credentials. Your app joins with them within 30 seconds, then the customer's WhatsApp rings.
- PSTN · DIRECT: no credentials. The team member's own phone rings first; when they pick up, the customer is dialled and the two are connected.
Not available yet
PSTN · VOIP and WHATSAPP · DIRECT are not available yet:
400 MODE_NOT_SUPPORTED.
Endpoint
POST https://public.doubletick.io/v1/call/person
Authentication
Include your API key in the Authorization header.
| Header | Value |
|---|---|
| Authorization | <your-api-key> |
| Content-Type | application/json |
NOTE
If you do not have your DoubleTick API Key, you can obtain it by following this guide link.
Request Body
| Field | Required | Notes |
|---|---|---|
channel | yes | WHATSAPP or PSTN (upper case). |
mode | yes | VOIP or DIRECT. |
from | yes | Your WhatsApp business number (WHATSAPP) or your phone-line number (PSTN). |
to | yes | The customer. They must already be a contact in your DoubleTick account. |
agentNumber | yes | The team member who talks. They need permission to call from the from number. |
whatsappNumber | no, PSTN only | The WhatsApp number whose chat the call is logged in. Defaults to the one mapped to the phone line. Refused on WHATSAPP. |
Example Request
A WhatsApp call:
curl -X POST https://public.doubletick.io/v1/call/person \
-H 'Authorization: <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{"channel": "WHATSAPP", "mode": "VOIP", "from": "<your WhatsApp number>", "to": "<customer number>", "agentNumber": "<team member number>"}'
A phone-line call:
curl -X POST https://public.doubletick.io/v1/call/person \
-H 'Authorization: <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{"channel": "PSTN", "mode": "DIRECT", "from": "<your phone-line number>", "to": "<customer number>", "agentNumber": "<team member number>"}'
Example Response
{
"success": true,
"message": "Call initiated",
"data": { ...the call... },
"credentials": { ...WhatsApp VOIP only... }
}
data is the call. Keep its callId for the other routes.
Error Responses
| Status | reason | Message | When |
|---|---|---|---|
| 401 | UNAUTHORIZED | Your organization does not have a calling license or add-on. Please contact [email protected] | A WhatsApp call, and WhatsApp calling is not on your plan. |
| 422 | — | Your number configuration is not valid. Please contact support at [email protected] | The from number is not a connected number of your organization. A number that cannot place calls gets its own message. |
| 400 | CALLING_NOT_SUPPORTED | Calling is not supported on this number. | WhatsApp calling is not available on the from number. |
| 403 | AGENT_NOT_PERMITTED | This team member cannot place calls from this number. | The team member has no calling permission on the from number. |
| 422 · 403 | — | whatsappNumber is not a connected WhatsApp number of your organization · This team member does not have access to WhatsApp channel <id> | PSTN: the whatsappNumber. |
| 403 | FORBIDDEN | PSTN calling is not enabled for this organization | PSTN calling is not on your plan. |
| 422 | — | Customer not found, and the customer and account checks | The customer is not a contact, is blocked, has not allowed calls (WhatsApp), or a messaging-tier or wallet limit. |
| 422 | — | User is already on a call · A call is already being placed | The team member is on a call, or another call for them is being placed. |
| 422 | — | WhatsApp calls cannot be joined right now | Temporary. Retry later. |
| 429 | TOO_MANY_REQUESTS | PSTN channel capacity reached for this organization | All your phone lines are busy. |
Rate Limit
60 a minute per organization. A PSTN call also counts in /v1/call/agent's limit of 10 a minute.
Updated about 1 hour ago
Did this page help you?

