WhatsApp Calling

Initiate outbound call

Initiates an outbound Business-Initiated Call. The Telnyx-side SIP leg is originated server-side (Option B: SIP-first). Telnyx INVITEs Meta directly over TLS:5061 with the SIP digest credentials we captured at calling-enablement time). No client-side SDP is required; pass only accountId and to.

To send the consumer the call-consent prompt instead of placing a call, pass action: "send_call_permission_request" (+ optional bodyText). The consumer must tap Allow in WhatsApp before start_call is permitted; Meta limits the prompt to 1 per consumer per 24h (2 per 7 days) and requires an open 24h service window.

Idempotency: send an Idempotency-Key header to make retries safe; same key + same body replays the original response instead of dialing (and billing) a second call.

Billing: Request; paid actions are priced in credits (see GET /v1/messaging/prices) · Rate limit: 60/min

post/v1/messaging/whatsapp/calls

Request

  • Base URL: https://apihub.co.il
  • URL: https://apihub.co.il/v1/messaging/whatsapp/calls
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Replay-safe: the same execution is returned instead of charging twice

X-Tagstring

Group calls into one job (e.g. one video) — see GET /v1/usage?tag=…

Request body

tostring required

Consumer wa_id (E.164, leading + optional)

action'send_call_permission_request'

Omit to place a call. Set to send the consent prompt instead.

bodyTextstring

Body text shown with the consent prompt (send_call_permission_request only).

accountIdstring required
forwardTostring

Per-call destination override. Same accepted shape as the number's stored forwardTo (tel:+E164, sip:..., wss://...).

recordOverrideboolean
biz_opaque_callback_datastring

Accepted for forward compatibility. Not currently echoed back in webhook payloads (SIP-first flow does not pass through Meta's Graph API where Meta would echo this).

Response

Completed

idstring

Execution id — stable across internal retries; use it with GET /v1/executions/{id}

status'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
operationstring
tagstring nullable

Your X-Tag, if sent

created_atstring date-time
completed_atstring date-time nullable
errorstring nullable

Changes

No recorded changes to this operation across all 2 revisions of this API.