Portal Community

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token. Store in BizFirst Credentials Manager.
phoneNumberIdRequiredNumeric string ID of the sending WhatsApp Business phone number.
apiVersionOptionalMeta Graph API version. Defaults to v18.0.

Operation

FieldRequiredDescription
toRequiredRecipient's phone number with country code, no + prefix (e.g. 14155552671).
mediaUrlRequired*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.
mediaIdRequired*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

ErrorCause
accessToken is requiredThe accessToken field is empty.
phoneNumberId is requiredThe phoneNumberId field is empty.
to is requiredThe to field is empty.
Either mediaId or mediaUrl is requiredBoth 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

FieldTypeDescription
messageIdstringUnique WhatsApp message ID (wamid).
phoneNumberIdstringThe sending phone number ID.
tostringThe recipient phone number.
statusstring"sent" on success.
errorCodestringEmpty on success.
errorMessagestringEmpty on success.
rawResponsestringFull raw JSON from the Meta API.

Error Port

FieldTypeDescription
statusstring"failed" or "error".
errorCodestringMeta error code or BizFirst validation code.
errorMessagestringHuman-readable error description.
rawResponsestringRaw 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

ValueExpressionNotes
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 AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager. Never inline in configuration.
Format compatibilityUse 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 captionsAudio messages do not support captions. If contextual text is needed, send a message/sendText immediately before or after the audio.
File sizeMaximum 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 windowAudio is a free-form message type. Outside the customer service window, use a text or document template to re-engage before sending audio.
PrivacyDo 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.