# Wabery > Wabery is one API for WhatsApp Business. Connect a channel, send and receive messages, collect structured data with WhatsApp Flows, and get every event delivered as a signed webhook. Built for developers and AI coding agents. This file is the agent-friendly map of Wabery. For the full documentation in a single fetch, read [llms-full.txt](https://wabery.com/llms-full.txt) — it concatenates every docs page so you don't need to crawl the site. ## Quick facts - **What it is**: A messaging API and infrastructure layer for WhatsApp Business channels, webhooks, WhatsApp Flows, consent-aware broadcasts, automations, and hosted functions. - **REST base URL**: `https://api.wabery.com/v1` - **Auth**: Bearer API key. Keys are scoped to one project. Secret keys are prefixed `wab_live_` (server-side only). Publishable keys are prefixed `wab_pub_` and are sent as `x-wabery-publishable-key` for registration intents. - **SDK**: `@wabery/sdk` (TypeScript/JavaScript). `new Wabery()` reads `WABERY_API_KEY`. - **PHP / Python**: Use the REST API directly with PHP cURL or Python Requests. Complete reusable clients are documented at https://wabery.com/docs/api-clients. - **API clients**: Import the canonical OpenAPI 3.1 URL into any compatible graphical, CLI, local, or hosted API client. - **CLI**: `@wabery/cli` — `npm i -g @wabery/cli && wabery login`. Ships an MCP server (`wabery mcp`) for Claude Code, Codex, and OpenCode. - **Webhooks**: Inbound messages, delivery statuses, and Flow submissions are delivered as signed events. Verify the signature. Inbound media files arrive as `messages[n].media`, flattened `assets`, and latest `media` entries with short-lived Wabery-signed URLs under `https://storage.wabery.com/assets/inbound/`; retained 24h on Free and 7 days on paid plans. - **Sandbox**: A shared WhatsApp test number is available with no Meta setup. Text the project's join code (`join_code`, shown in the dashboard or `wabery projects get`) to register your test phone, then send one normal WhatsApp message to create the first visible conversation. - **Pricing**: Wabery is priced by included monthly message volume (inbound + outbound): Free 500 messages/mo ($0), then Pro volume plans at Pro 50K/$15, Pro 125K/$30, Pro 250K/$50, Pro 600K/$100, Pro 1.5M/$200, Pro 3.5M/$400, then Custom. Use the dashboard or limits API for the current project's active quota and capabilities. Meta's conversation/template fees are passed through at cost, with no markup. - **Dashboard**: https://app.wabery.com ## Capability map - **Channels**: List WhatsApp channels; set routing; inspect routing warnings and WhatsApp publish readiness. - **Messages**: Send text, approved templates, outbound media (image, video, document, audio), contact cards, interactive WhatsApp messages (reply buttons, lists, `cta_url` link buttons, location and contact-info prompts), and WhatsApp Flows. Quote any message with `reply_to`. - **Inbound events**: Receive signed webhooks for inbound text, media files, locations, statuses, Flow submissions, template status changes, and participant joins. - **Inbound media**: WhatsApp images, voice notes, audio, video, documents, and stickers are cached by Wabery and delivered with short-lived signed URLs; use `assets`, latest `media`, or `messages[n].media`. - **Conversations**: List conversations and history; retained media is re-signed when read through `GET /conversations/{id}/messages`. - **Contacts & registration**: Enroll opted-in contacts server-side, or use browser-safe registration intents to link customer WhatsApp identities to your own user ids. - **Broadcasts**: Import or select consented contacts, freeze an audience snapshot, then send or schedule approved, localized WhatsApp templates with frequency limits, suppressions, delivery counts, and opt-out handling. - **WhatsApp Flows**: Author, validate, publish, localize, send, and debug static or dynamic Flows with data-exchange, dispatches, submissions, and event logs. - **Templates**: Create, submit, inspect, and send WhatsApp templates, including flow-type templates for proactive Flow entry points. - **Automations**: The no-code default for handling inbound WhatsApp. Trigger on welcome, keyword, or any message, then chain actions: send a reply (with variables and quick-reply buttons), send a flow, run a hosted function inline (reply with its output, set variables, or side effect), delay, wait for a reply and branch, add a condition, or pause and hand off to a human. Reach for a function only when an automation can't express the step. External routing pauses automations so your webhook owns replies. See https://wabery.com/docs/automations. - **Config as code**: Export, validate, diff, and apply project configuration for webhooks, flows, and automations. - **Business Agents**: The OpenAPI/SDK surface includes Meta Business Agent provisioning, connectors, tools, thread control, tests, evals, and skills where available for your Meta setup. ## How it fits together 1. Create or select a project and get a project-scoped API key. New projects can test immediately on the shared WhatsApp sandbox before connecting a dedicated channel. 2. Send messages with `POST https://api.wabery.com/v1/messages` (or `wabery.messages.send()`). 3. Receive inbound messages, files, statuses, and Flow submissions as signed webhooks; pull thread history from `GET /conversations/{id}/messages`. 4. Link customers from your app with `POST /registration-intents`, then poll `GET /registration-intents/{id}` with a `wab_pub_` key. 5. Collect structured data by defining a WhatsApp Flow once and reading clean submissions at your endpoint. 6. For one-time campaigns, create a broadcast draft, prepare exactly one consent-eligible audience source, review the frozen counts, then send or schedule it. ## Send your first message (curl) For a new sandbox project, first run `wabery projects get "project_id"` and use `join_code` plus `enrollment_channel.phone_number` to register your test phone. Send one normal WhatsApp message after the join code, then use the returned `channel_id` and `conversation_id`: ```bash curl https://api.wabery.com/v1/messages \ -H "Authorization: Bearer $WABERY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel_id": "channel_...", "conversation_id": "conversation_...", "text": "Thanks for your message" }' ``` ## Documentation - [Introduction](https://wabery.com/docs): What Wabery is and how the pieces connect. - [Quickstart](https://wabery.com/docs/quickstart): API key to first message in one file. - [Authentication](https://wabery.com/docs/authentication): API keys and webhook signing secrets. - [PHP, Python, and API clients](https://wabery.com/docs/api-clients): Reusable REST clients, webhook verification, and generic OpenAPI import instructions. - [Channels](https://wabery.com/docs/channels): Connect and manage WhatsApp Business channels. - [Contacts & opt-in](https://wabery.com/docs/contacts): Enroll opted-in contacts, manage language and metadata, satisfy the opt-in requirement. - [Sending messages](https://wabery.com/docs/sending-messages): Text, templates, media, interactive, and the send reference. - [WhatsApp templates](https://wabery.com/docs/templates): Create, submit, and track approval of templates for proactive sends. - [WhatsApp broadcasts](https://wabery.com/docs/broadcasts): Import or select consented contacts, prepare a frozen audience, and safely send or schedule an approved template. - [Conversations & history](https://wabery.com/docs/conversations): List threads, read message history, re-fetch inbound media. - [Registration intents](https://wabery.com/docs/registration-intents): Browser-safe WhatsApp onboarding links. - [Webhooks & events](https://wabery.com/docs/webhooks): Signed event delivery, verification, inbound media file URLs, retention, and status handling. - [WhatsApp Flows](https://wabery.com/docs/flows): In-chat forms that return validated submissions. - [CLI](https://wabery.com/docs/cli): Manage channels, Flows, and hosted functions from the terminal. - [WhatsApp MCP Server](https://wabery.com/docs/mcp): Hosted and local MCP servers so Claude, ChatGPT, Cursor, or Codex can build on WhatsApp. - [Security model](https://wabery.com/docs/security): Tenant isolation, credential audiences, consent enforcement, resource limits, and production requirements. - [Errors](https://wabery.com/docs/errors): Status codes, rate limits, pagination, and error shapes. ## Machine-readable references - OpenAPI spec: https://api.wabery.com/v1/openapi.json - Pricing reference: https://wabery.com/pricing.md - Full docs in one file: https://wabery.com/llms-full.txt ## Build with an AI coding agent Wabery ships an MCP server so an agent can build the integration for you. Hosted (no install, sign in with OAuth). Works with ChatGPT, Claude, Claude Code, Cursor, Codex, and any other MCP client. Write tools are enabled; your OAuth scopes decide what the agent may change: ``` https://mcp.wabery.com ``` Local (via the CLI), read-only by default: ```bash npm i -g @wabery/cli wabery login wabery mcp-config claude --raw # or: codex / opencode wabery doctor ``` Then describe the feature — for example: "Read https://wabery.com/llms-full.txt, create a broadcast draft from my approved launch template and completed contact import, prepare it, and show me the exact counts and exclusions. Do not send or schedule anything until I explicitly confirm." MCP broadcast delivery tools use person-controlled elicitation on hosted MCP. Trusted local stdio sessions use broadcast-specific confirmation tokens in explicit write mode. ## Contact - Dashboard: https://app.wabery.com - Support: help@wabery.com - Website: https://wabery.com