DNC List & Compliance
Do-Not-Call list, opt-out detection, and TCPA / TRAI guidance.
Outbound voice campaigns are heavily regulated. osmTalk gives you the primitives to stay compliant; the legal responsibility for who you call still sits with you and your legal team.
DNC list
Every organization has its own Do-Not-Call list. Numbers on the list are skipped automatically the moment the campaign dialer tries to call them — the lead gets status: "dnc_blocked" without using an attempt.
Add to DNC
Via the TypeScript SDK (recommended):
import { Osmtalk } from "@osmapi/osmtalk-sdk";
const client = new Osmtalk({ apiKey: process.env.OSMTALK_API_KEY! });
// Single entry
await client.dnc.add("+919876543210", {
reason: "Customer requested via email",
source: "manual",
});
// Bulk — useful when importing a regulator's DNC registry
await client.dnc.bulkAdd([
{ phoneNumber: "+919876543210", reason: "Customer opt-out", source: "opt_out" },
{ phoneNumber: "+919876543211", reason: "Regulator list", source: "registry" },
]);
// Inspect what's on the list
const entries = await client.dnc.list();
// Remove someone (e.g. customer re-consented)
await client.dnc.remove("dnc_xxx");Or via raw HTTP:
curl -X POST https://api.osmtalk.com/api/campaigns/dnc \
-H "Authorization: Bearer $OSMTALK_API_KEY" \
-d '{
"phoneNumber": "+919876543210",
"reason": "Customer requested via email",
"source": "manual"
}'Sources track where the entry came from:
source | Meaning |
|---|---|
manual | Added via dashboard or API |
opt_out | Auto-added when the bot detected opt-out language (see below) |
imported | Loaded from a third-party registry |
api | Posted by an external system |
Bulk import
For Indian customers, the National Do Not Call (NDNC) registry is the legal source of truth. Export it and bulk-import:
curl -X POST https://api.osmtalk.com/api/campaigns/dnc/bulk \
-H "Authorization: Bearer $OSMTALK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{ "phoneNumber": "+919876543210", "source": "imported", "reason": "NCCP TRAI" },
{ "phoneNumber": "+919876543211", "source": "imported", "reason": "NCCP TRAI" }
]
}'Up to 50,000 entries per request. Duplicates are silently ignored.
List and remove
curl https://api.osmtalk.com/api/campaigns/dnc
curl -X DELETE https://api.osmtalk.com/api/campaigns/dnc/{id}Opt-out keyword detection
When you mention "stop", "remove me", "unsubscribe", "don't call me", etc., regulations require you to immediately add the caller to your DNC.
osmTalk does this via the post-call analyzer. Enable enableSuccessEvaluation on the agent and include opt-out detection in your successCriteria or summaryPrompt:
{
"postCallAnalysis": {
"enabled": true,
"schema": [
{
"name": "requested_optout",
"type": "boolean",
"description": "Did the caller ask to be removed from the list, stop receiving calls, or say 'do not call'?"
}
]
}
}Then in your webhook handler, when analysis.requested_optout === true, POST to /api/campaigns/dnc to add their number.
A future native integration will auto-DNC on detection — track in the changelog.
Consent disclosure
US/CA/EU law requires the agent to disclose the call is being recorded. Enable a one-line preamble at the start of every call:
curl -X PUT https://api.osmtalk.com/api/settings/compliance \
-d '{
"enableConsentDisclosure": true,
"consentDisclosureText": "Hi, this call may be recorded for quality and compliance."
}'The bot speaks this line before its welcome message on every call when enabled.
Jurisdiction summaries (informational — not legal advice)
India — TRAI
- Calls must be made between 9 AM and 9 PM IST to non-DND numbers
- Calls to NDNC-registered numbers are prohibited
- Maintain consent records — keep your webhook handler logging caller-grants for at least 3 years
USA — TCPA
- Pre-recorded / artificial-voice calls require prior express written consent (PEWC) for marketing
- B2B is exempt for many use cases but transparency rule still applies
- Maintain DNC for 5 years
- Dial only 8 AM – 9 PM local recipient time
EU — GDPR + ePrivacy
- Consent required before automated calls
- Recipient must be able to opt out within the call ("press X to be removed")
- Recordings are personal data — define a retention policy and offer deletion
Built-in protections osmTalk gives you
| Feature | What it does |
|---|---|
| DNC list | Hard-blocks calls to listed numbers |
| Dialing window | Enforces per-timezone call hours |
| Consent disclosure | Auto-played preamble on every call |
| Recording retention | Configurable (default 90 days) |
| Audit trail | Every dial + outcome stored against the call ID |
| Webhook signing | HMAC-signed events for tamper-evident logs |
| PII-scrubbing recording fields | (planned for Phase X — currently store unscrubbed) |
What you're responsible for
- Lawful basis for calling each number (opt-in records, contract, legitimate interest)
- DNC scrubbing before upload to campaigns — osmTalk re-checks at dial time but the primary scrub should be your CRM's
- Localization — providing the right
timezoneper recipient when they span jurisdictions - Disclosures — keeping
consentDisclosureTextaccurate for the jurisdictions you operate in - Cooperation with regulators — being able to produce the call recording, transcript, and consent record on demand