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.

PlanInboxesDomainsMessages / monthExtractions / monthStorage
free511,000251 GB
developer25315,00050010 GB
startup25025200,0005,000100 GB
scale1,000100500,00025,000250 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-Key resolves 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 scheduled never 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.

curl https://api.dairo.app/v1/whoami \
  -H "Authorization: Bearer $DAIRO_API_KEY"

Each usage counter measures your current-period activity against the matching value in limits:

FieldMeaning
outboundRecipientsThisMonthAccepted outbound recipients this period.
outboundMessagesThisMonthOutbound messages this period (one per send, however many recipients).
inboundMessagesThisMonthMessages received at your inboxes this period.
messagesThisMonthinboundMessagesThisMonth + outboundRecipientsThisMonth, checked against limits.messagesPerMonth.
extractionsThisMonthStructured-inbox extractions this period, checked against limits.extractionsPerMonth.
storageBytesActive stored bytes right now, checked against limits.storageBytes.
inboxes / domainsPoint-in-time counts checked against limits.inboxes / limits.domains.
period.monthStartUTC start of the current monthly period the counters accrue from.
{
  "plan": "scale",
  "period": { "monthStart": "2026-06-01T00:00:00Z" },
  "limits": {
    "inboxes": 1000,
    "domains": 100,
    "messagesPerMonth": 500000,
    "extractionsPerMonth": 25000,
    "storageBytes": 268435456000
  },
  "usage": {
    "inboxes": 12,
    "domains": 3,
    "messagesThisMonth": 18420,
    "inboundMessagesThisMonth": 6120,
    "outboundRecipientsThisMonth": 12300,
    "outboundMessagesThisMonth": 9800,
    "extractionsThisMonth": 140,
    "storageBytes": 4194304
  }
}

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-Key counts 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

On this page