open-wa logoopen-wa
DocsGuides

Quick start

Generate an open-wa project, link WhatsApp, and send your first message.

Quick start

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-bot

Choose 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.

npm start

On 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/health

Look 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.

On this page