Get Started for Solution Partners

This guide goes over the steps Solution Partners need to take in order to offer the Cloud API to their customers. There are 4 main stages:

  1. Prepare & Plan
  2. Set up Assets
  3. Sign Contracts
  4. Build Integration

After you’re done, please keep up with monthly updates.

Prepare & Plan

Read Documentation

Before you start, we recommend reading through our developer documentation and our Postman collection. This helps you understand how the Cloud API works, including how to get started and migrate numbers.

Plan Onboarding & Migration

You must use Embedded Signup to onboard new customers to the Cloud API. If you haven’t already, integrate and launch Embedded Signup. Embedded Signup is the fastest and easiest way to register customers, enabling them to start sending messages in less than five minutes.

Next, think about which clients you want to migrate to the Cloud API first. Our general recommendation is to migrate all of your clients from the On-Premises to the Cloud API, but each client’s need may vary. As you think about which clients to migrate, consider:

ConsiderationMore Context

Are my client’s throughputs and message volumes supported by Cloud API?

The Cloud API supports most businesses at 250 messages/second cumulative peak throughput, including text/media and incoming/outgoing.

Are my client’s compliance needs met by the Cloud API?

The Cloud API is GDPR compliant and has SOC 2 certification. Servers are hosted in North America and Europe.

Are my clients using features supported by the Cloud API?

Most major features are supported. See full list here.

Once you know who’s going to be migrated, you can build a migration plan and timeline.

As you create your plan, remember to design your system for two scenarios: onboarding new customers and migrating current customers from On-Premises to Cloud API. For the migration scenario, include plans to backup your current On-Premises instance and migrate those numbers to the Cloud API.

Plan Communication With Clients

First, you need to decide whether to notify existing clients about migration. Then, you should determine if you need to create or update any documentation to support the Cloud API setup.

Make Pricing Decisions

Since the hosting costs for the Cloud API are covered by Meta, you should decide if you would like to update your prices accordingly.

Set up Assets

To use the Cloud API, Solution Partners need to have the following assets:

AssetSpecific Instructions

Business Manager

You can use an existing, or set up a new one. Save the Business Manager ID.

WhatsApp Business Account (WABA)

See Create a WhatsApp Business Account for the WhatsApp Business API for help.

Meta App

If you don’t have an app, you need to create one with the “Business” type. Remember to add a display name and a contact email to your app.


As a (Solution Partner), your app must go through App Review and request Advanced Access to the following permissions:

  • whatsapp_business_management — Used to manage phone numbers, message templates, registration, business profile under a WhatsApp Business Account. To get this permission, your app must go through App Review.
  • whatsapp_business_messaging — Used to send/receive messages from WhatsApp users, upload/download media under a WhatsApp Business Account. To get this permission, your app must go through App Review.

See a sample App Review submission here.


As a Solution Partner, you can also feel free to use the same Meta app across different clients and WABAs. But be aware that each app can only have one webhook endpoint and each app needs to go through App Review.

System User

See Add System Users to Your Business Manager for help.


Currently, a Meta App with whatsapp_business_messaging, whatsapp_business_management, and business_messaging permissions has access to up to:

  • 1 admin system user, and
  • 1 employee system user

We recommend using the admin system user for your production deployment. See About Business Manager Roles and Permissions for more information.

Business Phone Number

This is the phone number the business will use to send messages. Phone numbers need to be verified through SMS/voice call.


For Solution Partners and Direct Businesses: If you wish to use your own number, then you should add a phone number in WhatsApp Manager and verify it with the verify endpoint via Graph API.


For businesses using Solution Partners: If you wish to use your own number, then you should add and verify their numbers using the Solution Partner's Embedded Signup flow.


전화번호의 인증 상태는 온프레미스와 클라우드 API 간의 마이그레이션에 영향을 미치지 않습니다. 임베디드 가입에 액세스하여 전화번호를 인증할 수 없을 경우 온프레미스 솔루션으로 전화번호를 인증한 다음, 해당 번호를 클라우드 API로 마이그레이션하는 것이 좋습니다.

There is no limit to the amount of business phone numbers that can be onboarded to the Cloud API.


