← Back to How-To Guides

How to Get WhatsApp API for Free

Make sure you've already created a Business Portfolio before starting this. Even if you do not have a registered business, you need to create a business portfolio, and it will stay "unverified", which is ok.

  1. Go to developers.facebook.com/apps and create a new App (Meta's general Create an App doc covers this step for any app type, if you want more detail).
  2. When asked what you want your app to do, choose the "Connect with customers through WhatsApp" use case (not "Create an app without a use case" or "Other") — this adds the WhatsApp product, described in Meta's WhatsApp Business Accounts doc, along with the whatsapp_business_messaging / whatsapp_business_management permissions, automatically.
Meta app-creation use-case list with 'Connect with customers through WhatsApp' highlighted
  1. On the Business step, select the Business Portfolio you created earlier (not your personal profile) and continue.
Business step of app creation showing the dedicated business portfolio selected instead of a personal profile
  1. On the Requirements step you'll likely see "No requirements identified." That's expected, not an error — using the API for your own number (rather than building a platform for other businesses) doesn't require anything extra here. Click Next.
Requirements step showing 'No requirements identified. This may change if you add more to this app.' Final app-creation overview screen listing app name, use case, business portfolio and requirements

The final overview — confirm everything looks right, then finish creating the app. (The app name shown here, "WA Coexistence", is ours — name yours whatever you like.)

Set up the WhatsApp use case

Once the app is created you land on its dashboard. Your app can already use the WhatsApp API under Standard Access, which is all a business needs on its own number. Click Customize the Connect with customers through WhatsApp use case.

App dashboard with the checklist item 'Customize the Connect with customers through WhatsApp use case'

Your checklist may show fewer items than this one.

  1. Under Basic setup, go to Step 2. Production setup. Step 1. Try it out is only for first tests with Meta's test number.
  2. Complete Register your WhatsApp phone number and Add payment to send business-initiated messages. The token step needs a registered number.

Get an access token and send a message

To send messages you need an access token. You don't need the App ID or App Secret for this.

  1. Open Send message, and under Step 1: Generate token click Generate token. Meta describes this as a permanent access token for your WhatsApp Business account. Copy it and store it somewhere safe.
  2. Under Step 2: Send a message from your registered number, choose your number, enter a recipient and a message, and send it. The recipient should receive it in WhatsApp.
Production setup screen with the Send message section open and the Generate token button in Step 1

If that doesn't work: create a system user token

Meta links to this manual route from the same screen when token generation fails.

  1. Open Business Settings at business.facebook.com/latest/settings and choose the right portfolio from the switcher at the top left. Then go to Users → System users and click + Add. Name it, and pick the Admin or Employee role.
  2. Click Assign assets and give the system user Manage app control over your app. Also assign your WhatsApp account so the token can reach it.
  3. Click Generate token, select your app, and choose an expiration.
  4. Select the permissions business_management, whatsapp_business_management and whatsapp_business_messaging, then copy the token. Store it somewhere safe, because Meta won't show it again.
Business Settings, System users page with a system user selected and the Generate token and Assign assets buttons

Source: Access tokens — Meta for Developers. Exact button names can change as Meta updates the dashboard.

Receive incoming messages: set up the webhook

WhatsApp delivers messages people send to your number by calling a URL you provide, so your app needs to be reachable over public HTTPS.

  1. In Step 2. Production setup, open Configure Webhooks. Enter your app's URL as the Callback URL, and a Verify token: any string you choose, which your app must check when Meta calls it.

Don't have an app yet? Set up our test chatbot. It runs on your computer, gives you a public HTTPS URL to use as the Callback URL, and shows incoming messages in its logs. Use the same verify token in its .env and here.

Configure Webhooks section with a Callback URL and a Verify token filled in and the Verify and save button

Use your own URL and verify token here.

  1. Click Verify and save. Meta sends your URL a verification request, and your app must answer it correctly.
  2. You can see your app's permissions under Permissions and features (under Other tools in the left menu). The WhatsApp use case adds them for you: whatsapp_business_messaging sends messages, and whatsapp_business_management is for managing templates and account settings through the API. On your own number they work at Standard Access, so there is nothing to add and no app review. Don't request Advanced Access.
Permissions and features page listing the WhatsApp permissions and their status
  1. Back in Configure Webhooks, scroll to the Webhook fields list. Make sure messages is set to Subscribed. Meta subscribes the common fields for you, but it is worth checking, since without it you won't receive incoming messages.
Webhook fields list with the messages field subscribed
  1. Send a WhatsApp message to your number from another phone. It reaches your app. With the test chatbot, you'll see it in its logs.
Test chatbot terminal showing the incoming messages webhook event and the reply sent back through the relay

The test chatbot's logs: the incoming message event, then its reply going out through the relay.

⚠ NO COEXISTENCE ON THIS ROUTE

Getting API access this way does not give you coexistence. A number registered on the Cloud API through your own app can't also be used with the WhatsApp Business app. To keep using the Business app on the same number, use coexistence through us instead. Meta's Business app onboarding doc explains the options.

What you can do for free, and the limits

WhatsApp charges per message that is delivered, not for messages customers send you. Here is what you can do without paying, and where the limits are. These are Meta's rules, and they can change, so check WhatsApp's pricing page.

Messages you start: how many customers you can reach

  • A new business portfolio can message up to 250 unique customers per 24 hours with messages it starts. This applies whether or not you are verified.
  • You reach 2,000 by verifying your business, or by sending 2,000 delivered messages to unique customers outside customer service windows, with high-quality templates, within 30 days.
  • Beyond 2,000, the limit rises automatically (to 10,000, 100,000, then unlimited) as long as you keep quality high and use at least half of your current limit in the past 7 days.
  • Replying to customers who message you doesn't count towards this limit.

See Messaging limits and how to verify your business.

Replying to customers who message you

  • When a customer messages you first, for example by tapping a WhatsApp button on your website, a 24-hour customer service window opens. Each new message from the customer resets it.
  • Inside the window you can send regular (non-template) messages, called service messages. You can only send these inside an open window.
  • Each business phone number gets 1,000 free service messages per month. They don't roll over, and the count resets at 12am in your Messaging account's timezone. Meta charges per message from the 1,001st.
  • Add a payment method in Billing Hub. Without one, service messages are delivered within the free 1,000 and not delivered after it.

Customers who come from a Click to WhatsApp ad

  • When a customer messages you from a Click to WhatsApp ad using the WhatsApp mobile app (desktop and web aren't supported), a customer service window opens.
  • If you reply within that window with any type of message, the reply is free and opens a free entry point window of up to 7 days.
  • While it is open, marketing, utility, authentication and service messages to that customer are all free.

Messages you start need a template

  • To message a customer outside a window, you send a message template. You can create one and wait for Meta's approval, or start from a ready-made template in Meta's template library. Library templates are pre-written and already categorized as utility or authentication, so you can use them as they are without a review. If you customize one, it goes through review.
  • Every template has a category, set when it is approved: marketing (promotions), utility (transactional or informational) or authentication (identity verification).
  • Meta charges for each delivered template message, at a rate that depends on the category and the customer's country. Utility and authentication messages get lower rates as your monthly volume grows.
  • Check the rate cards for your region (rates are in many currencies).