# contact_on_dnc_list

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

> **A compliance outcome, not an error to fix:** This refusal protects the person you tried to call. Record it and do not call them now. Never resend the request, remove a do-not-call entry or record consent just to make a call go through. See [Consent and DNC](/guides/consent-and-dnc).

**Contact is on the do-not-call list.** Deleting a contact must never quietly remove a do-not-call protection. A contact whose number is on the do-not-call list cannot be deleted through the API while the entry exists.

## What it means

The API returns HTTP 409 with `error.code` set to `contact_on_dnc_list`. The default message is: "This contact is on the do-not-call list. Remove its do-not-call entry before deleting it."

## Common causes

- The contact has `do_not_call: true`.

## How to identify it

Check the response status (`409`) and `error.code` (`contact_on_dnc_list`). 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.

## What to do

- Keep the contact: it is what keeps the number from being called. Do not retry: the same request is refused every time.
- Only if the person really asked to be called again: remove the entry with DELETE /v1/dnc-entries/&#123;dnc_entry_id&#125; (recorded in the audit log; keep your own record of who asked), then delete the contact.

## Retry guidance

Do not resend the request, and do not change settings, to get around this refusal. A new request is appropriate only when the rule genuinely no longer applies: the person asked to be called or gave consent, or the permitted calling window has started.

## Did anything happen?

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

## Idempotency

No call was placed. If you sent an Idempotency-Key, the refusal is not stored under it. If the rule later stops applying (for example the person gives consent), place a new call (with a new key, if you use one).

## Who can fix it

Nobody should change data to make this call go through. Remove a do-not-call entry or record consent only when the person asked you to, and keep a record of who asked and when; these changes are audited. See [Consent and DNC](/guides/consent-and-dnc).

## 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": "contact_on_dnc_list",
    "message": "This contact is on the do-not-call list. Remove its do-not-call entry before deleting it.",
    "details": {},
    "request_id": "req_ibdccc2yocvajobujgsm4msv",
    "retry": "no",
    "doc_url": "https://docs.relationsai.com/errors/contact_on_dnc_list"
  }
}
```

## Incorrect and corrected request

Incorrect: The contact is on the do-not-call list (`do_not_call: true`).

```http
DELETE /v1/contacts/ct_8Rw2Tq5Lm9Xc3Vb7Nz4Kp1
```

Corrected: Check `do_not_call` first and keep contacts that are on the list.

```http
GET /v1/contacts/ct_8Rw2Tq5Lm9Xc3Vb7Nz4Kp1
```

## Operations that can return this error

- [`DELETE /contacts/{contact_id}`](/api/contacts#delete-a-contact): Delete a contact

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