Skip to content
Docs
Open Escouade
Documentation contents

Docs › Mail

Limits and quotas

View as .md

Every number of the service on one page. For each one: the value, what the server does when it is reached, and who can change it. A sending limit holds the message back; the others refuse, with a code.

“Default” values are settings of a space. Its human changes the sending window, spacing, the duplicate rule and approval with update_settings, within bounds; an Escouade Mail administrator sets the rest. inbox_status and get_settings return the ones that apply to your space.

Plans

PlanInboxesE-mails per monthWhen the limit is reached
Before payment1None to a third party: the inbox only writes to its human.Refusal: payment_required.
€9 a month2800Inboxes: refusal inbox_limit. Volume: the message waits for the next period.
€19 a month52,000Same.
€49 a month156,000Same.
  • The volume counts the e-mails sent since the start of the paid period. A test send does not count.
  • A period lasts one month, from the payment.
  • An inbox on the shared domain subagentmail.fr only replies: a first message from it is refused with the code own_domain_required.
  • After an unpaid instalment, sending stays open for three days.

billing_status returns the active plan, and the inboxes and volume already used. See Pricing and payment.

Sending

LimitValueWhen it is reached
E-mails per day per inbox5 the first week, then 10, 15, and 20 from the fourth. On every plan.The message waits in the queue: it leaves on the next working day.
An inbox’s maximum quota20 a day, by default.Same.
Sending hoursBy default Monday to Friday, 9 am to 6 pm, Paris time, excluding the eleven French public holidays.The message waits for the first open moment.
Gap between two sends from one inbox10 minutes by default, plus a random share.The message waits its turn.
First message to the same recipientOnly one per inbox within 30 days, by default.Refusal: duplicate_recipient. To follow up: reply_to_thread.
An inbox’s queue (drafts and waiting messages)Ten times its maximum daily quota: 200 with the default quota.Refusal: queue_full.
A key’s cap on messages per dayNone for the key returned by sign_up.Refusal: key_daily_cap, until midnight, Paris time.
Sending attempts for a message3, when the recipient’s server answers with a temporary refusal.The message moves to failed (failed).

A reply to a correspondent who has already written in the thread does not wait for sending hours. It counts towards the daily quota and respects the gap between two sends. See Sending rules.

Inboxes and domains

LimitValueWhen it is reached
Inboxes per space1 before payment, then 2, 5 or 15 depending on the plan.Refusal: payment_required before payment, inbox_limit afterwards.
Inbox creations in 7 daysTwice the inbox cap. Deleted inboxes count.Refusal: inbox_creation_limit.
An inbox name (username)3 to 32 characters on the shared domain; 64 at most on another domain.Refusal: invalid_argument.
Domains per space5Refusal: domain_limit.
Calls to verify_domain6 per minute per space.Refusal: rate_limited.
Re-checking a verified domainEvery day. A suspended domain is re-checked every hour.If a required record has disappeared, the domain is suspended.

A message’s content

FieldAt most
Recipients1 per message
Copies (cc)5 per message, in a conversation only
Attachments10 per message and 10 MB in total, in a conversation only; per space, 500 MB of attachments sent and 200 MB of attachments received; content kept for 90 days
subject300 characters, on one line
text100,000 characters
html300,000 characters
metadata8,000 characters
to_name120 characters
An inbox’s display_name100 characters
agent_name60 characters
reason, note300 characters
idempotency_key1 to 255 characters
A request body1 MiB. Beyond that: refusal payload_too_large over HTTP.

Reading

LimitValue
Items in a list (limit)From 1 to 100. 20 by default. The rest: next_cursor.
Messages returned by get_thread50 per call. The rest: next_cursor.
Bodies returned by get_thread200 KB per call. Beyond that, later bodies are cut, and the response carries truncated. The whole message: get_message.
A message preview in a list (preview)200 characters
A message body in the readable text2,000 characters. The whole body is in the structured object.
The body of an e-mail received100,000 bytes of text, 200,000 for the HTML version.
Collecting the inboxesEvery 60 seconds in the server’s default setting; 100 e-mails at most per inbox per collection.

Request rate

CallerRequests per minute, per client address
Without a key60
With a key600

Beyond that: refusal rate_limited, HTTP status 429. The Retry-After header gives the number of seconds to wait. The window is one minute.

Sign-up and code

LimitValueWhen it is reached
Sign-ups from the same IP address5 per 24 hours, by default.Refusal: signup_rate_limited.
Codes sent to the same e-mail3 per 24 hours, by default.Refusal: signup_rate_limited.
A code’s lifetime24 hoursRefusal: code_expired. attach_human sends a new one.
Attempts per code10Refusal: too_many_attempts. attach_human sends a new one.
Delay between two codes60 secondsRefusal: code_too_soon.
Codes for the same space5Refusal: code_limit.
Changes to the human’s e-mail2Refusal: human_change_limit.
A space that is never verifiedErased 7 days after it was opened, with its inbox.You have to sign up again.

The server also caps the total number of spaces opened and not yet verified. Once that cap is reached, sign_up answers signup_rate_limited.

A space a human opens on the connector’s sign-in page counts towards these limits, like a sign-up.

Connector and payment

LimitValue
A human’s sign-in code (connector)10 minutes, 5 attempts.
Connection request15 minutes.
Payment link returned by subscribe72 hours.
RefundOn request, within 14 days of the first payment.
Unpaid instalmentSending stays open for 3 days.

See Connector and Pricing and payment.

Circuit breaker

MeasureThreshold
BouncesAbove 5%. During warm-up: above 3%.
ComplaintsAbove 0.1%.
Sends judgedThe last 100 at most. Shares are computed over at least 40 sends.

Above a threshold, the inbox is suspended: any send is refused with the code inbox_suspended. Reinstatement is manual. See Sending rules.

Retention

DataPeriod
A message’s log (events)12 months.
Expired MCP sessions30 days.
Closed webhook deliveries30 days.
Feed events (event_feed)35 days.

The other periods: Privacy.

What an agent cannot change

An agent changes no limit: it can neither lift nor speed up the warm-up, nor send outside sending hours, nor raise a cap, nor pay for a plan. The space’s human sets the sending window and tightens spacing with update_settings; quotas and the warm-up cannot be set through any tool. What can be asked of an Escouade Mail administrator: see Help.

This page in Markdown: /en/mail/docs/limites.md All the docs for an agent: /en/mail/docs/llms.txt Legal notice · Terms · Privacy · Service status