Quickstart
From API key to your first reply in one file.
This guide sends your first reply in a few minutes. You'll need a Wabery account, a connected channel, and an existing conversation from an inbound message or registration.
1. Sign in with the CLI
Install the CLI and run wabery login. It opens your browser, asks you to
authorize the CLI, asks you to choose a project, creates a key scoped to that
project, and saves it to your local CLI config — no copy-pasting keys:
npm i -g @wabery/cli
wabery login # opens the browser; use --no-open on a headless box
wabery doctor # confirms the saved key, project, and base URL workNo global install needed — run it on demand instead:
npx wabery login (or pnpm dlx wabery login, bunx wabery login).
Prefer to manage the key yourself? Create one in the dashboard under API
keys (live keys are prefixed wab_live_) and set
WABERY_API_KEY — it overrides the CLI config. Never ship a wab_live_ key
to the browser or commit it to git. See Authentication.
2. Install the SDK
npm install @wabery/sdk3. Send a message
import { Wabery } from "@wabery/sdk";
const wabery = new Wabery();
await wabery.messages.send({
channelId: "channel_...",
conversationId: "conversation_...",
text: "Thanks for your message",
});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"
}'A successful call returns 202 Accepted with the queued message id. For
proactive WhatsApp sends to a phone number, use a dedicated channel and record
contact opt-in first.
4. Receive the reply
Replies (and delivery statuses) arrive at your webhook as signed events — no polling required:
{
"event": "message.received",
"payload": {
"object": "message",
"content": "do you ship internationally?"
}
}Point an endpoint at Wabery and verify the signature — see Webhooks & events.