Output Ports
| Port | Triggered When | Description |
| success | API accepted the request | The WhatsApp Business API accepted the message or media operation. For send operations, acceptance does not guarantee delivery — the recipient must be online. |
| error | API or configuration error | The request failed — invalid phone number, invalid template, expired access token, rate limit exceeded, or network failure. |
| timeout | sendAndWait only | The TimeoutSeconds limit elapsed before a reply was received. The workflow resumes on this port. |
message/sendText, sendImage, sendVideo, sendAudio, sendDocument, sendSticker, sendLocation, sendContacts — Output
| Field | Type | Description |
message_id | string | WhatsApp message ID in wamid format (e.g. wamid.HBgL...). Use this for markAsRead or sendReaction. |
status | string | Initial status, typically accepted. Final delivery statuses (sent, delivered, read) arrive via webhook events from Meta. |
timestamp | string | ISO 8601 timestamp of when the Meta API accepted the message. |
to | string | The recipient phone number used in the request. |
message/sendInteractiveButtons, sendInteractiveList — Output
| Field | Type | Description |
message_id | string | WhatsApp message ID for the sent interactive message. |
status | string | Initial status, typically accepted. |
timestamp | string | ISO 8601 timestamp. |
message/sendTemplate — Output
| Field | Type | Description |
message_id | string | WhatsApp message ID for the sent template message. |
status | string | Initial status, typically accepted. |
timestamp | string | ISO 8601 timestamp. |
to | string | Recipient phone number. |
{
"message_id": "wamid.HBgLMTYxNTU1MjQ3OTgVAgASGBQzQUJGNkZCODYyMUEwMjJBODU4NgA=",
"status": "accepted",
"timestamp": "2026-05-23T09:15:03Z",
"to": "+14155552671"
}
message/sendAndWait — Suspend/Resume Behaviour
message/sendAndWait sends the Text message to the recipient, then suspends the workflow execution. The workflow run is paused — no further nodes execute — until one of the following occurs:
- Reply received: The recipient sends any WhatsApp message in response. The workflow resumes on the success port with the reply data in the output.
- Timeout: The configured TimeoutSeconds elapses with no reply. The workflow resumes on the timeout port. No reply fields are populated.
sendAndWait Output Fields (on success / reply received)
| Field | Type | Description |
sent_message_id | string | The wamid of the message that was sent to initiate the wait. |
reply_from | string | The phone number that replied, in E.164 format. |
reply_text | string | The text content of the reply message. |
reply_message_id | string | The wamid of the reply message received. |
reply_timestamp | string | ISO 8601 timestamp of when the reply was received. |
reply_type | string | Type of the reply: text, image, audio, document, interactive (button tap or list selection). |
reply_button_id | string | For interactive button replies: the id of the button that was tapped. |
reply_list_row_id | string | For interactive list replies: the id of the row that was selected. |
message/markAsRead — Output
| Field | Type | Description |
success | bool | true if the message was marked as read successfully. |
message_id | string | The message ID that was marked as read. |
message/sendTypingIndicator — Output
| Field | Type | Description |
success | bool | true if the typing indicator was sent successfully. |
media/upload — Output
| Field | Type | Description |
media_id | string | The WhatsApp media ID assigned to the uploaded file. Use this ID in subsequent send operations instead of a URL. |
media/download — Output
| Field | Type | Description |
file_data | string | Base64-encoded file content. Decode downstream for processing or storage. |
mime_type | string | MIME type of the downloaded file (e.g. image/jpeg, application/pdf). |
file_size | integer | File size in bytes. |
media/getInfo — Output
| Field | Type | Description |
mime_type | string | MIME type of the media file. |
file_size | integer | File size in bytes. |
url | string | Temporary download URL for the media file (expires quickly — use media/download to retrieve file data for storage). |
sha256 | string | SHA256 hash of the file content for integrity verification. |
template/list — Output
| Field | Type | Description |
templates | array | Array of template objects, each with id, name, status, category, language, and components. |
paging_cursor | string | Cursor for the next page of results. Pass as After in the next template/list call. |
profile/getContact — Output
| Field | Type | Description |
name | string | Display name of the WhatsApp contact. |
phone | string | Phone number in E.164 format. |
profile_picture_url | string | URL of the contact's profile picture (if available). |
profile/getBusinessProfile — Output
| Field | Type | Description |
description | string | Business profile description. |
address | string | Business address. |
email | string | Business contact email. |
websites | array | Array of website URLs associated with the business. |
vertical | string | Business category/vertical (e.g. RETAIL, PROFESSIONAL_SERVICES). |
Delivery webhooks: The status field in send operation output reflects only the initial API acceptance state. Actual delivery progress (sent to device, delivered, read) arrives as inbound webhook events from Meta. Configure a WhatsApp webhook in Meta Business Manager pointing to a BizFirst webhook trigger node to react to delivery and read receipts in real time.