# POST /email-campaigns/:campaign_id/sends/:send_id/stop

**Resource:** [Email Campaigns](./email-campaigns.md)  
**MCP tool:** `stop_email_blast_run`  
**Scopes:** `email-blasts:write`  
**Write operation:** yes

STOP a run that is already sending. This is the handbrake for a blast going to the wrong people: it halts the send at the next batch boundary, so it stops within 250 recipients rather than instantly, and the run then records what actually went out ('stopped after 120 of 754'). Recipients who had not been reached are left untouched and are never sent to. Emails already delivered cannot be recalled. Also works on a scheduled or paused run that has not started. Unlike cancel_email_blast_run this KEEPS the run in the Runs list, because a part-sent run is a record of who was emailed.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `campaign_id` | path | string | yes |  |
| `send_id` | path | string | yes | The run to stop, from list_blast_runs. Use the one whose status is "sending". |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/email-campaigns/:campaign_id/sends/:send_id/stop"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"require_approval":"..."}'
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`