WhatsApp API for developers: send with REST, receive events by webhook, a scoped key — without talking to Meta
On this page 6
The short answer
With an API key you generate from the dashboard with permissions you choose, then one REST call sends a text message or an approved template to a number, endpoints list subscribers and approved templates, and an outbound webhook posts the inbound-message event and the events you pick to your URL — all on Meta's official API, so no number gets banned over an unofficial tool. You never talk to Meta directly: approval, templates, the window and pricing are handled by the platform, and your system sees one interface.
The short answer
With an API key you generate from the dashboard with permissions you choose, then one REST call sends a text message or an approved template to a number, endpoints list subscribers and approved templates, and an outbound webhook posts the inbound-message event and the events you pick to your URL — all on Meta's official API, so no number gets banned over an unofficial tool. You never talk to Meta directly: approval, templates, the window and pricing are handled by the platform, and your system sees one interface.
Also asked as: «واتساب api للمبرمجين» · «webhook واتساب» · «ازاي ابعت رسالة واتساب من الكود» · «ربط واتساب api بالنظام»
The four doors open today — and what is not
| Door | Direction | Auth | Does |
|---|---|---|---|
| Order-intake webhook | Your system → platform | Key in the URL | Runs order confirmation and status messages for a store on any platform |
| Cart-events webhook | Your system → platform | Secret + HMAC signature, or a key | Runs abandoned-cart reminders |
| OTP API | Your system → platform | App public key + secret | Send a verification code on WhatsApp, verify it, resend it |
| Agent tools: webhook and MCP | Platform → your system | Headers you set (encrypted at rest) | The agent reads live orders, stock and appointments from your system and answers from them |
| General REST API (send, subscribers, broadcasts, templates) | — | — | Not open yet — on the roadmap, no keys issued |
1. Order intake from any system
For stores not on Shopify or WooCommerce: your system posts the order event to an intake URL tied to your account, and the pre-shipping confirmation and status updates run as they do for connected stores. The URL and key come from the order-confirmation settings page, and the exact field shape is in the API Reference tab inside the dashboard.
POST https://app.arabybot.com/wa_notify_webhook/api/{api_key}
Content-Type: application/json
{ "order_id": "1042", "status": "created",
"customer": { "name": "…", "phone": "+2010…" },
"items": [ { "name": "…", "qty": 1, "price": 350 } ],
"total": 350, "currency": "EGP" }
The exact field names and when each event is sent (created, confirmed, shipped, delivered, cancelled) are in the reference inside the dashboard — not copied here so they never go stale.
2. Cart events
A "cart created" and "cart abandoned" event from your store runs the recovery messages at the timing you set. Two ways: a URL with a secret and an HMAC signature for platforms we ship a plugin for, or a keyed URL for your own system. Cart recovery.
3. The OTP API
Three endpoints: send the code, verify it, resend it — with a public key and a secret for your app from the OTP page. The code arrives on an approved authentication template at Meta's rate for the recipient's country, cheaper than SMS in most of our markets. OTP on WhatsApp or SMS.
POST https://app.arabybot.com/wa_otp_api/send { "phone": "+9665…", "app_key": "…", "secret": "…" }
POST https://app.arabybot.com/wa_otp_api/verify { "phone": "+9665…", "code": "482913", … }
POST https://app.arabybot.com/wa_otp_api/resend { "phone": "+9665…", … }
4. The agent reads your system: webhook tools and MCP servers
- Define the tool
From the agent → tools → add: the name ("order_status"), the description the model reads ("returns an order's status by number"), a public URL, the method GET or POST. The description decides when the agent calls it, so write it as you would explain it to a teammate.
- Return simple JSON
Clearly named fields with text values: {"status":"shipped","eta":"Thursday"}. The agent phrases the reply from them; return no HTML and no pages.
- Or connect an MCP server
From the agent → MCP servers → quick connect: the URL, the token and headers. The server's tool list is read and you choose which are allowed; tokens are stored encrypted.
- Know the limits
Public URLs only (no 10.x, no localhost), resolved once and pinned to one IP, redirects not followed, http/https only, and a per-customer call rate limit. That protects your system and ours alike.
A general REST API to send a message or template from your system, read subscribers, create broadcasts and manage templates — documented in the dashboard as a roadmap, not routed yet, and no keys are issued for it. Whoever needs to send from their system today uses the order webhook (runs confirmation messages) or the OTP API (sends the code), or lets the agent answer from their system through tools. When the general API opens, this guide and the page will change together.
Frequently asked questions
Is there a general REST API to send a message from my system?
Not open yet. What works today is four doors: the order-intake webhook, the cart-events webhook, the OTP API, and the AI agent calling your system (webhook tools and MCP servers). The general send API is on the roadmap, and the developer screen in the dashboard shows it plainly as "not shipped" and issues no keys for it.
How does the AI agent read live data from my system?
You define a tool for it: a name, a description, a public URL and a method (GET or POST). When the agent needs what the tool describes ("the status of order…") it calls it with the parameters, reads the JSON reply and answers the customer from it. The URL must be public (no private network), it is resolved once and pinned, redirects are not followed, and calls are rate-limited per customer.
What is MCP, and when do I use it instead of a webhook tool?
A protocol through which your server lists its tools to the model in one format. You connect the server URL and its token from the dashboard, its tools are read, and you choose which the agent may use. Pick it when you have more than a couple of tools or a system that already speaks it; a webhook tool when you have one simple endpoint.
My store is on a platform with no integration — how do I send orders?
Through the order-intake webhook: your system posts the order event (order number, customer and phone, items, amount, status) to your own URL with your key, and the confirmation and status messages run as if the store were connected. The exact request shape is in the API Reference tab inside the dashboard.
Do the calls cost anything?
The webhooks and calls themselves, nothing. What is billed is what they produce: a WhatsApp message you start on a template at Meta's rate for your country, and the AI agent's reply according to your plan. Pricing.
Read next
Try the agent before you pay anything
The agent that will answer your customers is the one answering you now: ask it from the chat button here or on WhatsApp. Your account is free with no credit card, and the free trial on your own number or page is activated after you contact our team on customer-service WhatsApp.