WhatsApp Business API Documentation: A Developer's Guide & Resource Index (2026)
The official WhatsApp Business API documentation lives at developers.facebook.com/docs/whatsapp . This page is a curated index and practical orientation to help developers navigate it — covering the Cloud API (the current, recommended implementation), webhook setup, message templates, authentication, conversation pricing, tier limits, and the most common API operations. We link out to Meta's official reference throughout.
TL;DR — Quick Links
The five references you will use most:
| Resource | Link |
|---|---|
| Meta WhatsApp Cloud API reference | developers.facebook.com/docs/whatsapp/cloud-api |
| Meta Webhooks reference | developers.facebook.com/docs/whatsapp/cloud-api/webhooks |
| Meta Message Templates guide | developers.facebook.com/docs/whatsapp/message-templates |
| Conversation pricing reference | developers.facebook.com/docs/whatsapp/pricing |
| Hyperleap REST API + webhooks | See Hyperleap's API reference |
Where Meta's Official Documentation Lives
Meta organises the WhatsApp Business Platform docs into four areas you will return to repeatedly.
Cloud API reference
The primary technical reference for sending and receiving messages, managing phone numbers, uploading media, and working with business accounts. The Cloud API is hosted by Meta; the legacy on-premises API is deprecated. Start here: Cloud API overview.
Webhooks reference
Subscribing to events (incoming messages, status updates, template status changes) and verifying webhook payloads. Covers the full event object schema: Webhooks setup and reference.
Message Templates guide
Submission, category rules, header/body/footer/button structure, variable formatting, and the review process: Message Templates.
Conversation pricing reference
Category definitions (Marketing, Utility, Authentication, Service) and per-country rate cards: Pricing.
Authentication
All Cloud API calls are authenticated with a System User Access Token generated in Meta Business Suite.
The recommended production pattern is a System User (not a personal user account) scoped to whatsapp_business_messaging and whatsapp_business_management permissions. Tokens can be set to never expire, which avoids the operational burden of 60-day user token rotation.
The access token is passed as a Bearer token in the Authorization header on every request. Meta's full authentication setup guide: Access Tokens — WhatsApp Business Platform.
Sending Messages
Messages are sent via a POST to the Graph API at the path /PHONE_NUMBER_ID/messages. The PHONE_NUMBER_ID is the identifier for the WhatsApp-enabled phone number in your Business Account, not the number itself.
Request shape (schematic):
POST https://graph.facebook.com/v19.0/{PHONE_NUMBER_ID}/messages
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "{RECIPIENT_PHONE_E164}",
"type": "text",
"text": {
"body": "Your message body here."
}
}For template messages, replace "type": "text" with "type": "template" and provide a template object that names the approved template and supplies any variable values.
For media messages (image, document, video, audio), set the appropriate type and provide either a media_id (from a prior media upload) or a publicly accessible URL. Meta's full send-message reference: Send Messages.
Receiving Messages (Webhooks)
The Cloud API delivers inbound messages and status updates to your server via webhooks — there is no polling endpoint.
Setup steps:
- Register a publicly accessible HTTPS endpoint in your Meta App dashboard.
- Respond to Meta's verification
GETrequest with thehub.challengevalue. - Verify each incoming
POSTusing theX-Hub-Signature-256header (HMAC-SHA256 of the raw request body, keyed with your App Secret). - Return HTTP
200within five seconds of receiving a webhook event; process asynchronously if your handler is slow.
Payload orientation: Each webhook delivery wraps one or more entry objects. Inside, changes[].value contains the event data. For inbound messages, messages[] holds the message object. For delivery and read receipts, look at statuses[]. Full reference: Webhooks.
Message Templates
Templates are pre-approved message structures required for any business-initiated message sent outside an open 24-hour service window.
Categories:
- • Marketing — Promotions, offers, product announcements. Highest per-conversation rate.
- • Utility — Transactional messages tied to an existing customer action: order confirmations, shipping updates, appointment reminders.
- • Authentication — One-time passcodes. Strictest content rules; no custom footers or marketing copy.
Submission and approval: Templates are created in Meta Business Suite (or via the Business Management API) and reviewed by Meta, typically within 24 hours. Approval is not guaranteed.
Variables use positional placeholders — {{1}}, {{2}} — that are filled at send time. Full templates guide: Message Templates.
Conversation Categories and Pricing
WhatsApp bills per conversation, not per message. A conversation is a 24-hour window opened by the first message in an exchange. Category determines the rate.
| Category | Opened by | Notes |
|---|---|---|
| Service | User | First 1,000 service conversations per month are free |
| Utility | Business | Triggered by a customer action (order update, etc.) |
| Marketing | Business | Promotions, re-engagement |
| Authentication | Business | OTP delivery only |
Rates vary by country. The per-country rate card is in Meta's pricing reference: Conversation Pricing.
Practical note: If a user messages you and you reply within the 24-hour window, that is a Service conversation — even if you send a template. Category is determined at the point the conversation window opens, not by message type.
Messaging Tier Limits
The API enforces limits on how many unique users you can message in a rolling 24-hour period. Tier progression is based on volume and phone number quality rating.
| Tier | Unique users / 24h |
|---|---|
| Tier 1 | 1,000 unique users / 24h |
| Tier 2 | 10,000 unique users / 24h |
| Tier 3 | 100,000 unique users / 24h |
| Tier 4 | Unlimited |
New phone numbers start at Tier 1. Progression to higher tiers happens automatically when you consistently send high-quality messages at or near your current limit. Meta's tier documentation: Messaging Limits.
Rate Limits
Beyond conversation-level tier limits, the Graph API enforces HTTP-level rate limits per access token.
Best practices:
- • Implement exponential backoff with jitter when you receive
429or error code130429responses - • Queue outbound messages and send at a controlled rate rather than bursting
- • For high-volume sends (campaigns, notifications), spread sends across time rather than firing all at once
- • Monitor your error rate in Meta Business Suite's API health dashboard
Meta's rate limit reference: Rate Limits & Error Codes.
Hyperleap's REST API and Webhooks
Hyperleap is a Meta-authorised Business Solution Provider (BSP) and operates on the Cloud API. If you are building on top of Hyperleap rather than calling Meta's API directly, you interact with Hyperleap's own REST API and webhook system — which expose conversation data, lead records, and message events from your Hyperleap-managed WhatsApp number.
Hyperleap's API gives you programmatic access to conversation threads, contact details, lead pipeline stages, and CRM-level data. Webhooks fire on lead creation, new inbound messages, outbound replies, and conversation start events. Book a demo to walk through the integration options with the team, or see the integration patterns.
Common Operations — Quick Reference
| Operation | What you're doing |
|---|---|
| Send a template message | POST to /messages with type: template and approved template name |
| Send a free-form reply | POST to /messages with type: text inside an open 24-hour window |
| Upload media | POST to /PHONE_NUMBER_ID/media to get a media_id before sending |
| Set up a webhook | Register your endpoint in Meta App dashboard; handle the verification handshake |
| Fetch business profile | GET /PHONE_NUMBER_ID/whatsapp_business_profile |
| Mark message as read | POST to /messages with status: read and the message ID |
| List phone numbers | GET /BUSINESS_ACCOUNT_ID/phone_numbers |
| Check template status | GET /BUSINESS_ACCOUNT_ID/message_templates |
Common Gotchas
The 24-hour customer service window is strict
Once it closes, you cannot send free-form messages. You must use an approved template — no exceptions. Build your retry logic and template library before you need them.
Opt-in is your responsibility
Meta requires that recipients have actively opted in to receive messages from your business via WhatsApp. Opt-in must be explicit and documented. Sending to users without opt-in is a policy violation.
Template approval takes time
Plan for 24–48 hours minimum. In practice, rejections are common during initial rounds. Submit templates well before your launch date.
Webhook signature verification is mandatory
Always validate the X-Hub-Signature-256 header before processing events. Skipping this opens your endpoint to spoofed payloads.
Account quality rating affects everything
High block rates, spam reports, or sudden volume spikes can drop your quality rating, which lowers your tier limit and can flag your number for review.
Phone number IDs, not phone numbers
Most API calls use the internal PHONE_NUMBER_ID, not the E.164 formatted number. These are different values. Fetch your phone number ID from the Business Account API.
Meta's API Directly vs. a BSP — Which Should You Use?
Both are valid. The choice depends on what layer you want to own.
Calling Meta's Cloud API directly gives you full control, no middleware, and the lowest-cost path if you are building a custom integration. You handle webhook infrastructure, conversation management, contact records, and the UI layer yourself.
Using a BSP like Hyperleap adds a managed layer on top of the Cloud API: shared inbox, AI-powered response automation, lead management, multi-channel support (Website, WhatsApp, Instagram DM, Facebook Messenger), and your own REST API for accessing conversation data without managing the Meta API surface directly.
For a detailed breakdown: Cloud API direct vs. BSP — comparison.
Get Started with Hyperleap
Hyperleap runs on the Cloud API as a Meta-authorised BSP. Plans start at $40/month (Plus) and include WhatsApp as a native channel alongside Website, Instagram DM, and Facebook Messenger.
Frequently Asked Questions
Where is the WhatsApp Business API documentation?
The official documentation is hosted at developers.facebook.com/docs/whatsapp. The Cloud API reference — the current, recommended implementation — is at developers.facebook.com/docs/whatsapp/cloud-api. The legacy on-premises API is deprecated.
Is there an SDK for the WhatsApp Business API?
Meta does not publish an official end-to-end SDK. The API is a standard REST/JSON HTTP API that you can call with any HTTP client. Meta maintains a Node.js business SDK for Business Management API operations, but message sending and webhooks are handled with direct HTTP calls. Most BSPs (including Hyperleap) abstract this into their own SDK or API layer.
How do I authenticate to the WhatsApp Business API?
Use a System User Access Token generated in Meta Business Suite. The System User should have whatsapp_business_messaging and whatsapp_business_management permissions. Pass the token as a Bearer token in the Authorization header on every request.
How do I receive messages from WhatsApp?
Via webhooks. You register a publicly accessible HTTPS endpoint in your Meta App configuration, handle the verification challenge, and Meta delivers inbound message events as POST requests to your endpoint. There is no polling endpoint.
Where can I find example code for the WhatsApp Business API?
Meta's sample apps repository on GitHub contains reference implementations. Meta's own developer documentation includes HTTP request examples inline. For community examples, the Meta Developer Community forums and the WhatsApp Business API tag on Stack Overflow are the most active sources.
How do I read about message templates?
Meta's full templates guide — covering categories, variable formatting, header/body/button structure, and the approval process — is at developers.facebook.com/docs/whatsapp/message-templates. Template submission and management are done through Meta Business Suite or the Business Management API.
What is the Cloud API base URL?
The Graph API base URL for Cloud API calls is https://graph.facebook.com/. Most message and phone number operations use the path structure https://graph.facebook.com/v{VERSION}/{PHONE_NUMBER_ID}/messages. Check Meta's documentation for the current recommended Graph API version.
Is there a Postman collection for the WhatsApp Business API?
Meta does not publish an official Postman collection, but several community-maintained collections are available on the Postman public workspace. Alternatively, Meta's inline documentation examples can be imported into Postman or Insomnia directly using the provided curl examples as a starting point.
Related