When to Use
- Personalised voice messages: A sales workflow sends a personalised voice recording from an account manager to a high-value lead, creating a human connection that text cannot replicate.
- Recorded announcements: An HR workflow sends a recorded CEO announcement about a company milestone to all employee WhatsApp numbers simultaneously.
- Language-matched support: A multilingual support workflow sends pre-recorded audio explanations in the customer's language when a complex technical issue is better explained verbally.
- Podcast and content delivery: A media platform sends episode audio clips to subscribers who opted in to WhatsApp previews as a way to drive full-episode listens.
- Accessibility support: A government service workflow sends audio versions of important notices to users who indicated a preference for audio over written communication.
Configuration
Connection
| Field | Required | Description |
accessToken | Required | Permanent System User access token. Store in BizFirst Credentials Manager. |
phoneNumberId | Required | Numeric string ID of the sending WhatsApp Business phone number. |
apiVersion | Optional | Meta Graph API version. Defaults to v18.0. |
Operation
| Field | Required | Description |
to | Required | Recipient's phone number with country code, no + prefix (e.g. 14155552671). |
mediaUrl | Required* | Publicly accessible HTTPS URL to the audio file. Supported formats: AAC, MP4 (audio only), MPEG, AMR, OGG (OPUS codec only). Maximum size: 16 MB. Audio does not support captions. |
mediaId | Required* | ID of a previously uploaded audio file from media/upload. Use instead of mediaUrl for repeated sends or private files. |
* Provide either mediaUrl or mediaId — exactly one is required. Audio messages do not support captions.
OGG Opus for voice messages: Audio sent as OGG with the OPUS codec displays as a voice message waveform in WhatsApp (with a microphone icon), which recipients perceive as more personal than a regular audio file. Use this format when simulating a voice message experience.
Sample Configuration
{
"resource": "message",
"operation": "sendAudio",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"to": "{{ $input.recipientPhone }}",
"mediaUrl": "https://cdn.example.com/audio/announcements/{{ $input.announcementId }}.ogg"
}
Validation Errors
| Error | Cause |
accessToken is required | The accessToken field is empty. |
phoneNumberId is required | The phoneNumberId field is empty. |
to is required | The to field is empty. |
Either mediaId or mediaUrl is required | Both fields are empty. Provide exactly one. |
131053 (Meta) | Audio download failed — URL inaccessible. |
131052 (Meta) | Unsupported audio codec or file exceeds 16 MB. |
131047 (Meta) | 24-hour window expired. Audio cannot be sent via templates; use a text-based template with a link instead. |
Output
Success Port
| Field | Type | Description |
messageId | string | Unique WhatsApp message ID (wamid). |
phoneNumberId | string | The sending phone number ID. |
to | string | The recipient phone number. |
status | string | "sent" on success. |
errorCode | string | Empty on success. |
errorMessage | string | Empty on success. |
rawResponse | string | Full raw JSON from the Meta API. |
Error Port
| Field | Type | Description |
status | string | "failed" or "error". |
errorCode | string | Meta error code or BizFirst validation code. |
errorMessage | string | Human-readable error description. |
rawResponse | string | Raw API error response. |
Sample Output
{
"messageId": "wamid.HBgLMTQxNTU1NTI2NzEVAgARGBIxRTI4QUY0NjhFMEI4NDCAA",
"phoneNumberId": "123456789012345",
"to": "14155552671",
"status": "sent",
"errorCode": null,
"errorMessage": null,
"rawResponse": "{\"messaging_product\":\"whatsapp\",\"contacts\":[{\"input\":\"14155552671\",\"wa_id\":\"14155552671\"}],\"messages\":[{\"id\":\"wamid.HBgLMTQxNTU1NTI2NzEVAgARGBIxRTI4QUY0NjhFMEI4NDCAA\"}]}"
}
Expression Reference
| Value | Expression | Notes |
| Message ID | {{ $output.sendAudio.messageId }} | Store to react to or delete the audio message later. |
| Recipient | {{ $output.sendAudio.to }} | For delivery confirmation logging. |
| Status | {{ $output.sendAudio.status }} | Branch on "sent" vs "failed". |
| Error detail | {{ $output.sendAudio.errorMessage }} | Log on the error port for diagnostics. |
Node Policies & GuardRails
| Policy Area | Recommendation |
| Credential storage | Store the access token in BizFirst Credentials Manager. Never inline in configuration. |
| Format compatibility | Use OGG (Opus codec) for voice-note style delivery, or AAC for compatibility. MP3 is not supported by the WhatsApp Cloud API. Convert in a Function node if needed. |
| No captions | Audio messages do not support captions. If contextual text is needed, send a message/sendText immediately before or after the audio. |
| File size | Maximum 16 MB. Keep voice recordings concise. For longer content, split into multiple clips or host on a podcast platform and send a link. |
| 24-hour window | Audio is a free-form message type. Outside the customer service window, use a text or document template to re-engage before sending audio. |
| Privacy | Do not send audio containing personally identifiable information about third parties without their consent. Audio messages may be forwarded by recipients. |
Examples
Personalised Voice Greeting from Account Manager
{
"resource": "message",
"operation": "sendAudio",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"to": "{{ $input.clientPhone }}",
"mediaId": "{{ $output.uploadGreeting.mediaId }}"
}
The account manager records a personalised 20-second welcome message. A Function node uploads it via media/upload and the mediaId is passed here. A follow-up message/sendText node sends a text summary with contact details.
Multilingual Support Audio
{
"resource": "message",
"operation": "sendAudio",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"to": "{{ $input.customerPhone }}",
"mediaUrl": "https://cdn.example.com/support/{{ $input.language }}/{{ $input.topicCode }}.ogg"
}
A support workflow maps the customer's preferred language and issue category to a pre-recorded OGG audio clip. The URL pattern selects the correct file. The audio displays as a voice note waveform in WhatsApp.