단일 플랫폼에서 한 번에 하나의 전화번호만 사용할 수 있습니다(클라우드 API에 대해 한 개, 온프레미스에 대해 한 개). 이는 온프레미스와 클라우드 API 모두에 프로덕션 전화번호를 사용할 수 없다는 것을 의미합니다. 테스트 번호(기존 테스트 번호 또는 신규 테스트 번호)로 테스트한 후 프로덕션에 사용할 준비가 되었다는 확신이 들면 클라우드 API로 자신의 전화번호를 이동하는 것이 좋습니다.

Consumer Phone Number

This is a phone number that is currently using the consumer WhatsApp app. This number will be receiving the messages sent by your business phone number.

Sign Contracts

Accepting Terms of Service

In order to access the WhatsApp Business Messaging Cloud API you need to first accept the WhatsApp Business Platform Terms of Service on behalf of your business.

To do so, navigate to WhatsApp Manager and accept the terms of service in the informational banner.

If you are an existing beta partner for the Cloud API you have a grace period of 90 days. This means you need to accept the terms before July 5, 2022 or you will lose access.

For any new Cloud API businesses, including those migrating from the on-premises API, you will need to accept terms of service before you can start using the Cloud API. Registration calls will fail until you accept the terms of service.

You as a developer need to accept the terms of service. If you are a Solution Partner, you do not need your customers to accept.

Build Integration

Step 1: Get System User Access Token

Graph API calls use access tokens for authentication. For more information, see Access Tokens. We recommend using your system user to generate your token.

To generate a system user access token:

  1. Go to Business Manager > Business Settings > Users > System Users to view the system user you created.
  2. Click on that user and select Add Assets. This action launches a new window.
  3. Under Select Asset Type on the left side pane, select Apps. Under Select Assets, choose the Meta app you want to use (your app must have the correct permissions). Enable Develop App for that app.
  4. Select Save Changes to save your settings and return to the system user main screen.
  5. Now you are ready to generate your token. In the system user main screen, click Generate Token and select your Meta app. After selecting the app, you see a list of available permissions. Select whatsapp_business_management and whatsapp_business_messaging. Click Generate Token.
  6. A new window opens with your system user, assigned app and access token. Save your token.
  7. Optionally, you can click on your token and see the Token Debugger. In your debugger, you should see the two permissions you have selected. You can also directly paste your token into the Access Token Debugger.

Step 2: Set up Webhooks

With Webhooks set up, you can receive real-time HTTP notifications from the WhatsApp Business Platform. This means you get notified when, for example, you get a message from a customer or there are changes to your WhatsApp Business Account (WABA).

To set up your Webhook, you need to create an internet-facing web server with a URL that meets Meta’s and WhatsApp’s requirements. See Creating an Endpoint for instructions on how to do that. If you need an endpoint for testing purposes, you can generate a test Webhooks endpoint.

App Setup

Once the endpoint is ready, configure it to be used by your Meta app:

앱 대시보드에서 WhatsApp 제품을 찾아서 구성을 클릭합니다. 그런 다음, Webhooks 섹션을 찾아서 Webhooks 구성을 클릭합니다. 클릭 후 화면에 두 가지 항목을 묻는 대화 상자가 나타납니다.

  • 콜백 URL: Meta가 이벤트를 보낼 URL입니다. URL 생성에 대한 자세한 내용은 Webhooks, 시작하기 가이드를 참조하세요.
  • 인증 토큰: 이 문자열은 Webhooks 엔드포인트를 만들 때 직접 설정합니다.

정보를 추가한 후 인증 및 저장을 클릭합니다.

앱 대시보드로 돌아와 왼쪽 패널에서 WhatsApp > 구성을 클릭합니다. Webhooks에서 관리를 클릭합니다. 알림을 받을 수 있는 모든 개체가 나와 있는 대화 상자가 열립니다. 사용자의 메시지를 받으려면 메시지에 대한 구독을 클릭합니다.

You only need to set up Webhooks once for every application you have. You can use the same Webhook to receive multiple event types from multiple WhatsApp Business Accounts. For more information, see our Webhooks section.

