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

# DNC-Scrubbing: Quellen, Aktualität und der Check-Endpunkt

> Konfigurieren Sie eine vollständige Do-Not-Call-Haltung – aktivieren Sie das Organisations-Opt-in, verstehen Sie, woher die Sync-Quellen kommen, lesen Sie die Quell- und Aktualitätsfelder des Check-Endpunkts und wissen Sie, was der fail-open-Vorbehalt für Ihren Verkehr bedeutet.

# DNC-Scrubbing: Quellen, Aktualität und der Check-Endpunkt

Ein Do-Not-Call-Scrub beantwortet vor dem Versand eine Frage: **steht
diese Nummer auf einer Liste, die eine Kontaktaufnahme blockiert oder
einschränkt?** Orbit prüft Ihre eigenen Listen (Kontakt-Flags, DNC-Einträge,
Suppression, Consent), die plattformweite Liste, die US-Bundes-,
Staats- und TCR-Feeds sowie mehrere internationale staatliche
Register – und dieselbe Kette, die der Versandpfad durchsetzt, ist als
API lesbar, sodass Sie eine kalte Liste vorab prüfen können, ohne einen
verstoßenden Versand zu riskieren.

Diese Seite ist das Gesamtbild: wann Scrubbing zählt, wie Sie es
einschalten, woher die synchronisierten Daten kommen, wie Sie die Felder
`source` und `last_synced_at` des Check-Endpunkts lesen und der eine
fail-open-Vorbehalt, den Sie steuern müssen. Für die Versandzeit-Gates,
die das Ergebnis konsumieren, siehe [Send Gates](/compliance/send-gates).

Alle untenstehenden Endpunkte sind unter
`https://api.orbit.devotel.io/api/v1/compliance` verwurzelt.

<Warning>
  Diese Seite beschreibt die Plattformsteuerungen von Orbit. Sie ist
  **keine Rechtsberatung.** Ob eine bestimmte Nummer für Sie tabu ist,
  hängt von Ihrer Jurisdiktion, Ihren Empfängern und davon ab, was Sie
  senden. Ziehen Sie qualifizierten Rechtsbeistand hinzu.
</Warning>

***

## Wann DNC-Scrubbing zählt

DNC-Verpflichtungen stammen aus mehr als einem Register, und sie lagern
sich:

* **US-Bundes-DNC (FTC National Registry).** Telemarketing-Anrufe und
  Marketing-Texte an eine bundesweit registrierte Nummer sind
  eingeschränkt; ein Scrub gegen das Bundesregister ist die
  Basisverteidigung vor jeder Outbound-Kampagne.
* **US-Bundesstaatsregister.** Mehrere Staaten führen zusätzlich zum
  Bundesregister eigene DNC-Listen. Eine Nummer kann bundesweit
  fehlen, aber beispielsweise in Pennsylvania registriert sein – ein
  rein bundesweiter Scrub ist für US-Verkehr daher nicht
  vollständig.
* **TCR Universal Opt-Out.** Die universelle Opt-out-Liste des
  Campaign Registry erfasst Nummern, die A2P-Texting auf
  Registerebene abgelehnt haben. Ihre Beachtung gehört zur
  US-10DLC-Texting-Hygiene – unabhängig von Ihrer eigenen
  Suppressionsliste.
* **Internationale staatliche Register.** Außerhalb der USA gelten
  gleichwertige staatliche Listen – das britische TPS und CTPS,
  Australiens Do Not Call Register, Indiens NDNC. Diese sind
  jurisdiktionsabhängig: Sie scrubben eine UK-Kampagne gegen
  UK-Register, weshalb der Check-Endpunkt einen `country`-Filter
  akzeptiert (unten).

Nichts davon ersetzt Ihre eigene Suppressionsschicht – ein Empfänger,
der *Ihnen* mit STOP geantwortet hat, ist unabhängig von jedem
staatlichen Register eingeschränkt. Die Scrub-Kette behandelt Ihre
Suppression, Consent-Opt-outs und die staatlichen Register als eine
kombinierte Antwort.

***

## Den Mandantenschalter aktivieren

