Input & Output
The shared credential pattern across every operation, and how errors surface
Shared Input Pattern
Every operation on this node takes the same top-level config keys, plus its own operation-specific fields:
| Key | Required | Description |
|---|---|---|
resource | ✓ Yes | One of message, media, template, profile, phone-number, qrcode, group, commerce. |
operation | ✓ Yes | The operation within that resource, e.g. send-text. |
accessToken | ✓ Yes* | Bearer token for the Graph API call. Overridden by a configured vault credential when present. See Authentication & Setup. |
phoneNumberId | Depends on operation | Required by most messaging/media/profile/phone-number/qrcode/group operations; not required by catalog- or business-account-scoped template and commerce operations. |
* May come from a vault credential instead of inline config.
Everything else is specific to the chosen resource + operation pair — see that resource's page for the exact field list.
Shared Output Shape
A successful call returns a JSON object whose shape is documented on each operation's page. Message-send
operations converge on a common shape (messageSent, messageId,
phoneNumberId, to, status, errorCode,
errorMessage, payload); every other resource returns the fields relevant to that
operation plus the raw Graph API response under payload/RawResponse for anything not
explicitly surfaced.
How Errors Surface
| Situation | Error Code | What happens |
|---|---|---|
| No access token resolvable (vault or inline) | MISSING_ACCESS_TOKEN | Fails before any HTTP call is made. |
Missing phoneNumberId on an operation that requires it | MISSING_PHONE_NUMBER_ID | Fails before any HTTP call is made. |
| Missing a required operation-specific field | MISSING_FIELD | Fails with the field name in the message, before any HTTP call is made. |
Unknown resource/operation pair | unsupported_operation | The router falls through to the base "operation not found" handler. |
Routed but unimplemented operation (send-and-wait, Trigger ops) | not_implemented | Returns immediately with a clear message — no HTTP call attempted. |
| Graph API returns an error response | (passed through) | Surfaces on the error output port with the Graph API's own error code/message in errorCode/errorMessage. |
| HTTP 429 (rate limited) | — | Retried automatically by WhatsAppRateLimitHandler before surfacing. See Troubleshooting. |
OutputMapping.GetOrCreatePortSuccessAndError()), so downstream branches can react
differently to failures without inspecting errorCode directly.