CarlyEmail docs

Limits are enforced at two points — creating an inbox, and sending — because those are the two things that cost real money and real reputation.

Plan Price Inboxes Emails / month Emails / day
Free $0 3 3,000 100
Developer $20/mo 10 10,000
Startup $200/mo 150 150,000
Enterprise Contact us Unlimited Unlimited

Unverified organizations

Before the owner email is confirmed, an organization is capped hard:

Inboxes 1
Emails 0 — sending is refused entirely
Sending domain agents.carlyemail.com

This is deliberate. Sign-up is a single unauthenticated call, which is what lets an agent create its own mailbox mid-conversation — so the abuse gate has to sit somewhere, and it sits here. An unverified key can still read, label and organize its own mail.

Confirm with POST /v0/agent/verify and sending is enabled immediately.

The daily cap

The free tier's daily cap matters more than its monthly one. It is what stops a newly signed-up agent emitting three thousand emails in an hour and taking the shared subdomain's reputation down with it. Paid plans have no daily cap because they have a payment method attached and a person behind it.

What happens at the limit

Exceeding a quota returns 429 with a Retry-After header carrying the exact reset — next midnight UTC for a daily cap, the start of next month for a monthly one. Not an estimate.

{
  "name": "RateLimitError",
  "code": "quota_exceeded",
  "message": "Daily send limit reached (100 on the free plan).",
  "fix": "Upgrade the plan, or wait for the quota to reset."
}

Inbox limits return 403 with inbox_limit_reached at creation time.

Message size

Maximum attachment size 25 MB
Default page size 50
Maximum page size 200

Suppression is not a limit

An address that hard-bounced or complained is refused at send time regardless of your plan and regardless of remaining quota. Those entries are read-only — you can see them, you cannot delete them. Continuing to mail an address that complained is what gets a whole sending domain blocked. See suppression.