Create a project
Create an Easy API or SDK project with JavaScript or TypeScript, browser selection, and optional plugins.
Use Node.js 22.21.1 or newer and npm. Run the interactive wizard:
npm init @open-wa@latest my-bot
cd my-bot
npm startThe wizard asks for Easy API or SDK, JavaScript or TypeScript, a browser, and optional plugins. Use the project builder to make the same choices on this site, preview every generated file, and copy a complete command or a shareable link. Both interfaces use the same options and templates.
Choose your project
Easy API runs the HTTP server and Neo dashboard. It discovers
wa.config.js or wa.config.ts automatically. Open
Neo after starting the project.
SDK creates a persistent bot in index.js or index.ts. It imports your
config and passes it to create(). Once connected, send !ping from another
WhatsApp account to receive pong; add your own handlers in the entry file.
SDK mode runs without an HTTP server or Neo. Choose Easy API for those controls.
JavaScript projects use .js files. TypeScript projects use .ts files and
include tsconfig.json and editor types. Node.js runs the generated TypeScript
directly; you don't need a separate compile step or Bun.
Browser choices
| Choice | What happens |
|---|---|
| Detect at startup | Reuse installed Chrome or a cached browser. Ask what to download if none is available. |
| Use installed Chrome | Require a local Chrome installation. Never download a browser. |
| Download Chrome | Use managed Chrome for Testing, downloading only when missing. Recommended for calls and media. |
| Download Chromium | Use managed Chromium, downloading only when missing. Some audio/video codecs may be unavailable. |
The terminal wizard shows the Chrome installation it detects. The website can't inspect installed applications, so its command performs that check locally. Browser downloads happen when you start the project and are cached for reuse. Choose an explicit download option for an unattended first start.
Plugins and credentials
Select Voxtral, Webhooks, or Chatwoot. Chatwoot needs Easy API webhook routes and is unavailable in SDK mode. Selecting Voxtral also asks whether to handle voice notes, calls, or both. Calls need a calling-enabled open-wa license.
The initializer writes plugin settings into the config and puts the required
environment variable names in .env.example. Copy that file to .env and fill
in your values before starting the integrations. The generated config loads
.env; existing environment variables take precedence. Keys stay on your
computer and aren't included in the builder's command or share link.
Only selected plugins are downloaded, on demand at startup, then reused from the project's plugin cache. There is no separate plugin installation command.
Repeatable commands
Pass flags to skip their questions. Partial flags leave the remaining questions
interactive. Add --yes to use defaults for any missing choices:
npm init @open-wa@latest my-api -- --mode easy-api --language js --browser chrome --plugins none --yesFor a TypeScript SDK voice assistant:
npm init @open-wa@latest voice-bot -- --mode sdk --language ts --browser chrome --plugins voxtral --voxtral-mode both --yes| Flag | Values |
|---|---|
--mode | easy-api, sdk |
--language | js, ts |
--browser | auto, system-chrome, chrome, chromium |
--plugins | voxtral, webhook, chatwoot, comma-separated; or none |
--voxtral-mode | voice-notes, calls, both |
--no-install | Write the files and let you run npm install later. |
--yes | Use defaults for unanswered choices. |
--help | Show usage without creating files. |
Defaults are Easy API, JavaScript, browser detection, no plugins, voice-note
mode when Voxtral is selected, and dependency installation enabled. Use . as
the project directory to create files in the current folder.
Generated files
Every project includes package.json, wa.config.js or wa.config.ts,
.gitignore, and README.md. SDK projects also include their index.js or
index.ts entry point. TypeScript adds tsconfig.json. Projects with API keys
or integration settings include .env.example.
The initializer checks for existing destination files before writing and refuses
to overwrite them. If dependency installation fails, keep the generated files,
resolve the npm error, and run npm install from the project directory.
The existing npx @open-wa/wa-automate init my-bot entry point opens the same
wizard and supports the same flags.
Link WhatsApp
Run npm start, then open WhatsApp → Linked devices → Link a device on your
phone and scan the QR code. Keep the project running to handle messages or
calls. Stop with Ctrl+C; restart from the same project directory to reuse a
valid saved login. Treat session storage and .env as private credentials.
Next: Easy API quick start, SDK quick start, or the Voxtral guide.
Text and voice assistants
Select Jev chat assistant to answer text messages, and optionally Voxtral
for voice notes and calls. Both choices are available in the terminal wizard
and project builder. Fill in MISTRAL_API_KEY and
JEV_API_KEY once in the generated .env; both plugins share conversation
context and chat actions. See Jev and
Voxtral.
Was this helpful?
Your answer includes the page path and docs version.
