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 video file. Supported formats: MP4, 3GPP. Maximum size: 16 MB.
mediaIdRequired*ID of a previously uploaded video from media/upload. Use instead of mediaUrl for repeated sends or private files.
captionOptionalText caption displayed below the video. Maximum 1024 characters.

* Provide either mediaUrl or mediaId — exactly one is required.

File size: WhatsApp imposes a 16 MB limit on video messages. For longer videos, host on a streaming platform and send a link via message/sendText with previewUrl: true to generate a rich preview card instead.

Sample Configuration

{
  "resource": "message",
  "operation": "sendVideo",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.customerPhone }}",
  "mediaUrl": "https://cdn.example.com/tutorials/{{ $input.productModel }}-setup.mp4",
  "caption": "Setup guide for your {{ $input.productModel }}. Follow the steps shown and reply DONE when complete."
}

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 mediaId and mediaUrl are empty.
131053 (Meta)Video download failed — URL inaccessible or returned non-200.
131052 (Meta)Unsupported video format or file exceeds 16 MB.
131047 (Meta)24-hour window expired. Use a template with a video header component.

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.HBgLMTQxNTU1NTI2NzEVAgARGBIzRTI4QUY4NjhFMEI4NDMAA",
  "phoneNumberId": "123456789012345",
  "to": "14155552671",
  "status": "sent",
  "errorCode": null,
  "errorMessage": null,
  "rawResponse": "{\"messaging_product\":\"whatsapp\",\"contacts\":[{\"input\":\"14155552671\",\"wa_id\":\"14155552671\"}],\"messages\":[{\"id\":\"wamid.HBgLMTQxNTU1NTI2NzEVAgARGBIzRTI4QUY4NjhFMEI4NDMAA\"}]}"
}

Expression Reference

ValueExpressionNotes
Message ID{{ $output.sendVid.messageId }}Retain to react to or delete the video message.
Recipient{{ $output.sendVid.to }}Use for audit trail logging.
Status{{ $output.sendVid.status }}Branch on outcome in an IfCondition node.
Error detail{{ $output.sendVid.errorMessage }}Log on the error port for failure diagnostics.

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager. Never inline in configuration.
File size and formatOnly MP4 (H.264 video, AAC audio) and 3GPP are supported. Maximum 16 MB. Pre-validate file size in a Function node before calling this operation to fail fast with a clear error.
CDN and URL stabilityUse a CDN-hosted URL with no authentication requirement. Avoid signed URLs that expire in under 30 seconds — Meta's servers may take a few seconds to reach the URL after the API call.
24-hour windowVideo messages are free-form and subject to the 24-hour customer service window. Outside this window, use an approved template with a video header.
Bandwidth considerationsVideo messages consume significant mobile data. For users on metered connections, consider sending a thumbnail image with a link instead of a direct video for non-critical content.
Error portAlways wire the error port. Large files and CDN restrictions are the most common failure modes for video messages.

Examples

Product Demo on Enquiry

{
  "resource": "message",
  "operation": "sendVideo",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.leadPhone }}",
  "mediaId": "{{ $output.uploadDemo.mediaId }}",
  "caption": "See {{ $input.productName }} in action! This 60-second demo shows all key features. Reply INTERESTED to speak with our team."
}

The demo video is uploaded once at workflow start using media/upload. The mediaId is reused for every lead, avoiding repeated uploads and ensuring consistent delivery speed.

Setup Tutorial on Support Request

{
  "resource": "message",
  "operation": "sendVideo",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.customerPhone }}",
  "mediaUrl": "https://cdn.example.com/support/{{ $input.issueType }}-guide.mp4",
  "caption": "Step-by-step guide for: {{ $input.issueType }}\n\nIf this doesn't help, reply AGENT to speak with support."
}

A support triage workflow matches the customer's issue category to a library of tutorial videos and sends the relevant one. The URL pattern allows the workflow to select the correct video dynamically from the issue type.