Plans & limits
What each Dairo plan includes, how usage counts against it, and how to read your live meter before a large send.
Every plan runs the same product: the same API, SDKs, CLI, and MCP server, with scheduled sending, idempotency, webhooks, audit logs, and per-key IP allowlists included. Plans differ in their allowances, and you can read your live usage against them any time.
Plan limits
Every plan carries an allowance, enforced on your account and reported by
whoami under limits.
| Plan | Inboxes | Domains | Messages / month | Extractions / month | Storage |
|---|---|---|---|---|---|
free | 5 | 1 | 1,000 | 25 | 1 GB |
developer | 25 | 3 | 15,000 | 500 | 10 GB |
startup | 250 | 25 | 200,000 | 5,000 | 100 GB |
scale | 1,000 | 100 | 500,000 | 25,000 | 250 GB |
Messages / month counts inbound messages and accepted outbound recipients
together, against limits.messagesPerMonth. Extractions / month counts the
inbound messages a structured inbox turns into
fields. Exhausting an allowance returns a quota error on the affected operation;
nothing is billed as overage.
Paid plans also include a monthly grant of usage credits for metered work such
as calls and AI compute; Credits & billing has
the amounts and rates. Need more than scale?
Talk to us.
How usage is counted
- Counters update as work is accepted (a recipient accepted for delivery, a message received, bytes stored), not only at month's end.
- A message to 3 recipients counts as 3, and a broadcast counts per recipient the same way.
- A retried send carrying the same
Idempotency-Keyresolves to one accepted send and counts once; see idempotency. - A scheduled send counts once,
when it is accepted. A send you cancel while it is still
schedulednever goes out, so it never counts.
Read your meter
whoami reports your plan, current-period usage, and limits. Check it any
time; agents should check it before large operations.
Each usage counter measures your current-period activity against the
matching value in limits:
| Field | Meaning |
|---|---|
outboundRecipientsThisMonth | Accepted outbound recipients this period. |
outboundMessagesThisMonth | Outbound messages this period (one per send, however many recipients). |
inboundMessagesThisMonth | Messages received at your inboxes this period. |
messagesThisMonth | inboundMessagesThisMonth + outboundRecipientsThisMonth, checked against limits.messagesPerMonth. |
extractionsThisMonth | Structured-inbox extractions this period, checked against limits.extractionsPerMonth. |
storageBytes | Active stored bytes right now, checked against limits.storageBytes. |
inboxes / domains | Point-in-time counts checked against limits.inboxes / limits.domains. |
period.monthStart | UTC start of the current monthly period the counters accrue from. |
For agents: treat usage counters as a budget signal. The
MCP server exposes get_account_info with
{ "action": "usage" } and { "action": "storage" } so an agent can check
remaining headroom before a large send or upload and back off near a threshold.
Controlling spend
An unbounded loop or a runaway agent shows up as real volume. Three controls keep it in check:
- Cap automated sending with send budgets. A budget is a hard ceiling on an account, a key, or an agent; the next send that would cross it is refused before it goes out.
- Cap metered spend. A daily spend cap stops calls, letters, and AI work once the trailing 24-hour spend reaches it; see spend caps.
- Make retries safe with idempotency. A retried send carrying the same
Idempotency-Keycounts once, so a retry storm can't double your usage.
Give each service or agent its own API key so usage is attributable and a misbehaving key can be revoked on its own.
Next steps
Send limits, reputation & budgets
Two safety valves that stop one runaway agent from sinking everyone's delivery — an automatic brake and a hard cap you set in advance.
Credits & billing
How the prepaid credits wallet works: what fills it, what draws from it, the exact usage rates, spend caps, and where your invoices live.