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.
| Situation | What you can send |
|---|---|
| You start the conversation | An approved template only |
| Customer messaged you in the last 24 hours | Any message type: text, media, interactive or template |
| The 24-hour window has closed | An approved template only |
| Sending a one-time passcode | An authentication template |
Steps to send
- Create the template with its name, language, category and example variable values, and submit it to Meta for review.
- Wait until the template status is approved.
- Call the send endpoint with the recipient, template name, language and variable values.
- 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.
