> ## 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.

# EBR and Consent Master

> Manage Existing Business Relationship records

An Existing Business Relationship (EBR) provides an exemption to DNC rules under certain conditions. The EBR API allows you to add and manage EBR records for phone numbers. In addition the EBR API can be used to store Consent. A consent record is a Permission "P" EBR record — use this type whenever a consumer opts in with **express written consent** (for example, a signed web consent form or a consent checkbox with the required disclosures). You should ensure you have the proper consent from the customer for the customer's jurisdiction before sending this. This will allow you to contact the customer for the purposes of marketing and sales until you remove the Permission EBR or Add to Internal DNC.

<Note>
  Handling a consumer who opted out and later opts back in? See
  [Handling Opt-Outs and Opt-Ins](/api-reference/scrub/opt-outs-and-opt-ins)
  for how Permission EBRs and the Internal DNC list interact.
</Note>

<Note>
  To add or refresh EBR records and scrub numbers in a single request, use
  [Scrub + Add EBR](/api-reference/scrub/scrub-ebr) instead of calling this
  endpoint separately.
</Note>

## Request

### Headers

<ParamField header="loginId" type="string" required>
  Your API Key
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Must be `application/json`
</ParamField>

### Request Body

<ParamField body="keepBetterEBR" type="integer">
  When set to `1`, if an EBR record already exists for the phone number being
  added and the existing EBR is "better" than the one being added, the existing
  EBR will not be overwritten. Federal EBR expiration dates are used to
  determine which EBR is better (longer remaining validity = better).
</ParamField>

<ParamField body="ebrList" type="array" required>
  Array of EBR records to add.

  <Expandable title="EBR Record Object">
    <ParamField body="phoneNumber" type="string" required>
      10-digit phone number(s). For multiple numbers, comma-separate them (e.g., `"5039367187,7075276405"`).
    </ParamField>

    <ParamField body="type" type="string" required>
      EBR type:

      * `S` - Sale/Purchase
      * `I` - Inquiry
      * `P` - Permission
      * `T` - Trial (currently only for Newspaper Trials in North Dakota)
    </ParamField>

    <ParamField body="dateOfLastContact" type="string" required>
      Date of last contact in `MM/DD/YYYY` format (e.g., `"11/11/2020"`).
    </ParamField>

    <ParamField body="dateObligationEnds" type="string">
      Date when written obligation ends (New Jersey only).
    </ParamField>

    <ParamField body="referenceNum" type="string">
      Your internal tracking string.
    </ParamField>

    <ParamField body="brand" type="string">
      Company/product/brand name used to establish the EBR.
    </ParamField>

    <ParamField body="email" type="string">
      Email address (100 characters max).
    </ParamField>
  </Expandable>
</ParamField>

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://www.dncscrub.com/app/main/rpc/ebr' \
    --header 'loginId: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
      "ebrList": [
        {
          "phoneNumber": "5039367187",
          "type": "I",
          "dateOfLastContact": "11/11/2020"
        }
      ]
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://www.dncscrub.com/app/main/rpc/ebr", {
    method: "POST",
    headers: {
      loginId: "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      ebrList: [
        {
          phoneNumber: "5039367187",
          type: "I",
          dateOfLastContact: "11/11/2020",
        },
      ],
    }),
  });
  ```

  ```csharp C# theme={null}
  using (var client = new HttpClient())
  {
      client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");

      var ebrData = new
      {
          ebrList = new[]
          {
              new
              {
                  phoneNumber = "5039367187",
                  type = "I",
                  dateOfLastContact = "11/11/2020"
              }
          }
      };

      var content = new StringContent(
          JsonSerializer.Serialize(ebrData),
          Encoding.UTF8,
          "application/json"
      );

      var response = await client.PostAsync(
          "https://www.dncscrub.com/app/main/rpc/ebr",
          content
      );
  }
  ```
</CodeGroup>

<ResponseExample>
  ```json Response (Success) theme={null}
  {
    "success": true
  }
  ```
</ResponseExample>

## Add Multiple EBRs

Add multiple EBR records in a single request:

```bash theme={null}
curl --location 'https://www.dncscrub.com/app/main/rpc/ebr' \
  --header 'loginId: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "ebrList": [
      {
        "phoneNumber": "5039367187",
        "type": "S",
        "dateOfLastContact": "06/14/2023"
      },
      {
        "phoneNumber": "7072842774",
        "type": "I",
        "dateOfLastContact": "07/02/2023"
      }
    ]
  }'
```

This adds:

1. Phone `5039367187` with a Sale EBR dated 06/14/2023
2. Phone `7072842774` with an Inquiry EBR dated 07/02/2023

## Multiple Phone Numbers Per Record

You can also add the same EBR to multiple phone numbers in one record:

```json theme={null}
{
  "ebrList": [
    {
      "phoneNumber": "5039367187,7075276405",
      "type": "I",
      "dateOfLastContact": "11/11/2020"
    }
  ]
}
```

## Preserve Better EBR Records

Use `keepBetterEBR` to prevent overwriting existing EBR records that have longer remaining validity:

```json theme={null}
{
  "keepBetterEBR": 1,
  "ebrList": [
    {
      "phoneNumber": "5039367187",
      "type": "I",
      "dateOfLastContact": "11/11/2024"
    }
  ]
}
```

<Info>
  When `keepBetterEBR` is set to `1`, the system compares federal and state EBR
  expiration dates. If the existing EBR expires later than the new one would,
  the existing record is preserved. This is useful when importing EBR data to
  avoid accidentally downgrading your compliance coverage.
</Info>

## Response

| Status Code | Meaning                                   |
| ----------- | ----------------------------------------- |
| `200`       | Success                                   |
| `4xx`       | Error - response body contains the reason |

## EBR Types

| Type | Description                                                                                                                        |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `S`  | Sale/Purchase — consumer bought or transacted with you                                                                             |
| `I`  | Inquiry — consumer asked about your products or services                                                                           |
| `P`  | Permission — consumer gave **express written consent** to be contacted (opt-in). Only this type can override an Internal DNC entry |
| `T`  | Trial (currently only for Newspaper Trials in North Dakota)                                                                        |

## EBR Expiration

EBR exemptions expire based on federal rules:

| EBR Type            | Expiration Period                       |
| ------------------- | --------------------------------------- |
| Sale/Purchase (`S`) | 18 months from date of last transaction |
| Inquiry (`I`)       | 3 months from date of inquiry           |

<Warning>
  State rules may vary. Some states have shorter exemption periods or additional
  requirements.
</Warning>

## Best Practices

<AccordionGroup>
  <Accordion title="Track Reference Numbers">
    Use the `referenceNum` parameter to store your internal tracking ID for
    audit purposes.
  </Accordion>

  <Accordion title="Use Accurate Dates">
    The `dateOfLastContact` should be the actual date of the business
    relationship event, not the current date.
  </Accordion>

  <Accordion title="Choose Correct Type">
    Select the appropriate EBR type - using the wrong type could result in
    compliance issues. In particular, opt-ins backed by express written
    consent must be sent as Permission (`P`) — a Sale or Inquiry EBR will not
    override an Internal DNC entry.
  </Accordion>

  <Accordion title="Use keepBetterEBR When Importing">
    When bulk importing EBR records, use `keepBetterEBR: 1` to preserve existing
    records with longer validity periods and avoid accidentally reducing your
    compliance coverage.
  </Accordion>
</AccordionGroup>