Der Check-Endpunkt ist pro Organisation **standardmäßig aus**. Bis Sie
sich anmelden – oder bis Orbit einen Feed für die Plattform
synchronisiert hat – gibt der Endpunkt `403 DNC_SYNC_NOT_ENABLED`
zurück:

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

Schalten Sie ihn in den Compliance-Einstellungen Ihrer Organisation ein
(die Einstellung `dnc_sync_enabled` – siehe die
[Haltungskarte](/compliance/posture-overview), die diesen Schalter und
seinen Standardwert aufführt). Ein einziges Umlegen aktiviert sowohl
den Einzelnummer-Check als auch den Bulk-Scrub.

<Note>
  **Das Gate geht in den Ruhestand, sobald Feeds synchronisiert sind.**
  Der Organisations-Schalter ist die Bestätigung, dass Orbit, solange
  kein Bundesfeed synchronisiert ist, für Sie nicht gegen das
  FTC-Register scrubbt. Sobald die Plattform einen Bundes-,
  Staats-, TCR- (oder internationalen) Snapshot synchronisiert hat,
  antwortet der Endpunkt direkt und das 403-Gate gilt nicht mehr –
  das Feld `federal_feeds_synced` auf jeder Antwort sagt Ihnen, in
  welchem Zustand Sie sich befinden. Ihre eigene DNC-, Suppressions-
  und Consent-Durchsetzung auf dem Versandpfad bleibt in beiden
  Fällen unberührt.
</Note>

***

## Woher die Liste kommt (Feed-Verdrahtung)

Die synchronisierten DNC-Daten kommen aus Upstream-Feeds und werden
täglich in die plattformweite DNC-Liste aufgefrischt. Was ein Betreiber
konfiguriert, bestimmt, welche der `source`-Werte Sie vom
Check-Endpunkt zurücksehen.

**Dies sind Umgebungsvariablen auf Betreiberebene.** Auf der
SaaS-Plattform von Orbit sind sie für Sie gesetzt; der SaaS-Betreiber
steuert, welche Feeds live sind. Unmittelbar relevant sind sie nur,
wenn Sie Orbit selbst hosten – dann konfigurieren Sie sie in Ihrem
Deployment:

* **`DEVOTEL_DNC_FEED_FILE`** – ein gemountetes Volume, das einen
  beschafften Bundes-/Staats-/TCR-Snapshot enthält. Der tägliche
  Sync liest ihn, parst jede ausgeschlossene Nummer und upsertet sie
  mit Quell-Tag in die plattformweite DNC-Liste (`federal_dnc`,
  `state_dnc:XX` oder `tcr`).
* **`DEVOTEL_DNC_FEED_URL`** – ein authentifizierter Download desselben
  Snapshots, als Alternative zu einer gemounteten Datei. Die Datei
  hat Vorrang, wenn beides gesetzt ist.

Der Sync läuft **einmal pro UTC-Tag** (Feeds veröffentlichen einmal pro
Geschäftstag; der Lauf zielt auf 03:00 UTC, damit ein morgendliches
Sendefenster frische Daten sieht). Das erneute Ausführen desselben
Snapshots ist – über das Auffrischen des Zeitstempels hinaus – ein
No-op; das Upsert ist idempotent.

**Fallback: direkter TCR-Abruf.** Wenn keine Snapshot-Datei/URL
konfiguriert ist, aber die bezahlten TCR-Partner-Zugangsdaten gesetzt
sind – `DEVOTEL_TCR_API_KEY` zusammen mit `DEVOTEL_TCR_PARTNER_ID` –
zieht der tägliche Sync die TCR-Universal-Opt-Out-Registry direkt von
der Partner-API und upsertet sie als `source: "tcr"`. Damit erhalten
Sie den TCR-Scrub aus dem bestehenden TCR-Abonnement ohne
Out-of-band-CSV.

<Note>
  Derselbe Snapshot, den der tägliche Sync in die plattformweite
  DNC-Liste schreibt, wird beim Start der API auch in den Speicher
  geladen, sodass der Check-Endpunkt eine Bundes-/Staats-/TCR-Abfrage
  beantworten kann, ohne auf den nächsten täglichen Schreiblauf zu
  warten. `federal_feeds_synced: true` auf der Antwort bedeutet, dass
  dieser In-Memory-Feed live ist.
