Skip to main content

Rate Limiting

Mail.td uses Redis-backed sliding-window limiters at two layers.

Per-IP QPS

Unauthenticated and authenticated free endpoints share a per-IP ceiling:

ScopeLimit
/api/* (unauthenticated)8 req / second per IP
Free plan (authenticated)4 req / second per user (or per IP if anonymous)
Pro plan (authenticated)10 req / second per user

Bursts beyond the window return:

{"error": "rate_limit_exceeded"}

HTTP 429 Too Many Requests.

Pro monthly ops quota

Every Pro request (except /api/user/me and billing endpoints) counts against a monthly operations quota. When the quota is exhausted, write endpoints return:

{"error": "quota_exceeded"}

HTTP 429 Too Many Requests. Inbound mail delivery is not affected — your mailboxes keep receiving mail; only the API is gated.

Check your remaining quota at any time:

curl https://api.mail.td/api/user/me \
-H "Authorization: Bearer <pro-api-token>"

Response includes ops_used and ops_limit fields.

Account creation cap

To prevent abuse, anonymous account creation has a stricter per-IP cap on top of the public QPS limit. If you hit it you'll see rate_limit_exceeded — back off for a minute and retry, or sign in and create mailboxes under a Pro token to remove the cap.