Notifications and two-way questions on WhatsApp, from any script or agent. No Meta setup, no templates, no dashboard. Text join, get an API key back, and curl.
# 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
Spam-proof by design. pingwa only ever texts your own number. Message text is never logged, and keys are stored only as a hash.
Scan the code and get instant access. It opens WhatsApp with “join” ready to send, and your API key comes straight back.
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"}A Claude Code or Cursor stop-hook pings your phone when a long task is done. Stop staring at the terminal.
claude-code hook: pingwa send "task done, 3 files changed"
Pipeline red, backup skipped, cert expiring. The alert lands where you actually look, not in a dashboard you forgot.
curl … -d '{"text":"nightly backup FAILED"}'Form submission, first sale, a sensor at home. If it can curl, it can ping you.
if sold_out: pingwa("restock alert 📦")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, 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.
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.