Skip to main content
These commands wrap the /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; poll whatsapp:templates to see the status transition from PENDINGAPPROVED.
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, underscored
  • language — e.g. en_US
  • categoryMARKETING, UTILITY, or AUTHENTICATION
  • components[]HEADER, BODY, FOOTER, BUTTONS
The CLI merges accountId (from --account) into the payload before submitting, so you do not need to include it in the JSON.
Examples
Template names must be lowercase alphanumeric with underscores (^[a-z0-9_]+$). Meta validates this — mismatched names reject immediately with 400.

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
Sending templates is billed per Meta’s WhatsApp Business pricing. Always test with a single recipient first. Unapproved or rejected templates will fail with 400.

whatsapp:upload-media

Upload header media (image/video/document) for use inside a template’s HEADER 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:send and 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.