Questions · Updated 2026-09-28

How do I pause an AI agent that is sending email?

Pause an AI agent that is sending email with POST /limits/keys/{id}/kill for its key, or POST /limits/kill-all for every key on the account. Sends then answer kill_switch_active, and nothing resumes until a person calls POST /limits/keys/{id}/resume or POST /limits/resume-all from the console.

Pause an AI agent that is sending email with POST /limits/keys/{id}/kill on the agent's key, or POST /limits/kill-all to pause every key on the account. Either takes effect on the agent's next request, every send from a paused key is refused with kill_switch_active, and nothing resumes on its own: POST /limits/keys/{id}/resume and POST /limits/resume-all are a person's calls, made from the console.

One key or every key

The summary of POST /limits/keys/{id}/kill is "Stop this key from sending, immediately. Takes effect on the next request." The summary of POST /limits/kill-all is "Pause every key on this account at once. Takes effect on the next request." Both take a reason. The single-key response returns the key's limits row with paused, paused_at and paused_reason; the account-wide response returns paused, at and affected_key_ids. The event is agent.killed, and the FAQ says the pause and the resume both write an audit row, so GET /audit-log shows who pressed it and why.

curl -sS -X POST https://api.agentisend.com/limits/keys/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42/kill \
  -H "Authorization: Bearer $AGENTISEND_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
201
{
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "budget_per_period": 1,
  "consumed_in_period": 1,
  "consumed_in_window": 1,
  "paused": true,
  "paused_at": "2026-09-04T09:14:00Z",
  "paused_reason": "string",
  "period": "hourly"
}
Response

What the agent sees

The catalogue message for kill_switch_active is "This API key has been paused with the kill switch." The fix is "Read GET /trust/standing for why it was paused. Only a person signed in to the console can resume it; the paused key cannot resume itself." retryable is false. Sends already accepted are not lost: Budgets and the kill switch says queued sends stay queued. The reason for the pause is not on the trust standing: GET /limits/keys/{id} returns paused and the paused_reason given to the kill call, and over MCP get_kill_switch_state reads the same state.

Resuming

The summary of POST /limits/keys/{id}/resume is "Undo the kill switch. A person signed in to the console does this; budgets and ceilings are unchanged." The summary of POST /limits/resume-all is "Undo the global kill switch. A person signed in to the console does this; budgets and ceilings are unchanged, and a key killed on its own stays paused." No API key can call either: a full_access key is refused with human_action_required, and a sending_access key with restricted_api_key. So an agent that paused itself stays paused until a person decides otherwise.

Pause is not a budget

A budget stops the agent at a number it reaches later. The kill switch stops it now, at whatever count it is on, and holds it there. A key that is repeating itself is held by a third mechanism, the loop guard, and its message waits at GET /agent-actions. Set the budget before the agent runs; keep the kill switch for the moment you are reading this page.

Next