/v1/whatsapp/* API. Scope is intentionally narrow — template lifecycle plus outbound template sending. WABA connection is browser-only (OAuth) and remains in the dashboard.
All commands accept either the internal social account UUID (from
accounts:list) or the Meta WABA provider ID in the <account-id> position. The v1 controller resolves UUIDs to provider IDs server-side.whatsapp:templates
List every template registered on a WhatsApp Business account, including status (APPROVED, PENDING, REJECTED), category, language, and component structure.
Examples
whatsapp:create-template
Submit a new template to Meta for approval. Templates can take minutes to hours to approve; pollwhatsapp:templates to see the status transition from PENDING → APPROVED.
Provide the template definition with either
--file or --data (if both are passed, --file wins; if neither is passed, the command errors). The payload matches Meta’s WhatsApp Cloud API schema. Minimum fields:
name— lowercase, underscoredlanguage— e.g.en_UScategory—MARKETING,UTILITY, orAUTHENTICATIONcomponents[]—HEADER,BODY,FOOTER,BUTTONS
accountId (from --account) into the payload before submitting, so you do not need to include it in the JSON.
Examples
whatsapp:delete-template
Permanently delete a template. Once deleted, it cannot be restored; you must re-submit under a new name.
Without
-y, the command prompts Delete template "<name>" on account <id>? (y/N) and aborts unless you answer y.
Examples
whatsapp:send
Send an approved template message to a recipient. This is the primary way to initiate a WhatsApp conversation outside the 24-hour customer-service window.--components and --file are both optional (a template with no variables needs neither). If both are supplied, --file takes precedence.
Component parameters fill variables ({{1}}, {{2}}, etc.) in the approved template. Shape matches Meta’s Cloud API:
Examples
whatsapp:upload-media
Upload header media (image/video/document) for use inside a template’sHEADER component. Returns a media handle you can reference when creating or sending templates.
Provide exactly one of
--url or --base64 — the command errors if you supply neither or both.
Examples
Bigger picture
- Session messages (replies within 24 hours of an inbound message) go through
inbox:reply— no template required. - Template messages (first-contact or outside the 24-hour window) use
whatsapp:sendand require a Meta-approved template. - Connecting a WhatsApp Business Account is still browser-only — complete OAuth in the dashboard first, then your CLI scripts can reference the connected account.