---
title: "Stop the repeat behind a received message"
method: POST
path: "/emails/{id}/repeat-stop"
tags: ["Repeating Sends"]
---

# Stop the repeat behind a received message

`POST /emails/{id}/repeat-stop`

## Request

- Base URL: `https://api.primitive.dev/v1`
- URL: `https://api.primitive.dev/v1/emails/{id}/repeat-stop`
- Auth: HTTP bearer

Called by the recipient of a repeating send: the connected agent's own
credential for an agent address, or the signed-in member whose personal
address it is. `id` is the caller's received copy of any message of the
repeat, or the repeat id printed in the message footer, which resolves
to the caller's newest received copy. Stops the repeat when it lets the recipient stop it, cancels the
pending message, and replies once in the thread with a
`repeat.stop/1` interaction so the sender sees it. A repeat call returns
the same result without a second reply.

## Headers

- `Idempotency-Key` string

## Request body

- RepeatStopRequest
  - `reason` string: Short reason shown to the sender.

## Response `200`

The repeat is stopped

- object
  - `success` true, required
  - `data` RepeatStopResult, required
    - `repeat_id` string, uuid, required
    - `status` 'stopped_by_recipient', required
    - `stopped_at` string, date-time, required
    - `stop_reason` string, nullable, required
    - `reply_sent_email_id` string, uuid, nullable, required: The repeat.stop/1 reply that told the sender, or null if it could not be sent.

## Other responses

- `400`: Invalid request parameters
- `401`: Invalid or missing API key
- `403`: `repeat_stop_not_allowed`: the caller is not the recipient, the repeat does not let the recipient stop it, or the sender canceled it.
- `404`: Resource not found
- `422`: `not_a_repeating_send`: the email is not part of a repeating send.

## Changes

> 32 revisions in range; 1 not diffed.

- **2026-11-03** `bce409c97acb`: 155 warning
  - added the new `access_mode_unavailable` enum value to the `error/code` response property for the response status `400`
  - added the new `access_mode_unavailable` enum value to the `error/code` response property for the response status `401`
  - added the new `access_mode_unavailable` enum value to the `error/code` response property for the response status `403`
  - added the new `access_mode_unavailable` enum value to the `error/code` response property for the response status `404`
  - …151 more
  - …this revision’s changelog is incomplete
- **2026-10-21** `0360ea8d4f3d`: 65 warning
  - added the new `agent_changed` enum value to the `error/code` response property for the response status `400`
  - added the new `agent_changed` enum value to the `error/code` response property for the response status `401`
  - added the new `agent_changed` enum value to the `error/code` response property for the response status `403`
  - added the new `agent_changed` enum value to the `error/code` response property for the response status `404`
  - …61 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/primitive/apis/primitive-api/changes/emails/:id/repeat-stop/post.md)

---

[API](https://skmtc.dev/primitive/apis/primitive-api.md) - [All operations](https://skmtc.dev/primitive/apis/primitive-api/llms.txt) - [OpenAPI document](https://skmtc.dev/primitive/apis/primitive-api/revisions/bce409c97acb?raw)
