We are sunsetting On-Premises API. Refer to our On-Premises API Sunset document for details, and to learn how to migrate to our next-generation Cloud API.

Client Architecture

Unlike typical REST APIs, the WhatsApp (WA) Business API requires the WhatsApp Business API Client to be installed and managed by your business. This way the WhatsApp Business API client can communicate with WA servers in an end-to-end-encrypted manner and provide the API endpoints that your business systems integrate with. The WhatsApp Business API Client consists of a set of Docker containers, as well as database and media volumes as shown in the following image.

Components

A WhatsApp Business API Client consists of the following components shown in the preceding image.

  • WebApp node
  • CoreApp node(s)
    • Receives Rest API calls from the WebApp node, and sends resulting messages to the WhatsApp server
    • After receiving messages from the WhatsApp server, sends messages to your Webhook server that include the incoming payload from the WhatsApp servers
    • Downloads and saves media to the media volume
  • Database
    • Stores data for the WhatsApp Business API client, including messages, contacts, configurations etc.
  • Media volume
    • Stores uploaded media files used for outgoing media messages / media message templates, as well as the media files from incoming media messages
  • WebHook server
    • Receives incoming HTTP messages from the CoreApp nodes

After the successful installation of the WhatsApp Business API Client, your business can start integrating with the WhatsApp Business API like common REST APIs via HTTPS, and receiving incoming messages using Webhooks.

Development versus Production Architecture

It's important in your production environment that the database runs on a separate host from the CoreApp and WebApp nodes, which ideally are also on separate hosts for high-availability reasons. For more information, see Availability and Scaling.

When you are developing your system, you can run your database, CoreApp and WebApp nodes on the same physical server for testing purposes.