# block_site_email_address

Source: https://modulify.ai/docs/api/emails/block-site-email-address

Adds one address, or one whole domain, to a site's blocked list by hand, so the site never emails it again.

- Title: Block an email address or domain for a site
- Scope: `config:write`
- Access: Makes changes
- Endpoint: `POST /v1/block_site_email_address`

A blocked address is skipped from every later message, and a message whose recipients are all blocked is refused. Pass a domain in `email` as `example.com`, `@example.com` or `*@example.com`, and it blocks every address at exactly that domain, not its subdomains. Anything else is refused with `Enter one email address, or a domain such as example.com!`

The tool tells the client to use it when you ask, for example because somebody asked not to be contacted. An entry already on the list keeps the reason it has, and the answer says it was already blocked, with `alreadyBlocked` true. Nothing already sent changes, and `delete_site_email_suppression` takes the entry off the list again. See [Blocked addresses](https://modulify.ai/docs/automations/emails#blocked-addresses).

## Request

Call it with a `POST` to `https://api.modulify.ai/v1/block_site_email_address`, sending the inputs below as a JSON object. The token needs the `config:write` scope.

It makes changes, so send an [Idempotency-Key](https://modulify.ai/docs/api/idempotency) header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.

```bash
curl -X POST https://api.modulify.ai/v1/block_site_email_address \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID","email":"EMAIL"}'
```

Over MCP, the same method is the [block_site_email_address tool](https://modulify.ai/docs/mcp/emails/block-site-email-address).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `projectId` | string | Yes | The site id. |
| `email` | string | Yes | The email address to block, or a domain such as `example.com` to block every address at it. |

## Response

Every call answers with the [JSON envelope](https://modulify.ai/docs/api/requests-and-responses#the-response) of `success`, `message`, `data`, `code` and `version`. `data` holds the result described above, and on a method that returns a total, `count` carries it. The [response headers](https://modulify.ai/docs/api/requests-and-responses#headers-on-every-method-call) carry the call's `X-Request-Id` and what is left of your per-minute budget in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. [Errors](https://modulify.ai/docs/api/errors) explains every status code a call can answer with.