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

# Depuración DNC: fuentes, frescura y el endpoint de verificación

> Configure una postura completa de No-Llamar (Do-Not-Call): active el opt-in de la organización, entienda de dónde provienen las fuentes de sincronización, lea los campos de fuente y frescura del endpoint de verificación, y sepa qué significa la advertencia fail-open para su tráfico.

# Depuración DNC: fuentes, frescura y el endpoint de verificación

Una depuración de No-Llamar (Do-Not-Call, DNC) responde a una pregunta
antes de que usted envíe: **¿está este número en una lista que bloquea
o restringe su contacto?** Orbit verifica sus propias listas (flags de
contacto, entradas DNC, supresión, consentimiento), la lista de
plataforma completa, los feeds federales/estatales/TCR de EE. UU. y
varios registros nacionales internacionales; y la misma cadena que el
camino de envío hace cumplir es legible como API, de modo que puede
hacer una comprobación previa (pre-flight) de una lista fría sin
arriesgar un envío infractor.

Esta página es el panorama de extremo a extremo: cuándo importa la
depuración, cómo activarla, de dónde provienen los datos sincronizados,
cómo leer los `source` y `last_synced_at` del endpoint de verificación,
y la única advertencia fail-open que debe gestionar. Para las puertas
de envío que consumen el resultado, consulte
[Send Gates](/compliance/send-gates).

Todos los endpoints siguientes están en la raíz
`https://api.orbit.devotel.io/api/v1/compliance`.

<Warning>
  Esta página describe los controles de plataforma de Orbit. **No es
  asesoramiento legal.** Si un número dado está fuera de su alcance
  depende de su jurisdicción, de sus destinatarios y de lo que envíe.
  Confírmelo con asesoría legal cualificada.
</Warning>

***

## Cuándo importa la depuración DNC

Las obligaciones DNC provienen de más de un registro, y se solapan:

* **DNC federal de EE. UU. (Registro Nacional de la FTC).** Las
  llamadas de telemercadotecnia y los textos de marketing a un número
  registrado federalmente están restringidos; una depuración contra el
  registro federal es la defensa de base antes de cualquier campaña
  saliente.
* **Registros estatales de EE. UU.** Varios estados administran sus
  propias listas DNC por encima de la federal. Un número puede estar
  ausente federalmente pero registrado en, por ejemplo, Pensilvania —
  así que una depuración solo federal no está completa para el tráfico
  de EE. UU.
* **TCR Universal Opt-Out.** La lista de opt-out universal de The
  Campaign Registry captura los números que se dieron de baja de los
  textos A2P a nivel de registro. Honrarla forma parte de la higiene de
  envío de textos 10DLC en EE. UU., independientemente de su propia
  lista de supresión.
* **Registros nacionales internacionales.** Fuera de EE. UU., se
  aplican listas nacionales equivalentes — el TPS y CTPS del Reino
  Unido, el Do Not Call Register de Australia, el NDNC de la India.
  Estos son por jurisdicción: usted depura una campaña del Reino Unido
  contra los registros del Reino Unido, y por eso el endpoint de
  verificación acepta un filtro `country` (abajo).

Nada de esto sustituye su propia capa de supresión — un destinatario
que le respondió STOP a *usted* está restringido independientemente de
cualquier registro nacional. La cadena de depuración trata su
supresión, los opt-outs de consentimiento y los registros nacionales
como una sola respuesta combinada.

***

## Active el toggle de tenant

El endpoint de verificación está **desactivado por defecto** por
organización. Hasta que usted opte por activarlo — o hasta que Orbit
tenga un feed sincronizado para la plataforma — el endpoint devuelve
`403 DNC_SYNC_NOT_ENABLED`:

```json theme={null}
{
  "error": {
    "code": "DNC_SYNC_NOT_ENABLED",
    "message": "DNC check endpoint requires the per-org opt-in flag ...",
    "status": 403
  }
}
```

Actívelo en la configuración de cumplimiento de su organización (el
parámetro `dnc_sync_enabled` — consulte el
[posture map](/compliance/posture-overview), que lista este toggle y su
valor por defecto). Una sola conmutación habilita tanto la verificación
de un número como la depuración masiva.

<Note>
  **La puerta se retira automáticamente cuando los feeds están
  sincronizados.** El toggle de organización es el reconocimiento de
  que, mientras no se sincronice un feed federal, Orbit no está
  depurando contra el registro de la FTC por usted. Una vez que la
  plataforma tenga una instantánea federal/estatal/TCR (o
  internacional) sincronizada, el endpoint responde directamente y la
  puerta 403 deja de aplicar — el campo `federal_feeds_synced` en cada
  respuesta le dice en qué estado se encuentra. Su propia aplicación de
  DNC, supresión y consentimiento en el camino de envío no se ve
  afectada en ningún caso.
</Note>

***

## De dónde proviene la lista (cableado de feeds)

Los datos DNC sincronizados llegan de feeds upstream, refrescados
diariamente en la lista DNC de toda la plataforma. Lo que un operador
configure determina cuál de los valores `source` ve devuelto por el
endpoint de verificación.

