Questions · Published 2026-11-10 · Updated 2026-11-10 · AgentiSend
What happens before AgentiSend pauses an account?
What happens before AgentiSend pauses an account is a warning you can read. The lines are published, the standing is on the API, and sending stays on.
What happens before AgentiSend pauses an account is a warning you can read. The lines are published, the standing is on the API, and sending stays on. GET /trust/thresholds returns the lines. GET /trust/standing returns the reading. POST /trust/appeal asks a person to answer, inside 24 to 72 hours. The pause is the step after the warning, and it stops sending from the domain whose rates crossed.
The lines are public first
GET /trust/thresholds is the published ladder. Its summary is "The published enforcement thresholds and the ladder they drive." Bounce rate warns at 2% and pauses at 4%. Complaint rate warns at 0.05% and pauses at 0.08%. Both are judged over 7 days.
Once the window holds 100 delivered-or-bounced sends, the observed rate is compared with the line. Under that count, a step needs 5 bounces or 3 complaints, and the low end of a 95% confidence range still over the line. Each evaluation takes one step. Simulated sends stay out of the rates.
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.
curl -sS -X GET https://api.agentisend.com/trust/thresholds \
-H "Authorization: Bearer $AGENTISEND_API_KEY"200
{
"early_min_events": {
"bounce": -9007199254740991,
"complaint": -9007199254740991
},
"ladder": [],
"metrics": {
"bounce": {
"pause": 1,
"throttle": 1,
"warn": 1
},
"complaint": {
"pause": 1,
"throttle": 1,
"warn": 1
}
},
"min_sample": -9007199254740991,
"probation_hours": -9007199254740991,
"probation_sends_per_day": -9007199254740991,
"repeat_pause_days": -9007199254740991,
"throttled_sends_per_minute": -9007199254740991,
"window_days": -9007199254740991
}The enforcement policy prints the same lines.
The standing object
GET /trust/standing is the live object an agent can read before the next send. state is ok, warning, throttled or paused. reasons is empty while state is ok. Each reason names metric (bounce or complaint), the measured value, the threshold it crossed, window, samples, and the message recorded with the step. next_review_at is the next reassessment. history is the timeline.
streams.transactional and streams.marketing each have a state, a send count, a bounce rate and a complaint rate. The top-level state is the stricter of the two. Transactional mail is every raw POST /emails, sign-in codes and receipts. Marketing mail is broadcasts, automations and topic sends. A marketing warning leaves receipts and sign-in codes sending. A transactional pause stops both streams, so moving the same mail onto a topic does not go around it.
curl -sS -X GET https://api.agentisend.com/trust/standing \
-H "Authorization: Bearer $AGENTISEND_API_KEY"200
{
"domains": [],
"history": [],
"next_review_at": "2026-09-04T09:14:00.000Z",
"probation": false,
"probation_cap": -9007199254740991,
"probation_ends_at": "2026-09-04T09:14:00.000Z",
"reason_codes": [],
"reasons": [],
"sla_deadline_at": "2026-09-04T09:14:00.000Z",
"state": "ok",
"streams": {
"marketing": {
"bounce_rate": 1,
"bounced": -9007199254740991,
"complained": -9007199254740991,
"complaint_rate": 1,
"sent": -9007199254740991,
"state": "ok"
},
"transactional": {
"bounce_rate": 1,
"bounced": -9007199254740991,
"complained": -9007199254740991,
"complaint_rate": 1,
"sent": -9007199254740991,
"state": "ok"
}
},
"window_days": -9007199254740991
}A warning or a pause attaches to the sending domain whose rates crossed. The other domains on the account keep sending. The account line pauses only when the combined rates are over the pause line and, with the worst domain's mail removed, the rest is still over the warn line — or when that account has a single sending domain.
The warning before the pause
The order is good, then warning, then paused. One evaluation moves one step, so a reading that is already over the pause line while state is ok becomes a warning, not a pause.
On that warning, trust.warning fires. Sending continues. The account gets a notification and an email that name the metric and the value. Nothing about the send path changes at this step.
The pause is the following step. trust.paused fires. Sending from the domain stops, including mail already accepted and still queued. The owners are emailed with the metric, the value, the line, the window, the remediation checklist and the appeal route. GET /trust/remediation returns that checklist. Its summary is "The remediation checklist ticks for this account."
throttled remains on GET /trust/standing for older clients. The ladder does not enter it.
A person can pause the whole account. A suspension under the acceptable use policy is a different path: content refusals and that suspension do not travel this ladder, and they use the same appeal.
The appeal window and the decision
POST /trust/appeal files the appeal. Its summary is "File an appeal against the current standing." The reason is stored verbatim. A person answers by sla_deadline_at, which the response returns, between 24 and 72 hours after filing. The same call opens a support ticket. A later appeal on the same standing adds to that ticket.
curl -sS -X POST https://api.agentisend.com/trust/appeal \
-H "Authorization: Bearer $AGENTISEND_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"reason":"examplexxx"}'201
{
"domains": [],
"history": [],
"next_review_at": "2026-09-04T09:14:00.000Z",
"probation": false,
"probation_cap": -9007199254740991,
"probation_ends_at": "2026-09-04T09:14:00.000Z",
"reason_codes": [],
"reasons": [],
"sla_deadline_at": "2026-09-04T09:14:00.000Z",
"state": "ok",
"streams": {
"marketing": {
"bounce_rate": 1,
"bounced": -9007199254740991,
"complained": -9007199254740991,
"complaint_rate": 1,
"sent": -9007199254740991,
"state": "ok"
},
"transactional": {
"bounce_rate": 1,
"bounced": -9007199254740991,
"complained": -9007199254740991,
"complaint_rate": 1,
"sent": -9007199254740991,
"state": "ok"
}
},
"support_ticket_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
"window_days": -9007199254740991
}Filing does not freeze the ladder. If the rates fall back under the warn line for the whole window first, the ladder lifts and trust.restored fires. An empty window is not that recovery. An appeal is for a wrong reading. It does not raise a line.