Notifications and two-way approvals on WhatsApp, from any agent, script, cron or CI. No Meta setup, no templates, no dashboard. Text join, get an API key back, and curl.
Scan the code and get instant access. It opens WhatsApp with “join” ready to send, and your API key comes straight back.
# 1. WhatsApp: send "join" to +48797882513 → key arrives instantly # 2. ship it curl -X POST https://pingwa.dev/v1/notify \ -H "Authorization: Bearer pw_your_key" \ -d '{"text": "deploy finished ✅"}' # → buzzes in your pocket # need a decision? ask and wait for the tap curl -X POST https://pingwa.dev/v1/ask \ -H "Authorization: Bearer pw_your_key" \ -d '{"text": "Deploy to prod?", "buttons": ["yes","no"]}' # → you tap "yes" in WhatsApp, the agent keeps going
Runs on the official Meta Cloud API: you never link your personal WhatsApp, so it can't get your number banned like Baileys / QR-scan bridges do. See how it compares →
Spam-proof by design. pingwa only ever texts your own number. Message text is never logged, and keys are stored only as a hash.
Message +48797882513 on WhatsApp. Your API key comes back in seconds.
Texting from your phone is what verifies it. No forms, no email.
One POST /v1/notify from any script, cron, CI job or agent.
Errors tell you and your agent exactly what to do next.
Your agent can ask a question with tap-buttons. You tap the answer on WhatsApp and the agent keeps going. Any reply also opens a free 24h window.
pingwa ships a Model Context
Protocol server. Point your agent at one URL and it gets notify,
check_status, and upgrade
as native tools. Auth is your pingwa key in one header. Nothing else to wire up.
Set up a pingwa account for me and wire it into this project: https://pingwa.dev/llms.txt
Your agent reads the docs, runs the registration flow, and configures itself. Or wire it up by hand:
# ~/.cursor/mcp.json { "mcpServers": { "pingwa": { "url": "https://pingwa.dev/mcp", "headers": { "Authorization": "Bearer pw_your_key" } } } }
# run once in your terminal claude mcp add --transport http pingwa \ https://pingwa.dev/mcp \ --header "Authorization: Bearer pw_your_key"
# .vscode/mcp.json { "servers": { "pingwa": { "type": "http", "url": "https://pingwa.dev/mcp", "headers": { "Authorization": "Bearer pw_your_key" } } } }
# any MCP client that speaks Streamable HTTP { "mcpServers": { "pingwa": { "url": "https://pingwa.dev/mcp", "headers": { "Authorization": "Bearer pw_your_key" } } } } # tools: notify · check_status · upgrade — full notes at /llms.txt
Prefer a shell? uvx pingwa send "build done" reads PINGWA_KEY and exits non-zero on failure. CI-friendly, no MCP needed.
No key yet? Text “join” to get one, or have your agent run the registration flow so the key is minted straight to it, with no copy-paste.
Your agent hits a decision it should not make alone. It asks on WhatsApp, you tap an answer from anywhere, and it continues. Nobody else does this in one API call.
POST /v1/ask {"text":"rollback prod?","buttons":["yes","no"]}
→ {"reply":"yes"}Your agent grinds through a big task; you walk away. The done-ping finds you: from a terminal agent, a remote server, or a laptop you already closed.
stop hook: pingwa send "task done, 3 files changed"
Pipeline red, backup skipped, cert expiring. Runs headless where built-in agent notifications can't reach: no session, no OAuth, just curl. Recipe →
curl … -d '{"text":"nightly backup FAILED"}'First signup, first sale, first crash. Your vibe-coded app texts you at the moment it matters. Recipe →
stripe webhook: pingwa("💸 first sale!")Nine recipes with paste-ready code (watchers, trading bots, deploy gates, ESP32, Home Assistant and more): the use-case index.
Honest math: WhatsApp charges per business-initiated message, and rates vary by country. Replying to the bot opens a 24h window where everything is free, so chatty users pay nothing. Need guaranteed higher volume or a dedicated number? Self-serve paid plans are coming. For now, just reach out.
If you live on Telegram, use a Telegram bot. But in most of the world, like LatAm, India, MEA and southern Europe, WhatsApp is the app that is already open. pingwa puts notifications where you actually look, and adds an agent-native API on top.
No. That's the point. pingwa owns the WhatsApp infrastructure; you just text “join” and call a REST API.
No. pingwa runs on the official Meta Cloud API on its own number, and only ever messages the phone that joined. You never link your personal account. That is the key difference from tools built on Baileys, whatsmeow or other QR-scan “linked device” bridges: those reverse-engineer WhatsApp Web and link your number, which violates WhatsApp's terms and routinely gets personal numbers permanently banned, with no appeal. Full comparison →
Remote Control is great, if you run Claude Code with a claude.ai login. It doesn't support API keys, is blocked on Bedrock and Vertex, is off by default on Team/Enterprise plans, and its Channels preview has no WhatsApp. pingwa is one curl from anything: Cursor, Codex, cron, CI, your own scripts. The answer arrives on WhatsApp, the app that's already open. Full comparison →
No, by design. pingwa only ever messages the phone that joined. That is what keeps it spam-proof and instant to set up.
The key is delivered once over WhatsApp's end-to-end encrypted channel and stored by us only as a SHA-256 hash. Re-send “join” anytime to rotate it instantly.
REST first (OpenAPI), llms.txt for LLM readers, and error responses that contain the fix. There is also an uvx pingwa CLI and an MCP server. The client is open-source (MIT), so you can read exactly what it sends.
Yes, two ways. Register a webhook (POST /v1/webhooks) and pingwa
PUSHES every inbound message to your HTTPS endpoint, signed with an
X-Pingwa-Signature HMAC you verify. Prefer to pull? Long-poll
GET /v1/inbox instead. Either way you get the reply text and the
tapped button_id. See the llms.txt.
No, if you pass an Idempotency-Key header. The same key replays the
original result, so you get one message and one quota slot, even under a concurrent retry.
Safe for agents that retry on timeout. See the llms.txt.
Read the privacy page: message text, keys and phone
numbers are never logged; keys are stored only as a SHA-256 hash; data lives on
the operator's own homelab, not a cloud. The client is open-source (MIT), so the
claims are auditable, and you can erase everything with DELETE /v1/me.
Free covers most solo use: 30 paid-route notifications a month, plus unlimited pings inside your 24h reply window. Need guaranteed higher volume or your own dedicated WhatsApp number? Self-serve paid plans are on the way. For now, reach out and we'll sort it out.