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"
}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.