Agentic communicationinfrastructure.
WhatsApp, SMS, voice, email and phone numbers. One API. Your agent does the setup.
Deploy on our infra, or call our API from yours.
Same unified API either way: WhatsApp, SMS, voice, email, Telegram and Messenger behind one integration, one webhook and one bill. Start with one channel and turn on the rest whenever you want, without touching the code you already wrote.
Meta bills WhatsApp templates and messages at cost, with no markup from us. SMS and calls are priced per destination. Meta pricing · Price calculator
Trusted by developers everywhere*







#FROM THE FOUNDER
Why we built this.

Victor Villalobos
Founder & CEOCornershop, formerly part of Uber. CTO of RendaloMaq (YC 2021). Tech lead at unicorns.
I have worked around messaging for a long time, from different seats: at Cornershop, formerly part of Uber, as CTO of RendaloMaq (YC 2021), and as a tech lead at unicorns. Every time it grew into a second product we never planned: a vendor per channel, our own routing, a compliance queue, and an invoice I could not explain.
Zavu is the layer I wanted then: one API for every channel, real phone numbers, and the plumbing underneath run by us, on one bill.
If you are looking at us, write to me. I read every message, and if we are not ready for your case yet I will say so.
Victor Villalobos · Founder & CEO, Zavu
#BACKED BY
Who stands behind Zavu.
#YOUR BILL
Same messages.Up to 92% less.
Take a month with 10,000 SMS, 100,000 WhatsApp messages, 20,000 emails and one US number. With Twilio, Resend and a number vendor, the platform fees come to about $634. On Zavu they start at about $48. The table below shows each line.
| Line | Today | On Zavu |
|---|---|---|
| 10,000 SMS to US numbers | $113 to $143 (Twilio $0.0083 each, plus carrier fees) | from $40 (from $0.004, fees included) |
| 100,000 WhatsApp messages, platform fee | $500 (Twilio, $0.005 each) | $0 |
| 20,000 transactional emails | $20 (Resend Pro, base price) | $8 ($0.40 per 1,000) |
| 1 US phone number | $1.15 (Twilio) | $0 (included in Pro) |
| Platform subscription | none, four logins instead | $20 Pro |
| Pro usage credit | none | −$20, applied to usage |
| Total, platform fees only | $634 to $664 | from about $48 |
How we priced this
- SMS rates are for messages sent to United States numbers. Other destinations have their own published rate on both sides.
- Twilio and Resend prices are the ones they publish for the US. Zavu prices are the ones on our pricing page.
- Meta's own WhatsApp conversation charges are not included. They are the same whichever provider you use.
- Zavu's US SMS rate starts at $0.004 and varies by carrier, so the SMS line and the total are a floor.
- Zavu Pro includes $20 of usage credit every month. It resets monthly and is applied to usage before you pay anything else.
- Resend's Pro plan is $20 a month as a base and covers up to 50,000 emails, so at this volume it is the whole email bill.
- Voice and AI agents are left out of this example on both sides.
#USE CASES
What you can build with it.
Twelve things teams build on Zavu. Each card links the skill and the example to start from.
AI agents
01Agents that answer customers on WhatsApp, SMS, Telegram and email, using your documents and your systems.
Voice agents
02An agent that answers the phone, speaks the caller's language, and hands over to a person when needed.
Transactional notifications
03Order and account updates on the channel that reaches each person, with a webhook for every status.
OTP and verification
04Login codes by SMS, by WhatsApp template, or read aloud on a call.
SMS
05Send and receive in 200+ countries at published rates, with numbers bought by API.
WhatsApp Business
06Templates, media and buttons on the official API, with the 24-hour window handled for you.
Transactional and marketing email from your own domain, with DNS setup by API.
Telegram, Instagram and Messenger
08A bot token or a Page connected with one request, then the same send call as every channel.
Broadcasts and campaigns
09One message to thousands of contacts with their own variables, scheduled and tracked.
Shared inbox and contacts
10Every conversation with a customer in one thread, and replies from the number they know.
Automation
11Your TypeScript on message events or a cron schedule, with nothing to host.
Platforms and agencies
12A project per client with its own key and spending cap, billed to you.
#AGENT FIRST
Everything above can be built by an agent.
Senders, numbers, channels, webhooks, functions and agents are endpoints, CLI commands and skills. You can create the infrastructure your product needs yourself, or hand it to the agent you already work with. All three paths below end in the same project.
In your editor
One prompt installs the Zavu skills in Claude Code, Cursor, Codex and 40+ agents, signs into the CLI and adds the MCP server. From there the agent creates senders, buys numbers and deploys functions with the same commands you would.
In the dashboard
The assistant inside the dashboard creates senders and API keys, buys numbers, connects Telegram, adds email domains, clones an agent and deploys a function. Each step is a card that runs only when you click it.
In your pipeline
The CLI signs in without a browser and the MCP server exposes every endpoint as a tool. Script the setup once, or hand it to an agent running in CI.
Zavu Agents, the ones that answer your customers, are built on this same surface. What one looks like is further down.
#QUICKSTART
Start with what you want to do.
Search a goal. Each path is the CLI first, and every step is also a card in the dashboard assistant and a skill your coding agent already knows.
18 of 18 goals
Log in once, then send. Leave the channel on auto and Zavu picks the route, WhatsApp with SMS as the fallback.
terminalnpx zavudev@latest login npx zavudev messages send --to +14155551234 --text "Your order #1234 has shipped."
The response carries the message id and status; every change after that arrives on your webhook.
Full guide#AGENTS
An agent that answers your customers. Deterministic or not. In your code.
The support line that never closes, the front desk that books, the order desk that knows where the package is. Two ways to run the conversation: non-deterministic, where the model decides each reply, or deterministic, where Zavu follows the steps you wrote, in order, with waits of hours or days. Both in the same file, both deployed with one command.
Answers where customers already are
WhatsApp, SMS, Telegram, email, Instagram, Messenger and the phone. One agent can serve several numbers.
Answers from your documents
A knowledge base per agent. Every reply reports how many chunks it used, so a wrong answer is traceable.
Acts through your tools
Tools look up an order, change a booking, open a ticket: an HTTPS endpoint you own, signed per call, or a handler in the same file.
Remembers each customer
Memory per contact, searched by meaning. It knows this person prefers mornings, and says so.
Picks up the phone
Voice agents speak the caller's language, transfer to a person when they should, and leave a transcript. From $0.07 a minute, all-in.
Your model, your key
OpenAI, Anthropic, Google or Mistral with your own key and no markup, or Zavu's managed gateway billed from your balance.
Testable before it talks to anyone
A dry run uses the real prompt and model and delivers nothing. Every live execution logs tokens, latency, cost and tool calls.
Yours, as code
TypeScript you own, deployed with one command. Seven factory agents to start from: sales, support, front desk.
The model answers from your prompt, your documents and your tools. This is all an agent is: one file, one deploy, and a test that delivers nothing.
index.tsimport { defineAgent, defineTool } from "@zavudev/functions" defineAgent({ senderId: process.env.SENDER_ID!, name: "Order desk", provider: "zavu", model: "openai/gpt-5.6-luna", channels: ["*"], prompt: "You are the order desk. Answer in one or two sentences.", }) defineTool({ name: "get_order_status", description: "Look up an order by id.", parameters: { type: "object", properties: { orderId: { type: "string" } }, required: ["orderId"], }, handler: async ({ orderId }) => db.orders.find(orderId), })
terminalnpx zavudev agents init npx zavudev deploy npx zavudev agents test --agent <agentId> --message "where is my order?"
#LIVE CALL
Voice is the same API.
Same file. Same deploy.
Hear it.
A voice agent built with the same primitives as the one above: defineAgent, a model, a few tools. Pick one, talk to it out loud, and watch the transcript, the logs, the skills and the webhooks while it answers.
Ask it something it has to look up.
Then open the inspector.
#TOOLBOX
Also in the box.
SDKs
TypeScript · Python · Ruby · Go · PHP. Generated from the spec, typed end to end.
OpenAPI spec
The contract the SDKs are generated from.
MCP server
Zavu inside Cursor, VS Code and Claude Desktop. Send messages and manage contacts from the editor.
GitHub
Connect a repository to a function. Every push to your branch deploys it.
Vercel
Your Zavu API key injected into every Vercel project, in every environment.
Supabase
Send SMS, WhatsApp and email from Edge Functions. React to inbound messages with database triggers.
n8n node
Send and receive from a workflow.
WordPress plugin
Order updates over SMS and WhatsApp, owner alerts and consent tracking. Works with WooCommerce.
Omarchy plugin
Your inbox in the shell.
Status
Live uptime for the API and every channel.
Your first messageis one call away.
No credit card. Every channel through one API.

