Documentation
Limits & cost
What a verification costs, what is never charged, and the rate limits your retry logic has to live with.
| Limit or cost | |
|---|---|
| Cost per SMS | 2 CallableAI tokens |
| Cost per voice call | Metered by duration, at your plan's call rate |
| Resend cooldown, per number | 30 seconds |
| Sends per number | 5 per hour |
| Sends per workspace | 200 per hour |
| Attempts per verification | max_attempts, default 5 |
| Active API keys per workspace | 25 |
Tokens are the usage currency of your workspace — see pricing for the token rate on your plan and what a call minute meters at.
What is and is not charged
SMS is charged per message sent, not per message delivered — the carrier takes it either way. A request we reject (400, 409) never reaches the carrier and is never charged. Replies are never charged, because they are not collected. A resend is a new message and a new charge, which is the other reason for the 30-second cooldown.
Send limits count every verification in the window regardless of how it ended — an expired one still rang somebody's phone.
Each limit has its own error code: resend_too_soon for the cooldown, phone_rate_limited for the per-number cap, workspace_rate_limited for the hourly workspace cap, and insufficient_balance when the tokens run out.
Need a higher workspace limit? Contact us.