각 Meta 앱은 항상 엔드포인트를 하나만 구성할 수 있습니다. Webhooks 업데이트를 여러 엔드포인트로 보내야 하는 경우 여러 개의 Meta 앱이 필요합니다.

Step 3: Subscribe to your WABA

To make sure you get notifications for the correct account, subscribe your app:

curl -X POST \
'https://graph.facebook.com/v20.0/WHATSAPP_BUSINESS_ACCOUNT_ID/subscribed_apps' \
-H 'Authorization: Bearer ACCESS_TOKEN'

If you get the response below, all Webhook events for the phone numbers under this account will be sent to your configured Webhooks endpoint.

{
  "success": true
}

Step 4: Get Phone Number ID

To send messages, you need to register the phone number you want to use. Before you can register it, you need to get the phone number’s ID. To get your phone number’s ID, make the following API call:

curl -X GET \
'https://graph.facebook.com/v20.0/WHATSAPP_BUSINESS_ACCOUNT_ID/phone_numbers' \
-H 'Authorization: Bearer ACCESS_TOKEN'

If the request is successful, the response includes all phone numbers connected to your WABA:

{
  "data": [
    {
      "verified_name": "Jasper's Market",
      "display_phone_number": "+1 631-555-5555",
      "id": "1906385232743451",
      "quality_rating": "GREEN"
    },
    {
      "verified_name": "Jasper's Ice Cream",
      "display_phone_number": "+1 631-555-5556",
      "id": "1913623884432103",
      "quality_rating": "NA"
    }
  ]
}

Save the ID for the phone number you want to register. See Read Phone Numbers for more information about this endpoint.

Migration Exception

온프레미스 API에서 클라우드 API로 전화번호를 마이그레이션하고 있는 경우 클라우드 API로 전화번호를 등록하기 전에 실행해야 할 추가 단계가 있습니다. 전체 프로세스는 온프레미스와 클라우드 API 간 마이그레이션을 참조하세요.

Step 5: Register Phone Number

With the phone number’s ID in hand, you can register it. In the registration API call, you perform two actions at the same time:

  1. Register the phone.
  2. Enable two-step verification by setting a 6-digit registration code —you must set this code on your end. Save and memorize this code as it can be requested later.

Setting up two-factor authentication is a requirement to use the Cloud API. If you do not set it up, you will get an onboarding failure message:

Sample request:

curl -X POST \
'https://graph.facebook.com/v20.0/FROM_PHONE_NUMBER_ID/register' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"messaging_product": "whatsapp","pin": "6_DIGIT_PIN"}'

Sample response:

{
  "success": true
}

Embedded Signup Users

전화번호는 임베디드 가입 플로를 거친 후 14일 이내에 반드시 등록해야 합니다. 이 기간 내에 전화번호를 등록하지 않으면 다시 임베디드 가입 플로를 거친 후 등록해야 합니다.

Step 6: Receive a Message From Consumer App

Once participating customers send a message to your business, you get 24 hours of free messages with them —that window of time is called the customer service window. For testing purposes, we want to enable this window, so you can send as many messages as you would like.

From a personal WhatsApp iOS/Android app, send a message to the phone number you just registered. Once the message is sent, you should receive an incoming message to your Webhook with a notification in the following format.

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "16315551234",
              "phone_number_id": "PHONE_NUMBER_ID"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Kerry Fisher"
                },
                "wa_id": "16315555555"
              }
            ],
            "messages": [
              {
                "from": "16315555555",
                "id": "wamid.ABGGFlA5FpafAgo6tHcNmNjXmuSf",
                "timestamp": "1602139392",
                "text": {
                  "body": "Hello!"
                },
                "type": "text"
                }
            ]
          },
        "field": "messages"
        }
      ]
    }
  ]
}

Step 7: Send a Test Message

Once you have enabled the customer service window, you can send a test message to the consumer number you used in the previous step. To do that, make the following API call:

curl -X  POST \
'https://graph.facebook.com/v20.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"messaging_product": "whatsapp", "to": "16315555555","text": {"body" : "hello world!"}}'

