# campaign_recipients_blocked

- HTTP status: 409
- Retry: No
- Execution: not started
- Admin needed: no

**Recipients now blocked by compliance.** Before resuming, every recipient the run could still dial is screened again against the do-not-call list, consent and the per-number daily limit. If any is now blocked, nothing is resumed and the campaign stays `paused`: a resume continues an existing run and cannot drop recipients from it. `details` counts the blocked recipients by reason and lists up to 100 of their contact ids. Stopping and starting this campaign again is NOT the way on: a new start calls every recipient of the previous run again, including people already reached, and charges for those calls.

## What it means

The API returns HTTP 409 with `error.code` set to `campaign_recipients_blocked`. The default message is: "Some recipients of this campaign are now blocked by compliance rules, so it was not resumed."

## Common causes

- A recipient was added to the do-not-call list after the campaign started.
- A recipient withdrew consent.
- A number reached its daily call limit.

## How to identify it

Check the response status (`409`) and `error.code` (`campaign_recipients_blocked`). Branch on `error.code`, not on the message text: messages can be reworded, codes do not change within v1. Log `error.request_id` (also sent as the `X-Request-Id` header) so support can find the request.

## How to fix it

- List the campaign's recipients with `status=pending` (the people not reached yet), create a new campaign with those contacts minus the blocked ones in `details.contact_ids`, and start it.
- Then stop this campaign. Stopping does not hang up calls already in progress.
- If a contact was marked by mistake, correct it (remove the do-not-call entry or record consent only if it was really given) and resume.

## Retry guidance

Sending the request unchanged fails the same way. Fix the cause first (see How to fix it), then send it again.

## Did anything happen?

This request was refused before any call was placed and before anything was charged.

## Idempotency

Refused for compliance; nothing was dialled and the refusal is not stored under the Idempotency-Key. Do not retry: resending the same call (with any key) is refused again until the cause has legitimately changed.

## Who can fix it

The developer who sends the request can fix it; no administrator action is normally needed.

## When to contact support

If the error persists after the steps above, contact [support@relationsai.com](mailto:support@relationsai.com). See [Support](/resources/support) for what to include (the `request_id`, the time in UTC, the operation, and whether you used a test or live key) and what never to send (API keys, Authorization headers, webhook signing secrets, recording links, transcripts or customer data).

## Example error response

```json
{
  "error": {
    "code": "campaign_recipients_blocked",
    "message": "Some recipients of this campaign are now blocked by compliance rules, so it was not resumed.",
    "details": {
      "blocked_total": 2,
      "by_reason": {
        "dnc_listed": 1,
        "consent_required": 1
      },
      "contact_ids": [
        "ct_8Rw2Tq5Lm9Xc3Vb7Nz4Kp1",
        "ct_2Mh7Yd4Qs8Fv1Kc6Bx9Tn3"
      ],
      "contact_ids_truncated": false
    },
    "request_id": "req_e42tftykifj3epsrjh37r2ei",
    "retry": "no",
    "doc_url": "https://docs.relationsai.com/errors/campaign_recipients_blocked"
  }
}
```

## Operations that can return this error

- [`POST /campaigns/{campaign_id}/resume`](/api/campaigns#resume-a-campaign): Resume a campaign

See all codes in the [error-code reference](/fundamentals/error-codes).
