Skip to content
Browse the docs

Control plane · Published 2026-09-04 · Updated 2026-10-21 · AgentiSend

Trust and enforcement

The enforcement ladder, what each rung does, how to appeal, and what we will not do.

The ladder is published because an enforcement policy you cannot read before it happens to you is not a policy.

The rungs

  1. Warn. Your standing changes and trust.warning fires. Nothing about your sending changes.
  2. Pause. Sending stops. trust.paused fires. The owners are emailed with the metric, the value, the line, the window, the remediation checklist and the appeal route. Queued mail stays queued.

The ladder never enters a throttle rung. throttled remains in the API so existing clients keep working; existing throttled accounts are re-evaluated on the next sweep.

The rates each rung acts on are in Deliverability — bounce warn 2% / pause 4%, complaints warn 0.05% / pause 0.08%. From 100 delivered-or-bounced sends in the window, the rate itself is compared with the line. Before that, the ladder steps only on overwhelming evidence: at least 5 bounces or 3 complaints, and a rate that is still over the line at the low end of its 95% confidence range. One mistyped address never pauses a new account. Nine refusals in eleven sends does.

A bounce counts toward your rate when the address does not exist or the receiving server refused your message, including a refusal for spam or for its content: you choose the recipients and write the message. A refusal that names our side (a blocklisted sending address, the address range or network we send from, its reverse DNS, or the signature we add) is ours, and it does not count against you.

Each recipient counts once in the window, however many times their mail bounced. Someone who asks for five sign-in codes to a mailbox that refuses mail is one bounced address, not five.

Complaint counts come from mailbox providers that send us feedback reports; Gmail, Yahoo and Outlook do not send them to us today, so a complaint rate of 0 is not evidence that nobody complained.

Each stream is judged on its own

Your mail travels in two streams, and each has its own standing on the ladder, measured on its own rates:

  • Transactional — sign-in codes, receipts, and every send through the API or an agent.
  • Marketing — broadcasts, automations, and sends to a topic.

A newsletter that draws complaints pauses marketing. Your sign-in codes and receipts keep going out. A pause on the transactional stream stops both, so moving the same mail onto broadcasts is no way around it.

Each sending domain is judged on its own

Rates are counted per sending domain. A subdomain is counted with the domain it belongs to. A pause stops mail from that domain. Your other domains keep sending. The account pauses only when the combined rates cross the pause line and the mail that remains after the worst domain is removed is still over the warn line, or when the account has one sending domain.

A pause the ladder sets lifts itself after 72 hours. Sending then continues at 200 messages per 24 hours until the window is clean. Over that cap, the send is refused and the response says when to retry. If that mail crosses the pause line, the domain pauses again. A second pause inside 30 days stays until you appeal or a person lifts it. A pause a person set does not lift on its own.

GET /trust/standing lists each domain with the account. POST /trust/appeal takes an optional domain when the appeal is about one of them.

The sandbox

New accounts are scored when they are created. A sandboxed account may only send to addresses on domains it has verified here. Sends to anywhere else are refused.

Two things keep an account in the sandbox: a disposable signup address, or a signup whose domain cannot receive mail when the inbox has not already been proved. Signing in with an email code proves the inbox. A mail-exchanger lookup that does not complete does not sandbox the account. Gmail and other ordinary mailboxes are not a risk signal. Clean signups are approved in the same request. Existing accounts are not re-scored.

On an account opened after 29 September 2026, 00:00 UTC, a domain registered less than 30 days ago holds mail from that domain, once, when it first verifies. Mail from your other verified domains still sends, and the account stays approved. Write to hello@agentisend.com and name the domain; a person lifts the hold. Later checks of the same domain do not put it back. The registration date comes from the domain's registry (RDAP, then WHOIS). A registry that does not publish dates, as for .de and .com.au, does not hold the domain. When no registry answers at all, mail from it waits for the same review. An account opened before that instant adds a new domain and keeps sending from it.

Ask for a review with POST /trust/appeal, or from Trust in the console. A person answers.

A domain blocked after abuse cannot be added or verified on any account, and neither can any name under it. The refusal is sending_domain_blocked; send from a different domain you own, or contact support if you think it is a mistake.

Scope is the narrowest thing that fixes it

A domain with a bad list is throttled at the domain, not at the account. A single key looping is paused at the key. An account-wide pause is for account-wide problems.

Reading your standing

GET /trust/standing returns the current rung, the reading that produced it, and when it will be reviewed again. streams in the same response gives each stream's rung with its own sends, bounce rate and complaint rate; the top-level rung is the stricter of the two. GET /trust/thresholds returns the same numbers this page states — they come from one module, so a page that disagreed with the API would be a build failure rather than a disagreement.

Appeals

POST /trust/appeal opens an appeal with your account. It has an SLA clock attached and it is answered by a person, in 24 to 72 hours. Filing it also opens a support ticket you can follow in the console under Support; a second appeal on the same standing adds to that ticket instead of opening a new one. trust.appealed and trust.restored are on the event catalogue.

An appeal is the right move when the reading is wrong — a bounce spike from a test list, a complaint from a shared IP incident. It is not a way to raise a threshold.

What we will not do

  • We will not enable unsolicited sending. There is no cold-outreach feature, no scraped-list import, and no plan for either.
  • We will not pause you without writing the reason to the audit log you can read.
  • We will not charge you for a send we refused.