Sub-accounts let you provision isolated messaging environments for each of your customers. Each sub-account gets its own API key, usage tracking, and optional spending cap — while all charges are billed to your team’s balance.
Quick Start
Create a sub-account
curl -X POST https://api.zavu.dev/v1/sub-accounts \
-H "Authorization: Bearer zv_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Client ABC",
"externalId": "client_123",
"creditLimit": 100000
}'
Save the API key
The response includes the sub-account’s API key. This is only shown once.{
"subAccount": {
"id": "jx7abc123def456",
"name": "Client ABC",
"status": "active",
"totalSpent": 0,
"creditLimit": 100000,
"apiKey": "zv_live_sub_xxxxxxxxxxxx",
"createdAt": "2025-01-15T10:00:00Z"
}
}
Your customer sends messages
Your customer uses their API key to send messages:curl -X POST https://api.zavu.dev/v1/messages \
-H "Authorization: Bearer zv_live_sub_xxxxxxxxxxxx" \
-d '{"to": "+14155551234", "text": "Hello from Client ABC!"}'
Guides
Important Rules
Each team can have only one main account. All additional projects must be created as sub-accounts. If you need a separate main account, create a new team.
- Sub-accounts share the team’s balance but are fully isolated
- Each sub-account has its own API keys, senders, phone numbers, contacts, and usage tracking
- Credit limits are optional — omit or set to
0 for unlimited spending
- When a credit limit is reached, the sub-account’s messages are blocked
- Deactivating a sub-account revokes all its API keys immediately