**Estas son variables de entorno a nivel operador.** En la plataforma
hospedada (SaaS) de Orbit están configuradas por usted; el operador
SaaS controla qué feeds están vivos. Le importan directamente solo si
usted auto-hospeda Orbit — en ese caso, configúrelas en su despliegue:

* **`DEVOTEL_DNC_FEED_FILE`** — un volumen montado que contiene una
  instantánea federal/estatal/TCR procurada. La sincronización diaria
  lo lee, analiza cada número dado de baja y lo inserta en la lista DNC
  de la plataforma etiquetado con su fuente (`federal_dnc`,
  `state_dnc:XX`, o `tcr`).
* **`DEVOTEL_DNC_FEED_URL`** — una descarga autenticada de la misma
  instantánea, como alternativa a un archivo montado. El archivo tiene
  prioridad cuando ambos están configurados.

La sincronización se ejecuta **una vez por día UTC** (los feeds
publican una vez por día hábil; la ejecución apunta a las 03:00 UTC de
modo que una ventana de envío matutina vea datos frescos). Volver a
ejecutar la misma instantánea es una no-operación más allá de refrescar
la marca temporal — el upsert es idempotente.

**Alternativa: extracción directa de TCR.** Cuando no se configura un
archivo/URL de instantánea pero están configuradas las credenciales de
socio TCR de pago — `DEVOTEL_TCR_API_KEY` junto con
`DEVOTEL_TCR_PARTNER_ID` — la sincronización diaria extrae el registro
TCR Universal Opt-Out directamente de la API del socio y lo inserta
como `source: "tcr"`. Esto proporciona la depuración TCR desde la
suscripción TCR existente, sin un CSV fuera de banda.

<Note>
  La misma instantánea que la sincronización diaria escribe en la lista
  DNC de la plataforma también se carga en memoria por la API al
  arrancar, de modo que el endpoint de verificación puede responder a
  una consulta federal/estatal/TCR sin esperar a la siguiente escritura
  diaria. `federal_feeds_synced: true` en la respuesta significa que ese
  feed en memoria está vivo.
</Note>

***

## Lea el endpoint de verificación

`GET /compliance/dnc/check` informa si un número E.164 está en
cualquier fuente DNC que el camino de envío haga cumplir. Es de solo
lectura — no realiza ningún envío.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dnc/check?phone=%2B14155550101" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Un acierto devuelve:

```json theme={null}
{
  "on_dnc": true,
  "source": "federal_dnc",
  "last_synced_at": "2026-08-26T03:00:12.441Z",
  "jurisdictions": ["US Federal DNC"],
  "federal_feeds_synced": true,
  "intl_feeds_synced": false
}
```

Un número no restringido devuelve `"on_dnc": false`,
`"source": "none"`, y un `jurisdictions` vacío.

Los campos que transportan la postura:

* **`source`** — qué fuente produjo el primer acierto, una de
  `federal_dnc`, `state_dnc` (un registro estatal de EE. UU.), `tcr`
  (el TCR Universal Opt-Out), `intl_dnc` (un registro nacional
  internacional), `suppression` (su propia capa de supresión), o `none`
  (no está en ninguna lista). `jurisdictions` lista **cada** origen
  coincidente, así que un número tanto en el registro federal como en
  uno estatal muestra ambos.
* **`last_synced_at`** — la marca temporal de frescura de la fuente
  coincidente: cuándo se sincronizó por última vez la instantánea
  federal/estatal/TCR (o la fila en la que acertó). La sincronización
  diaria estampa una fila de heartbeat en cada ejecución, así que este
  campo siempre transporta una señal de "último sincronizado" para las
  fuentes respaldadas por feeds, en vez de quedarse en silencio cuando
  ninguna fila coincide. Sus propias fuentes de supresión/consentimiento
  no tienen sincronización, así que para un acierto solo de supresión
  el campo refleja el propio evento de opt-out.
* **`federal_feeds_synced` / `intl_feeds_synced`** — si la API ha
  ingerido realmente una instantánea federal/estatal/TCR de EE. UU. y
  una instantánea de registro nacional internacional, respectivamente.
  Léalos en cada respuesta: distinguen "el número está limpio" de "el
  número está limpio **y** una depuración federal respaldó esa
  respuesta".

**Filtro por jurisdicción.** Agregue `country` (ISO alpha-2) para
limitar la consulta del registro internacional a una jurisdicción:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dnc/check?phone=%2B442071838750&country=GB" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Con `country=GB`, solo los registros del Reino Unido (TPS/CTPS) pueden
producir una coincidencia internacional — una campaña destinada al
Reino Unido nunca se marca sobre un registro de un país no relacionado.

**Masivo.** Para depurar una lista entera o una audiencia de campaña en
una sola llamada, use `POST /compliance/dnc/scrub` con un array
`phones` (hasta 500 números por petición; se eliminan los duplicados).
Ejecuta la misma cadena por número y devuelve veredictos por número más
conteos de `on_dnc` / `clear`. Se aplica la misma puerta de
organización.

