# Broadcast Client

Part of AppEngine API Documentation. Full index: https://appengine.appmint.io/documentation.md
## POST /client/broadcast/unsubscribe

**Unsubscribe an address (unsubscribe page)**

`operationId: BroadcastClientController_unsubscribe`

Public. Stops bulk email to the address typed on the org's unsubscribe page. `review: true` flags it for a compliance review; `broadcast` and `reason` are recorded with it.

#### Signature

```http
POST /client/broadcast/unsubscribe (body) -> { success: true, email, review }
```

#### Access

Public — no credentials required.

#### Errors

| Status | Code | Message | When | What to do |
| --- | --- | --- | --- | --- |
| `400` | EMAIL_REQUIRED | A valid email address is required. | `email` has no @. | — |

Plus the standard platform errors: `429`, `500`.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgid` | header | string | yes | Organization (tenant) identifier. Every request is scoped to this org; data from other orgs is never visible. Issued with your API credentials. |

### Request body

```json
{
  "email": "ada@example.com",
  "reason": "Too many emails"
}
```

### Responses

| Status | Meaning |
| --- | --- |
| `201` | { success: true, email, review } |
| `400` | A valid email address is required. — `email` has no @. |
| `429` | Too Many Requests — More than 100,000 requests from one IP within 5 minutes (configurable per deployment). CORS preflights and requests from inside the platform cluster are not counted. The limiter answers before the error filter, so the body is `{ statusCode, error, message }` with no `path`, `method` or `timeStamp`; the `RateLimit-*` response headers say when the window resets. |
| `500` | An unexpected error occurred. Our team has been notified. — An unhandled server-side failure. |

