# Add block list entries

> Block companies, mailboxes or LinkedIn profiles from outreach. Idempotent, up to 500 per call.

Canonical: https://revnu.com/docs/blocklist-add
Last updated: 2026-10-15

```bash
curl -X POST -H "Authorization: Bearer $REVNU_API_TOKEN" \
  -H "content-type: application/json" \
  -d '{"values":["acme.com","Sarah Lee <sarah@globex.com>","linkedin.com/in/sarah-lee"],"reason":"existing customer"}' \
  https://revnu.com/api/v1/blocklist
```

## Body

`values`, 1 to 500 raw strings of up to 320 characters each: bare domains, emails, `mailto:` links, `Name <email>` forms or LinkedIn profile links (`linkedin.com/in/<slug>`, with or without `https://www.`), all normalised. Any other LinkedIn link, such as a company page, is invalid. `reason` is an optional note of up to 500 characters stored on every entry in the call.

## Response

`{ "added": 3, "existing": 0, "invalid": [] }`. `existing` counts values already on the list, so re-sending a whole list is safe. `invalid` lists the strings that could not be read as a domain, an email or a LinkedIn profile, trimmed and cut to 200 characters, blanks dropped; nothing else in the call is affected by them. Entries carry `source: "api"` and the token's label.

## Keep it in sync with your CRM

Customers, open opportunities and anyone you are already talking to should never get a cold email. A nightly job keeps them off outreach:

1. Export the domains of current customers and open deals, and the emails or LinkedIn profiles of people in active conversations.
2. `POST /blocklist` them in batches of up to 500 with a `reason` such as `customer` or `open opportunity`. Re-sending a value already on the list counts as `existing` and changes nothing, so sending the full set every night is safe.
3. For deals that closed lost or customers who churned, decide by hand whether to [remove](https://revnu.com/docs/blocklist-remove.md) them. Removal lets Revnu contact them again, so don't automate it without a rule you trust.

The sync only adds. A company that drops out of your export stays blocked until someone removes it, so churned customers and lost deals stay off outreach until you decide otherwise.

```ts
const values = [...customerDomains, ...openDealDomains, ...activeContactEmails];
for (let i = 0; i < values.length; i += 500) {
  await fetch("https://revnu.com/api/v1/blocklist", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.REVNU_API_TOKEN}`, "content-type": "application/json" },
    body: JSON.stringify({ values: values.slice(i, i + 500), reason: "crm sync" }),
  });
}
```

Use a token with `leads:read` and `leads:write` only. Each call is one write, against 60 writes a minute.

## Frequently asked questions

### Who else adds entries to the block list?

Revnu does, when you ask it in chat ("never contact anyone at acme.com") or when a prospect asks not to be contacted. It never removes an entry on its own: it removes one only when you name that entry and ask. People who unsubscribe from an email sent by one of Revnu's sending inboxes are added and locked, and nobody can remove them, through the API or the dashboard. More in [Keep People Off Your Outreach](https://revnu.com/docs/exclude-contacts.md).

### Does the CRM sync remove companies when they leave my CRM?

No. `POST /blocklist` only adds. Removing an entry is a separate call, [`DELETE /blocklist/{id}`](https://revnu.com/docs/blocklist-remove.md), and lets Revnu contact them again, so most teams keep removals manual.

### Does blocking a domain stop a conversation already going?

No. Entries stop research, qualification and first touches. A reply thread that already exists carries on, and you handle it in the review queue.

### When does a new entry take effect?

On the next send or research decision. Anything already delivered is not recalled.

### Which scope does this need?

`leads:write`. A token without it gets `403` with `requiredScope` in the body. `GET /me` shows a token's scopes.

### Are responses cached?

No. Every response is `Cache-Control: no-store`, so what you read is current.
