Quick start
Generate an open-wa project, link WhatsApp, and send your first message.
Before you start
Use Node.js 22.21.1 or newer, npm, and a phone running WhatsApp.
1. Create your project
npm init @open-wa@latest my-bot
cd my-botChoose Easy API to use HTTP requests and the Neo dashboard, or SDK to write your own bot. The wizard also lets you choose JavaScript or TypeScript, use installed Chrome or download a browser, and select plugins.
Prefer a visual setup? Use the project builder to choose your options, preview the files, and copy a complete setup command. See the initializer guide for all flags.
If you selected integrations, copy .env.example to .env and fill in their
settings. Selected plugins and any needed browser download are installed at
startup and cached for reuse.
2. Start and link WhatsApp
npm startOn your phone, open WhatsApp → Linked devices → Link a device and scan the QR
code shown in the terminal. Keep the terminal open; stop the project with
Ctrl+C. Restart from the same project directory to reuse a valid saved login.
3. Use your project
Easy API
Open Neo to manage the session and the API explorer to browse available requests. The HTTP process can start before WhatsApp connects. Check readiness before sending:
curl http://127.0.0.1:8080/healthLook for connected: true and session.ready: true. If either is false, finish
pairing and inspect the reported pending steps before sending.
Use an existing conversation whose recipient expects your message. Replace the example chat ID, then run this in another terminal:
curl --fail-with-body http://127.0.0.1:8080/api/messages/sendText \
-H 'Content-Type: application/json' \
--data '{"to":"447700900123@c.us","content":"Hello from open-wa","options":{}}'If you set WA_API_KEY, also send an X-API-Key header with that value. A
successful response returns the submitted message ID; check the receiving chat
for delivery. In PowerShell, use curl.exe for these curl commands.
Continue with the Easy API guide for HTTP authentication, events, and media.
SDK
The generated index.js or index.ts connects and keeps the bot running.
Send !ping to the linked account from another account; it replies pong.
Edit that file to add your own handlers. The generated config is imported and
passed to create() explicitly.
Continue with the SDK guide.
Voxtral
If you selected Voxtral, set MISTRAL_API_KEY in .env before starting. It
answers voice notes, calls, or both according to your selection. Set JEV_API_KEY
to enable chat actions such as booking cards and buttons. Calls also
need OPENWA_LICENSE_KEY with calling enabled. In Easy API, use Plugins →
Voxtral for settings and a person's normal Chat view for transcripts and
controls. See the Voxtral guide.
Was this helpful?
Your answer includes the page path and docs version.
WhatsApp API documentation for Node.js | open-wa
Set up the self-hosted open-wa WhatsApp API. Send messages from Node.js or HTTP, receive webhooks, connect integrations, and browse the API reference.
Migrate from v4 to v5
Upgrade an existing open-wa application, with before-and-after examples for startup, configuration, listeners, messages, groups, and Easy API.
