zavu-rules
Zavu API Context
Zavu is a unified multi-channel messaging API. One API to send messages via SMS, WhatsApp, Telegram, Email, Instagram, and Voice with ML-powered intelligent routing.
SDK Ecosystem
| Language | Package | Install |
|---|---|---|
| TypeScript | @zavudev/sdk |
npm add @zavudev/sdk |
| Python | zavudev |
pip install zavudev |
| Go | github.com/zavudev/sdk-go |
go get github.com/zavudev/sdk-go |
| PHP | zavudev/sdk-php |
Composer |
| Ruby | zavudev/sdk-ruby |
RubyGems |
TypeScript Init
import Zavudev from '@zavudev/sdk';
const zavu = new Zavudev({
apiKey: process.env['ZAVUDEV_API_KEY'],
});
Python Init
import os
from zavudev import Zavudev
zavu = Zavudev(api_key=os.environ.get("ZAVUDEV_API_KEY"))
Python Async
from zavudev import AsyncZavudev
zavu = AsyncZavudev(api_key=os.environ.get("ZAVUDEV_API_KEY"))
Go Init
import "github.com/zavudev/sdk-go"
client := zavudev.NewClient(os.Getenv("ZAVUDEV_API_KEY"))
Ruby Init
require "zavudev"
client = Zavudev::Client.new(api_key: ENV["ZAVUDEV_API_KEY"])
PHP Init
use Zavudev\Client;
$client = new Client(apiKey: getenv('ZAVUDEV_API_KEY'));
Authentication
- Environment variable:
ZAVUDEV_API_KEY - Key prefixes:
zv_live_(production),zv_test_(sandbox) - Header:
Authorization: Bearer <api_key> - Sender override header:
Zavu-Sender: <sender_id>
Core Conventions
- Phone numbers: Always E.164 format (
+14155551234) - Channels:
auto,sms,sms_oneway,whatsapp,telegram,email,instagram,voice - Message types:
text,image,video,audio,document,sticker,location,contact,buttons,list,reaction,template - Pagination: Cursor-based. All list endpoints return
{ items: [...], nextCursor: string | null } - Idempotency: Use
idempotencyKeyon send to prevent duplicate messages
Error Handling
TypeScript
import Zavudev, { APIError } from '@zavudev/sdk';
try {
await zavu.messages.send({ to: "+14155551234", text: "Hello" });
} catch (error) {
if (error instanceof APIError) {
console.error(error.status, error.message);
}
}
Python
from zavudev import Zavudev, APIError
try:
zavu.messages.send(to="+14155551234", text="Hello")
except APIError as e:
print(e.status_code, e.message)
Key Business Rules
- WhatsApp 24h window: Free-form messages require an open conversation window (user messaged you in last 24h). Use template messages to initiate conversations outside the window.
- Email requires KYC: Complete identity verification in the dashboard before sending emails.
- URL verification: SMS/email messages containing URLs require those URLs to be pre-verified via
/v1/urls. - URL shorteners blocked: bit.ly, t.co, etc. are always blocked. Use full destination URLs.
- Smart routing: Channel
autouses ML to pick the best channel based on cost, deliverability, and contact preferences. - Fallback: If WhatsApp fails, messages can automatically fall back to SMS (enabled by default).
MCP Server
For direct API execution from AI assistants:
claude mcp add --transport stdio zavudev_sdk_api \
--env ZAVUDEV_API_KEY=$ZAVUDEV_API_KEY -- npx -y @zavudev/sdk-mcp
Tools available: search_docs (search API docs), execute (run TypeScript against authenticated client).
CLI
The zavudev/cli package provides terminal access to all API operations.
Rate Limits
Check X-RateLimit-Remaining header. Use .withResponse() (TS) or .with_raw_response() (Python) to access response headers.
Message Statuses
queued -> sending -> sent -> delivered -> read (success path)
queued -> sending -> failed (failure path)
received (inbound messages)
pending_url_verification (message with URLs awaiting verification)
More from zavudev/zavu-skills
contacts-management
Manage multi-channel contacts with channel operations, merge suggestions, and phone introspection.
59send-message
Send messages via SMS, WhatsApp, Email, Telegram, or Voice with channel selection logic.
55whatsapp-templates
Create WhatsApp message templates, submit for Meta approval, and send template messages with variables.
46ai-agent
Configure AI agents for automated conversational responses with flows, webhook tools, and knowledge bases.
45phone-numbers
Search, purchase, and manage phone numbers with regulatory compliance and sender assignment.
42webhook-setup
Configure webhooks to receive inbound messages and delivery updates with signature verification.
41