</Note>

***

## Den Check-Endpunkt lesen

`GET /compliance/dnc/check` meldet, ob eine E.164-Nummer auf einer
DNC-Quelle steht, die der Versandpfad durchsetzt. Er ist schreibgeschützt
– er führt keinen Versand durch.

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

Ein Treffer gibt zurück:

```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
}
```

Eine saubere Nummer gibt `"on_dnc": false`, `"source": "none"` und eine
leere `jurisdictions` zurück.

Die Felder, die die Haltung tragen:

* **`source`** – welche Quelle den ersten Treffer lieferte, einer von
  `federal_dnc`, `state_dnc` (ein US-Staatsregister), `tcr` (das TCR
  Universal Opt-Out), `intl_dnc` (ein internationales staatliches
  Register), `suppression` (Ihre eigene Suppressionsschicht) oder
  `none` (auf keiner Liste). `jurisdictions` listet **jede**
  passende Herkunft, sodass eine Nummer, die sowohl im Bundes- als
  auch in einem Staatsregister steht, beide sichtbar macht.
* **`last_synced_at`** – der Aktualitäts-Zeitstempel der passenden
  Quelle: wann der Bundes-/Staats-/TCR-Snapshot (oder die Trefferzeile)
  zuletzt synchronisiert wurde. Der tägliche Sync stempelt bei jedem
  Lauf eine Heartbeat-Zeile, sodass dieses Feld für die
  feed-gestützten Quellen immer ein „zuletzt synchronisiert"-Signal
  trägt, statt still zu werden, wenn keine Zeile passt. Ihre eigenen
  Suppressions-/Consent-Quellen haben keinen Sync; bei einem reinen
  Suppressions-Treffer spiegelt das Feld das Opt-out-Ereignis selbst.
* **`federal_feeds_synced` / `intl_feeds_synced`** – ob die API
  tatsächlich einen US-Bundes-/Staats-/TCR-Snapshot bzw. einen
  internationalen Staatsregister-Snapshot aufgenommen hat. Lesen Sie
  diese auf jeder Antwort: Sie unterscheiden „die Nummer ist sauber"
  von „die Nummer ist sauber **und** ein Bundes-Scrub hat diese
  Antwort gestützt".

**Jurisdiktionsfilter.** Fügen Sie `country` (ISO alpha-2) hinzu, um
die internationale Registerabfrage auf eine Jurisdiktion
einzugrenzen:

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

Mit `country=GB` können nur UK-Register (TPS/CTPS) einen
internationalen Treffer liefern – eine UK-gebundene Kampagne wird nie
über den Eintrag eines unbeteiligten Landes gemeldet.

**Bulk.** Um eine ganze Liste oder Kampagnenzielgruppe in einem Aufruf
zu scrubben, verwenden Sie `POST /compliance/dnc/scrub` mit einem
`phones`-Array (bis zu 500 Nummern pro Anfrage; Duplikate werden
entfernt). Es führt dieselbe Kette pro Nummer aus und gibt
Einzelergebnisse plus `on_dnc`- / `clear`-Zählwerte zurück. Dasselbe
Organisations-Gate gilt.

***

## Wie die Versandseite es konsumiert

Der Check-Endpunkt ist ein **Lesen** derselben Kette, die der
Versandpfad **durchsetzt**. Sie verdrahten den Scrub nicht in Ihre
Versendungen – Orbit tut das bereits:

* **Messaging (SMS / MMS / WhatsApp / …).** Vor dem Dispatch beantwortet
  der Versandpfad „ist dieser Empfänger ausgeschlossen?" gegen dieselben
  DNC-Quellen – Ihr Kontakt-DNC-Flag, Ihre DNC-Liste, die
  Suppressionsliste (das kanalübergreifende STOP-Signal), die
  plattformweite DNC-Liste (wo der tägliche Bundes-/Staats-/TCR-Feed
  landet) und aufgezeichnete Consent-Opt-outs. Ein Treffer verwirft den
  Versand.
