> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dncscrub.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Full Scrub API Overview

> Scrub phone numbers against multiple DNC lists and compliance databases

The Full Scrub API allows you to check phone numbers against multiple compliance databases including:

* **National DNC Registry** (USA and Canada)
* **State DNC Lists**
* **Your Internal DNC (IDNC) Database**
* **Litigator Lists**
* **Consent and EBR (Existing Business Relationship) Records**
* **Wireless Number Identification**
* **VoIP Identification**
* **Calling Time Restrictions**
* **Holiday Restrictions**
* **Consent (express written consent) for autodialed and AI-voice calls**

<Info>
  The Full Scrub API is only checking for DNC status and Calling TIme\Holiday
  restrictions. For full TCPA compliance, you also need to scrub for Reassigned
  Numbers. A second API call is needed to scrub for Reassigned Scrubbing such as
  [Reassigned Authority Plus](/api-reference/reassigned/authority-plus).
</Info>

## Base URL

```
https://www.dncscrub.com/app/main/rpc/scrub
```

## Quick Start

<CodeGroup>
  ```bash cURL theme={null}
  curl --location --request GET \
    'https://www.dncscrub.com/app/main/rpc/scrub?phoneList=7075276405&version=8&output=json' \
    --header 'loginId: YOUR_API_KEY'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://www.dncscrub.com/app/main/rpc/scrub?phoneList=7075276405&version=8&output=json",
    {
      method: "GET",
      headers: { loginId: "YOUR_API_KEY" },
    }
  );
  const { results } = await response.json();
  ```

  ```csharp C# theme={null}
  using (var client = new HttpClient())
  {
      client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");
      var response = await client.GetStringAsync(
          "https://www.dncscrub.com/app/main/rpc/scrub?phoneList=7075276405&version=8&output=json"
      );
  }
  ```
</CodeGroup>

## Parameters

| Parameter | Required | Description |
| - | - | - |
| `phoneList` | Yes | Phone number(s) to scrub. Comma-separated for multiple. Each number may carry an optional identifier and postal code as pipe-delimited suffixes (`PHONE`, `PHONE`+`ID`, or `PHONE`+`ID`+`POSTALCODE`, with an empty ID allowed); the postal code makes time zone and calling window follow the contact's location (see [Postal Code Time Zones](/api-reference/scrub/scrub-single#postal-code-time-zones)) |
| `version` | Yes | API output version. Use `8` for current version. |
| `output` | No | Response format: `json` or `csv` (default) |
| `projId` | No | Project ID for specific project |
| `campaignId` | No | Campaign ID for specific campaign |

## Response Example

```json theme={null}
{
  "version": 8,
  "results": [
    {
      "Phone": "7075276405",
      "ResultCode": "D",
      "Reserved": null,
      "Reason": "National (USA) 2003-06-01;;;",
      "RegionAbbrev": "CA",
      "Country": "US",
      "Locale": "Santa Rosa",
      "CarrierInfo": "9740;RBOC;\"AT&T California:AT&T California\"",
      "NewReassignedAreaCode": null,
      "TZCode": 4,
      "CallingWindow": null,
      "UTCOffset": -420,
      "DoNotCallToday": false,
      "CallingTimeRestrictions": 4,
      "EBRType": null,
      "IsWirelessOrVoIP": false,
      "LineType": "AllOther",
      "EBRExpiresOn": null,
      "WirelessPortDate": null,
      "VoIPDate": null,
      "PostalCode": null,
      "TZSource": "areaCode",
      "IsCallAllowedNonATDS": false,
      "IsCallAllowedATDS": false,
      "IsCallAllowedAI": false
    }
  ]
}
```

## Result Codes

The `ResultCode` field indicates the scrub result:

| Code | Meaning | Action |
| - | - | - |
| `C` | Clean | Phone number is safe to call |
| `D` | Do Not Call | Phone number is on a DNC list |
| `W` | Wireless | Wireless number, not in DNC, not blocked |
| `L` | Wireless Prohibited | Wireless in a state prohibiting solicitation |
| `G` | EBR + Wireless | Valid EBR and wireless, not on any DNC |
| `H` | EBR Override + Wireless | Wireless with valid EBR overriding DNC |
| `F` | Wireless Restricted | Wireless in state not allowing even manual dialing |

<Note>
  For a complete list of result codes and field descriptions, see the [Output
  Guide](/api-reference/scrub/output-guide).
</Note>

## Available Endpoints

<CardGroup cols={2}>
  <Card title="Scrub Single Number" icon="phone" href="/api-reference/scrub/scrub-single">
    Scrub a single phone number
  </Card>

  <Card title="Scrub Multiple Numbers" icon="list" href="/api-reference/scrub/scrub-multiple">
    Scrub multiple phone numbers in one request
  </Card>

  <Card title="Unique Identifier" icon="fingerprint" href="/api-reference/scrub/unique-identifier">
    Pass a unique ID with each phone number
  </Card>

  <Card title="Internal DNC" icon="database" href="/api-reference/scrub/internal-dnc">
    Add or remove numbers from your Internal DNC
  </Card>

  <Card title="EBR List" icon="handshake" href="/api-reference/scrub/ebr-list">
    Manage Existing Business Relationship records
  </Card>

  <Card title="AI Voice Agents" icon="robot" href="/api-reference/scrub/ai-voice-agents">
    One flag that tells an AI dialer whether it may place the call
  </Card>

  <Card title="Output Guide" icon="book" href="/api-reference/scrub/output-guide">
    Complete field reference
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.