Skip to content
OmniChannels.ai

APIs and SMPP

How do I send a WhatsApp message through an API?

Updated

Short answer

To send a WhatsApp message through an API, connect a WhatsApp Business Account through a Meta partner or Meta's Cloud API, collect opt-in and get a message template approved. Send the template to start a conversation. After the customer replies, you can send free-form text, media or interactive messages within the 24-hour customer service window.

What you need before the first send

  • A WhatsApp Business Account (WABA), usually created through a partner's Meta Embedded Signup flow, with a verified business phone number and display name.
  • At least one approved message template in the marketing, utility or authentication category.
  • Opt-in from each recipient, as Meta's policies require.
  • A billing arrangement. Since 1 July 2025 Meta charges per delivered message by category and recipient market; check Meta's current rate card.

Template or free-form message?

From 1 October 2026 Meta also charges service messages and utility templates sent inside the window, after 1,000 free service messages per business phone number each month.

SituationWhat you can send
You start the conversationAn approved template only
Customer messaged you in the last 24 hoursAny message type: text, media, interactive or template
The 24-hour window has closedAn approved template only
Sending a one-time passcodeAn authentication template

Steps to send

  1. Create the template with its name, language, category and example variable values, and submit it to Meta for review.
  2. Wait until the template status is approved.
  3. Call the send endpoint with the recipient, template name, language and variable values.
  4. Store the returned ID, then track SENT, DELIVERED, READ or FAILED on your webhook.

Example: sending a template

On OmniChannels.ai every WhatsApp message goes through POST https://api.broadnet.me/whatsapp/message/sendbulk as multipart form data with a Bearer token. Set messageType to TEMPLATE and pass destinationNo, templateName, templateLanguage and bodyTemplateVariables. The call returns a batchId, and per-recipient statuses arrive on your webhook or from GET /whatsapp/message/bulk-insights.

Official sources