***

## Cómo lo consume el lado del envío

El endpoint de verificación es una **lectura** de la misma cadena que
el camino de envío **hace cumplir**. Usted no conecta la depuración a
sus envíos — Orbit ya lo hace:

* **Mensajería (SMS / MMS / WhatsApp / …).** Antes de la expedición, el
  camino de envío responde "¿este destinatario está dado de baja?"
  contra las mismas fuentes DNC — su flag DNC de contacto, su lista
  DNC, la lista de supresión (la señal STOP entre canales), la lista
  DNC de la plataforma (donde aterriza el feed federal/estatal/TCR
  diario), y los opt-outs de consentimiento registrados. Un acierto
  descarta el envío.
* **Voz / marcador.** El marcador ejecuta la misma cadena de
  cumplimiento antes de originar una llamada — STOP entre canales, DNC
  de contacto, DNC de plataforma y consentimiento — así que un número
  que se dio de baja por SMS no es luego marcado por voz. El camino de
  envío falla **cerrado** (fail-closed): si la propia verificación de
  cumplimiento no puede completarse, la llamada se difiere en vez de
  marcarse.

Por tanto, el trabajo del endpoint es de pre-flight, no de imposición:
consúltelo (o la depuración masiva) sobre una lista fría **antes** de
una campaña para eliminar los números que la puerta bloquearía de todos
modos — y para sacarlos a la superficie en sus propios registros.

***

## La advertencia fail-open

El endpoint de lectura es **fail-open en la capa de fuente**: si una
fuente DNC no se puede consultar, la verificación continúa con las
demás y devuelve la mejor respuesta que pueda. La consecuencia concreta
que debe entender:

> **Mientras no se sincronice un feed federal, un número que solo está
> en el registro federal de la FTC se lee como no restringido**
> (`on_dnc: false`).

Por eso el endpoint está cerrado por puerta hasta que usted opte por
activarlo, y por eso `federal_feeds_synced` viaja en cada respuesta. Se
siguen dos reglas operacionales:

1. **No trate un resultado no restringido como un puerto seguro federal
   salvo `federal_feeds_synced: true`.** Un veredicto no restringido
   con `federal_feeds_synced: false` solo significa que sus propias
   listas, la supresión, el consentimiento y la lista de la plataforma
   no marcaron el número.
2. **La puerta estricta es el camino de envío.** El camino de lectura
   es fail-open por diseño; el camino de envío no lo es. Un falso
   negativo de una consulta pre-flight nunca se convierte en un envío —
   la cadena en tiempo de envío vuelve a verificar las mismas fuentes y
   bloquea lo que encuentra.

En el SaaS de Orbit, trate `federal_feeds_synced: false` como "ninguna
depuración federal está respaldando esta respuesta todavía" y pese eso
en su decisión de confiar en el pre-flight para una campaña de EE. UU.
Los auto-hospedadores cierran la brecha configurando un feed (arriba).

***

## Verifique antes de una campaña

Haga pre-flight de una audiencia de campaña con la depuración masiva, y
luego actúe sobre los veredictos:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/compliance/dnc/scrub" \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phones": ["+14155550101", "+442071838750", "+14155550101"],
    "country": "GB"
  }'
```

```json theme={null}
{
  "results": [
    { "phone": "+14155550101", "on_dnc": true, "source": "federal_dnc", "jurisdictions": ["US Federal DNC"] },
    { "phone": "+442071838750", "on_dnc": false, "source": "none", "jurisdictions": [] }
  ],
  "summary": { "total": 2, "on_dnc": 1, "clear": 1, "duplicates_removed": 1 },
  "federal_feeds_synced": true,
  "intl_feeds_synced": false
}
```

Elimine de la audiencia los números con `on_dnc: true` antes de enviar.
Verifique `federal_feeds_synced` / `intl_feeds_synced` en la misma
respuesta para saber qué registros respaldaron realmente los
veredictos, y verifique `last_synced_at` por resultado para confirmar
que los datos están frescos. Para una lista más grande, páginela en
trozos de 500 números.

***

Vea también:

* [Send Gates](/compliance/send-gates) — las puertas en tiempo de envío
  de horas silenciosas / DNC / RND / RMD y el alto de emergencia.
* [TCPA Known-Litigator Gate](/compliance/tcpa-known-litigator) — el
  chequeo de procedencia del destinatario que complementa la depuración
  DNC para riesgo de TCPA en EE. UU.
* [Batch DNC Pre-Flight Scrubbing](/guides/dnc-preflight-scrub) — el
  flujo de trabajo de campaña en torno a la depuración masiva: cierre,
  troceo y enrutamiento de números marcados.
* [Opt-Out & Suppression Lists](/compliance/opt-out-suppression) — cómo
  el STOP de un destinatario aterriza en la capa de supresión que la
  cadena DNC lee.
* [Your Tenant Compliance Posture](/compliance/posture-overview) — el
  mapa de toggles, incluida la fila `dnc_sync_enabled` de esta página.