If your call is successful, your response will include a message ID. Use that ID to track the progress of your messages through Webhooks. The maximum length of the ID is 128 characters.

Sample response:

{
  "id":"wamid.gBGGFlaCGg0xcvAdgmZ9plHrf2Mh-o"
}

클라우드 API를 사용하는 경우 전화번호에 WhatsApp ID가 있는지 명시적으로 확인할 방법을 더 이상 제공하지 않습니다. 클라우드 API를 사용하여 누군가에게 메시지를 보내려면 고객이 옵트인한 후 고객의 전화번호로 직접 메시지를 전송하면 됩니다. 관련 예시는 참고 자료, 메시지를 참조하세요.

Keep up with Monthly Updates

We will release Cloud API updates on the first Tuesday of every month. Those will include new features and improvements. You don’t need to do any work to use any of the new features, since the Cloud API updates automatically.

FAQs

General FAQs

WhatsApp develops and operates the WhatsApp Business API, which enables businesses to communicate with WhatsApp consumer users on the WhatsApp network. When using the Cloud API, Meta will host the WhatsApp Business API for you and provide an endpoint for the WhatsApp service for your incoming and outgoing WhatsApp communications.

Access to Cloud API is free, and we expect it to generate additional cost savings for developers, as Meta hosts and maintains the Cloud API.

We want to make it clear what it means to message with a business on WhatsApp. Some businesses may choose to use Meta or another company to help them manage and store their messages. When a business chooses to manage their messages with another company, we will let consumers know by showing a different system message. Learn more.

Technical Implementation FAQs

The Cloud API architecture significantly simplifies the Solution Partner's operational and infrastructure requirements to integrate with WhatsApp Business Platform. First, it removes the infrastructure requirements to run Business API docker containers (CAPEX savings). Second, it obviates the need of operational responsibilities to manage the deployment (OPEX savings). For details, refer to the architecture diagram comparing the On-Premises and Cloud API deployments.

Solution Partners and direct clients do not need the WebApp and CoreApp containers that are used in the On-Premises API. Meta will manage all database data and media data on behalf of the Solution Partner or direct client.

We will have disaster recovery and data replication across multiple regions. The expected downtime would be within our SLA and usually in the order of less than a minute to less than five minutes.

As your on-premises performance depends heavily on your hardware, software, and connectivity to WhatsApp servers, if you wish to understand these differences, you can perform your own load tests on Cloud API as you might have done for your own on-premises installation. You can also refer to our performance comparison to understand more details around how the on-premise and Cloud APIs compare.

Data Privacy & Security FAQs

클라우드 API는 비즈니스가 클라우드 API 로컬 스토리지를 사용하기로 선택하지 않았다면 Meta 데이터 센터 내에서 실행됩니다. Meta의 데이터 센터는 북미 및 유럽 연합에 위치해 있습니다.

유휴 상태인 메시지는 암호화됩니다. 이런 메시지는 30일 후에 자동으로 삭제됩니다.

다른 모든 WhatsApp Business API 솔루션 파트너와 마찬가지로, Meta는 비즈니스를 대신하여 암호화 및 암호 해독 키를 관리합니다. 클라우드 API를 통해 메시지를 주고받기 위해, 클라우드 API가 비즈니스를 대신하여 암호화/암호 해독 키를 관리합니다. Meta는 클라우드 API를 운영하며 약관에 따라 메시지를 전달하기 위한 목적으로만 해당 서비스를 제공하도록 사용을 제한하고 있습니다. WhatsApp은 키 또는 메시지에 대한 액세스 권한이 없습니다.

Regulatory Compliance FAQs

Meta는 데이터 보호 및 개인정보 보호를 매우 중요하게 생각하며, 이에 따라 데이터 보호 관련 법률을 준수하기 위해 끊임없이 노력합니다. 클라우드 API는 Meta의 고객이 계속해서 개인정보보호 규정(GDPR)에 따른 의무 사항을 준수하도록 지원합니다. Meta는 관련 법률, 산업, 규정 요구 사항은 물론 업계 모범 사례를 준수합니다. 자세한 내용을 확인하세요.