Ask a contact for permission to call them
Sends a call-permission request to a contact. You cannot place a WhatsApp call to someone who has not granted permission, so this is the step that unlocks outbound WhatsApp calling to them.
Two forms, selected by mode:
free_form(default) — an interactive permission-request message built fromtext. Subject to the same 24-hour customer service window as any free-form message.template— an already-approved template whose components include acall_permission_requestcomponent. Use this outside the 24-hour window.
The contact's answer arrives as the
whatsapp.call_permission.updated workspace webhook.
API-key scope: whatsapp.messages.
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/whatsapp/call-permissions/request" \ -H "Content-Type: application/json" \ -d '{ "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9", "wa_id": "254700000001" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9", "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9", "wa_id": "254700000001", "status": "string", "is_permanent": true, "expires_at": "2019-08-24T14:15:22Z", "last_requested_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}Get a contact's WhatsApp call permission GET
Returns whether a contact has granted permission for you to call them on WhatsApp. A contact with no recorded permission comes back as `no_permission` — absence is a meaningful answer here, not a 404. Pass `live=true` to additionally check with Meta and refresh the stored value. A failed live check degrades to the stored value rather than failing the request. **API-key scope:** `whatsapp.messages`.
Send a tap-to-call button message POST
Sends an interactive message carrying a call button, letting the contact start a WhatsApp call to you with one tap — the inbound counterpart to requesting permission to call them. `display_text` and `ttl_minutes` fall back to Meta's defaults ("Call Now", 10080 minutes / 7 days) when omitted. **API-key scope:** `whatsapp.messages`.