* **Voice / Dialer.** Der Dialer führt dieselbe Compliance-Kette vor dem
  Anrufaufbau aus – kanalübergreifendes STOP, Kontakt-DNC,
  Plattform-DNC und Consent – sodass eine per SMS ausgeschlossene
  Nummer anschließend nicht voice-gewählt wird. Der Versandpfad
  versagt **geschlossen (fail-closed)**: Kann der Compliance-Check
  selbst nicht abgeschlossen werden, wird der Anruf verschoben statt
  gewählt.

Die Aufgabe des Endpunkts ist also die Vorprüfung, nicht die
Durchsetzung: Fragen Sie ihn (oder den Bulk-Scrub) zu einer kalten
Liste **vor** einer Kampagne ab, um Nummern zu entfernen, die das Gate
ohnehin blockieren würde – und um sie für Ihre eigenen Aufzeichnungen
sichtbar zu machen.

***

## Der fail-open-Vorbehalt

Der Leseendpunkt ist auf der Quellschicht **fail-open**: Ist eine
DNC-Quelle nicht abfragbar, setzt der Check mit den anderen fort und
gibt die beste verfügbare Antwort zurück. Die konkrete Konsequenz, die
Sie verstehen müssen:

> **Solange kein Bundesfeed synchronisiert ist, wird eine Nummer, die
> nur im FTC-Bundesregister steht, als sauber zurückgelesen**
> (`on_dnc: false`).

Deshalb ist der Endpunkt bis zu Ihrer Anmeldung gated, und deshalb
reist `federal_feeds_synced` auf jeder Antwort mit. Zwei operative
Regeln folgen:

1. **Behandeln Sie ein sauberes Ergebnis nicht als bundesweite
   Safe-Harbor, sofern nicht `federal_feeds_synced: true`.** Ein
   sauberer Befund mit `federal_feeds_synced: false` bedeutet nur,
   dass Ihre eigenen Listen, Suppression, Consent und die
   Plattformliste die Nummer nicht gemeldet haben.
2. **Das strikte Gate ist der Versandpfad.** Der Lesepfad ist per
   Design fail-open, der Versandpfad nicht. Ein falsch negatives
   Ergebnis einer Vorab-Abfrage wird nie zu einem Versand – die
   Versandzeit-Kette prüft dieselben Quellen erneut und blockiert,
   was sie findet.

Behandeln Sie auf der Orbit-SaaS `federal_feeds_synced: false` als
„kein Bundes-Scrub stützt diese Antwort bislang", und berücksichtigen
Sie das bei der Entscheidung, ob Sie die Vorprüfung für eine
US-Kampagne heranziehen. Selbsthoster schließen die Lücke, indem sie
einen Feed konfigurieren (oben).

***

## Vor einer Kampagne verifizieren

Prüfen Sie eine Kampagnenzielgruppe mit dem Bulk-Scrub vorab und
handeln Sie dann nach den Befunden:

```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
}
```

Entfernen Sie die `on_dnc: true`-Nummern vor dem Versand aus der
Zielgruppe. Prüfen Sie `federal_feeds_synced` / `intl_feeds_synced` auf
derselben Antwort, um zu wissen, welche Register die Befunde
tatsächlich gestützt haben, und prüfen Sie `last_synced_at` pro
Ergebnis, um die Aktualität der Daten zu bestätigen. Für eine größere
Liste blättern Sie sie in 500er-Blöcken durch.

***

Siehe auch:

* [Send Gates](/compliance/send-gates) – die Ruhezeiten- / DNC- / RND- /
  RMD-Versandzeit-Gates und der Notfall-Stopp.
* [TCPA Known-Litigator Gate](/compliance/tcpa-known-litigator) – der
  Empfängerprovenienz-Check, der den DNC-Scrub für das US-TCPA-Risiko
  ergänzt.
* [Batch DNC Pre-Flight Scrubbing](/guides/dnc-preflight-scrub) – der
  Kampagnen-Workflow um den Bulk-Scrub: Gating, Chunking und Routing
  gemeldeter Nummern.
* [Opt-Out & Suppression Lists](/compliance/opt-out-suppression) – wie
  das STOP eines Empfängers auf der Suppressionsschicht landet, die die
  DNC-Kette liest.
* [Ihre Mandanten-Compliance-Haltung](/compliance/posture-overview) –
  die Schalterkarte, einschließlich der `dnc_sync_enabled`-Zeile dieser
  Seite.
