Get Account
path Parameters
phone_number_idGet Account › Responses
Successful Response
idorganization_idphone_number_iddisplay_phone_numberbusiness_account_idbusiness_account_namephone_number_namecreated_atupdated_atenable_messagingenable_audio_message_responseenable_callingis_activewebhook_verifiedinbound_webhook_secret_setUpdate Account
path Parameters
phone_number_idUpdate Account › Responses
Successful Response
idorganization_idphone_number_iddisplay_phone_numberbusiness_account_idbusiness_account_namephone_number_namecreated_atupdated_atenable_messagingenable_audio_message_responseenable_callingis_activewebhook_verifiedinbound_webhook_secret_setImport Account
Import Account › Request Body
token_codeOAuth authorization code from Meta Embedded Signup
phone_number_idWhatsApp phone number ID from Meta session event
business_account_idWABA ID from Meta session event
Import Account › Responses
Successful Response
idorganization_idphone_number_iddisplay_phone_numberbusiness_account_idbusiness_account_namephone_number_namecreated_atupdated_atenable_messagingenable_audio_message_responseenable_callingis_activewebhook_verifiedinbound_webhook_secret_setImport Account Manual
Import a WhatsApp account using a manually-provided System User token.
Import Account Manual › Request Body
access_tokenSystem User access token from Meta Business Settings
phone_number_idWhatsApp phone number ID from API Setup
business_account_idWhatsApp Business Account (WABA) ID
Import Account Manual › Responses
Successful Response
idorganization_idphone_number_iddisplay_phone_numberbusiness_account_idbusiness_account_namephone_number_namecreated_atupdated_atenable_messagingenable_audio_message_responseenable_callingis_activewebhook_verifiedinbound_webhook_secret_setSend Outbound Message
Send Outbound Message › Request Body
whatsapp_phone_number_idOur WhatsApp phone number ID
whatsapp_user_idRecipient's WhatsApp ID (E.164 phone number)
template_nametemplate_language_codeBody parameters for the template. Each item is {name, value}. name is '1'..'N' for positional templates or the placeholder identifier for named templates (e.g. 'customer_name'). Leave empty and supply template_body + dynamic_variables to have the server auto-resolve from the agent variable map.
Raw template body string (with {{placeholder}} markers) — supplied by the frontend after fetching the template definition from Meta's registry. When provided alongside dynamic_variables and an empty template_params, the server resolves placeholders from the agent variable map (named OR positional templates). Bridges the agent-side and Meta-side substitution moments.
Per-conversation runtime variable map. Used to fill template_body placeholders when template_params is empty, AND persisted onto Conversation.dynamic_variables so the agent's reply path picks them up after the contact responds. Mirrors the voice-call dispatch contract (POST /v1/voice-sessions/outbound).
Meta WABA category of this template — one of MARKETING, UTILITY, AUTHENTICATION, AUTHENTICATION_INTERNATIONAL, SERVICE, MARKETING_LITE. Pulled from Meta's template registry by the frontend before send. Used to bill the right rate at send time (per-category passthrough) and grouped by the daily true-up cron. Defaults to MARKETING (most expensive bucket) when omitted; truesup reconciles via manual_adjustment ledger.
Agent to associate with the resulting conversation
Send Outbound Message › Responses
Successful Response
wa_message_idstatusconversation_idSend Outbound Text
Free-text message inside the active 24h session window.
Send Outbound Text › Request Body
whatsapp_phone_number_idOur WhatsApp phone number ID
whatsapp_user_idRecipient's WhatsApp E.164 ID
bodyClient-supplied ID for optimistic UI reconciliation
Send Outbound Text › Responses
Successful Response
wa_message_idstatusconversation_idSend Outbound Voice
Voice note upload — multipart form. Backend transcodes to Opus-in-OGG.
Send Outbound Voice › Request Body
whatsapp_phone_number_idwhatsapp_user_idaudioSend Outbound Voice › Responses
Successful Response
wa_message_idstatusconversation_idInitiate Outbound Call
Initiate an outbound WhatsApp voice call.
Per Meta's call_permissions doc, business calls require user consent. Consent is obtained one of three ways:
- The user has already granted permanent permission (status="permanent")
- The user granted temporary permission inside its expiry window (status="temporary")
- We send a
call_permission_requesttemplate, the user accepts via the Accept button, and we receive acall_permission_replywebhook
We GET /call_permissions FIRST so we can:
- Skip the template send entirely when start_call.can_perform_action is already true — avoids the #138009 rate limit (max 1 send / 24h and 2 / 7d per business-consumer pair) on every repeat call to the same recipient
- Surface the per-action rate limit info to the operator instead of showing them a generic 400 from Meta
Initiate Outbound Call › Request Body
whatsapp_phone_number_idwhatsapp_user_idpermission_request_template_nameagent_idpermission_request_template_language_codeBody parameters for the call permission template (named or positional). Leave empty and supply template_body + dynamic_variables to have the server resolve placeholders from the agent variable map.
Raw template body string for the permission-request template. Supplied by the frontend after fetching the definition from Meta. When given, server resolves {{placeholder}} against dynamic_variables to build template_params.
Values for {{var}} placeholders in the agent's first_message and instructions. Persisted on the PendingCallIntent and applied at call placement time (which can be up to 24h after the permission request is sent). Same contract as POST /calls/outbound dynamic_variables.
Initiate Outbound Call › Responses
Successful Response
statusmessageGet Call Status
Get the status of a pending/placed outbound WhatsApp call.
path Parameters
phone_number_idintent_idGet Call Status › Responses
Successful Response
intent_idstatusrequested_atexpires_atBatch Outbound Call
Send permission-request templates to multiple recipients for outbound calls.
Batch Outbound Call › Request Body
whatsapp_phone_number_idrecipientsList of recipient WhatsApp IDs (E.164 phone numbers)
permission_request_template_nameagent_idpermission_request_template_language_codeBody parameters for the call permission template (named or positional). Same auto-resolve contract as InitiateCallRequest — supply template_body + dynamic_variables to fill from the agent map.
Raw template body for placeholder auto-resolution.
Per-conversation runtime variable map applied uniformly to every recipient in the batch. For per-recipient overrides, supply template_params directly.
Batch Outbound Call › Responses
Successful Response
totalsentfailedProxy Message Media
Stream media bytes (audio/image/video/document) for a stored WhatsApp message. Resolves Meta's expiring signed URL on every request and proxies the bytes back. Org-scoped via the parent conversation.
path Parameters
message_idProxy Message Media › Responses
Successful Response
