Skip to main content
Use the WhatsApp Templates API for proactive messages that must use Meta-approved templates: order confirmations, appointment reminders, payment updates, account notices, and other transactional workflows. All endpoints use the M2M base URL:

Requirements

  • A connected, active WhatsApp channel using the Meta provider.
  • The channel must have Meta wabaId, phoneNumberId, and access token details configured in Visito.
  • An M2M credential with the template scopes you need.
  • Idempotency-Key on template send requests.
Use GET /m2m/v1/channels to find the channelId for the WhatsApp number you want to send from.

List Templates

Requires the whatsapp_templates:read scope.

Create a Template

Requires whatsapp_templates:write. template.name must use lowercase letters, numbers, and underscores. template.category must be UTILITY, MARKETING, or AUTHENTICATION.
Templates must be approved by Meta before they can be sent.

Send a Template

Requires whatsapp_templates:send.
If accepted, Visito queues the send and returns 202 Accepted.
Template sends are asynchronous. The API response confirms Visito accepted and queued the outbound work; it does not return the raw Meta send response.

Send Rules

  • The template must exist for the requested language.
  • The template status must be APPROVED.
  • REJECTED, PENDING, or in-review templates cannot be sent.
  • to can include formatting such as +, spaces, or punctuation; Visito normalizes it to WhatsApp digits.
  • Reusing the same Idempotency-Key for the same recipient conversation returns the original accepted send instead of creating a duplicate.
  • Limits are calculated per workspace and WhatsApp channel over a rolling 24-hour window. UTILITY templates allow 2,000 sends. MARKETING, AUTHENTICATION, and older unclassified sends share a separate limit of 100.
  • When the applicable category limit is reached, Visito returns 429 with the limit and retry details.

Common Errors

Rate-limit responses include the wait time in seconds:
Use details.limit as the applicable limit for that request. Retry the exact same send body with the same Idempotency-Key after the wait period. A replay returns the identifiers from the original accepted operation.