Do Not Call Lists

Use DNC APIs to add, search, upload, and remove phone numbers that should not be dialed by outbound campaigns.

Manage DNC Entries

The DNC endpoints use the current RingCX Voice API base URL.

Operation Method and path
List DNC entries GET https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists
Create DNC entry POST https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists
Advanced DNC search POST https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists/advancedSearch
Upload DNC file POST https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists/uploadDncFile
Delete entries by tag DELETE https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists/tags/{dncTagId}
Delete entries by tag and country DELETE https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists/tags/{dncTagId}/countries/{countryId}
Delete one phone entry DELETE https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists/tags/{dncTagId}/phones/{phone}/countries/{country}

SDK Setup

SDK examples in this article use JWT authentication and load credentials from environment variables.

npm install ringcentral-engage-voice-client dotenv
pip3 install ringcentral_engage_voice python-dotenv

Create a .env file in the directory where you run the sample:

RC_CLIENT_ID=<clientId>
RC_CLIENT_SECRET=<clientSecret>
RC_JWT=<jwt>

The SDK wrapper reads these values, signs in with RingCentral, and exchanges the RingCentral access token for a RingCX access token before calling RingCX APIs.

Create a DNC Entry

POST https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncLists
Authorization: Bearer <ringcxAccessToken>
Content-Type: application/json

{
  "phone": "4155550100",
  "countryId": "USA",
  "dncTagId": 12345,
  "externId": "lead-1001"
}
import requests

account_id = "<accountId>"
access_token = "<ringcxAccessToken>"
payload = {
    "phone": "4155550100",
    "countryId": "USA",
    "dncTagId": 12345,
    "externId": "lead-1001",
}

response = requests.post(
    f"https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{account_id}/dncLists",
    headers={
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json",
    },
    json=payload,
)
response.raise_for_status()
print(response.json())
const accountId = "<accountId>";
const accessToken = "<ringcxAccessToken>";
const payload = {
  phone: "4155550100",
  countryId: "USA",
  dncTagId: 12345,
  externId: "lead-1001"
};

const response = await fetch(
  `https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/${accountId}/dncLists`,
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${accessToken}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify(payload)
  }
);

if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
const EngageVoice = require("ringcentral-engage-voice-client").default;
require("dotenv").config();

async function main() {
  const ev = new EngageVoice({
    clientId: process.env.RC_CLIENT_ID,
    clientSecret: process.env.RC_CLIENT_SECRET
  });

  await ev.authorize({ jwt: process.env.RC_JWT });

  const payload = {
    phone: "4155550100",
    countryId: "USA",
    dncTagId: 12345,
    externId: "lead-1001"
  };

  const response = await ev.post(
    "/api/v1/admin/accounts/{accountId}/dncLists",
    payload
  );
  console.log(response.data);
}

main().catch(console.error);
import os
from dotenv import load_dotenv
from ringcentral_engage_voice import RingCentralEngageVoice

load_dotenv()

ev = RingCentralEngageVoice(
    os.environ["RC_CLIENT_ID"],
    os.environ["RC_CLIENT_SECRET"],
)
ev.authorize(jwt=os.environ["RC_JWT"])

payload = {
    "phone": "4155550100",
    "countryId": "USA",
    "dncTagId": 12345,
    "externId": "lead-1001",
}

response = ev.post(
    "/api/v1/admin/accounts/{accountId}/dncLists",
    payload,
).json()
print(response)
Response example
{
  "phone": "4155550100",
  "tag": "GLOBAL",
  "countryCode": {
    "id": "USA",
    "description": null
  },
  "addedDate": "2026-07-22T18:10:11.740+0000",
  "addedBy": "Admin User",
  "reason": "Do not call",
  "dncTagId": 12345
}

DNC Tags

Use DNC tags to group DNC entries for management and deletion.

Operation Method and path
List DNC tags GET https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncTags
Create DNC tag POST https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncTags
Delete DNC tag DELETE https://ringcx.ringcentral.com/voice/api/v1/admin/accounts/{accountId}/dncTags/{dncTagId}

Safety

DNC entries affect compliance and live dialing behavior. Confirm the target account, country, phone number, and tag before creating or deleting entries.