WhatsApp API
Manage everything that surrounds WhatsApp Business messaging — your WABA connection, business profile, product catalogs, Flows, voice calls, and block lists. Sending messages themselves uses the unified Messaging API (POST /api/v1/messages/whatsapp); this surface is for the configuration that backs those sends.
Base path: /api/v1/whatsapp
Authentication: API key (X-API-Key) or session JWT.
Connections
Each Orbit organization can attach one or more WABA phone numbers. Connections are managed via Meta’s Embedded Signup; theconnect endpoint exchanges the resulting code for a long-lived token.
Business profile
The about line, address, vertical, websites, and profile photo that appear in the customer’s WhatsApp client.Catalogs & products
Used by template messages and the in-WhatsApp shopping experience.Calls — Business Calling
WhatsApp Business Calling lets a customer place a voice call to your business from inside the WhatsApp client, and lets your business call any contact who has granted call permission. See the WhatsApp Business Calling guide for end-to-end setup, country gates, billing, and lifecycle webhooks.Provisioning (per phone number)
Outbound calls + permissions
Dashboard surfaces
Block list
Interactive, Flow & marketing sends
Most WhatsApp sends go through the unified Messaging API. Three send types have dedicated endpoints on this surface because they use Meta message types the unified send doesn’t cover:
The interactive
action is either { buttons } (max 3 reply buttons) or { button, sections } (a list menu, max 10 sections × 10 rows each). The recipient’s tap returns as button_reply/list_reply on the inbound webhook. For marketing sends, tracking_id is echoed on status webhooks so you can correlate delivery back to a campaign or journey.
WhatsApp Flows
WhatsApp Flows are native multi-screen forms — appointment booking, lead capture, surveys, support triage — that render inside the WhatsApp client without sending the customer to a browser. Build and publish a Flow, send it to a recipient withPOST /messages/send-flow, then read each submission back on the inbound webhook (as interactive.nfm_reply) and in the per-step funnel.
Build & manage flows
categories accepts one or more of APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, and OTHER. Publish a Flow before you send it; only draft Flows can be deleted.
Send a flow
Send a published Flow to a recipient as an interactive message. The recipient sees a button labelledflow_cta that opens the form; their submission returns as interactive.nfm_reply on the inbound webhook, with flow_token echoed back so you can correlate the reply to a session or journey.
flow_cta is capped at 20 characters and body at 1024. flow_action is navigate (open at a fixed first screen) or data_exchange (drive screens dynamically from your Flow endpoint). Set mode to draft to preview an unpublished Flow against a test recipient.
Completion endpoint
Flows built on Meta’s dynamic data-exchange channel post each screen submission to a dedicated, encrypted endpoint mounted under its own base path:
Meta signs each
/endpoint request with X-Hub-Signature-256 and identifies the tenant with the X-Devotel-Org-Id header; the response is the AES-128-GCM-encrypted next-screen payload returned as text/plain, per Meta’s Flow Endpoint spec. Like the inbound webhook, it’s configured in Meta and called by Meta — you don’t call it yourself. It’s listed here for completeness.
Test-account analytics
This is a read-only aggregate for the dashboard’s test-account view — it has no provider or billing side-effect.
Cost optimization
Plan a batch of WhatsApp sends before they go out. The optimizer picks the cheapest valid Meta conversation category per recipient, sequences utility/authentication ahead of marketing to ride open conversation windows, and (when abudgetUsd cap is supplied) defers the sends that would exceed it — returning a projected-spend and savings report. This endpoint is pure planning: it never sends a message.
Inbound webhook
The platform also exposes the inbound Meta webhook atGET/POST /api/v1/whatsapp/webhook — Meta verifies it on subscription (GET, with the hub.challenge token) and posts message + status events to the POST handler. This endpoint is not callable by your application; it’s listed here for completeness.
Example — read current profile
See also
- Messaging API → Send WhatsApp — outbound message sending
- Channels → WhatsApp guide — concepts, template approval, pricing
- WhatsApp content policy