Compliance API
DSAR, consent records, compliance policy configuration Base path:/api/v1/compliance
Endpoint count: 115
GET /api/v1/compliance/10dlc/brands//vetting
GET /api/v1/compliance/10dlc/brands/{id}/vetting—
GET /api/v1/compliance/10dlc/campaigns//status
GET /api/v1/compliance/10dlc/campaigns/{id}/status—
GET /api/v1/compliance/10dlc/status
GET /api/v1/compliance/10dlc/statusGET /api/v1/compliance/10dlc/wizard
GET /api/v1/compliance/10dlc/wizardGET /api/v1/compliance/10dlc/wizard/draft
GET /api/v1/compliance/10dlc/wizard/draftGET /api/v1/compliance/ai-disclosure/
GET /api/v1/compliance/ai-disclosure/GET /api/v1/compliance/audit-export
GET /api/v1/compliance/audit-exportGET /api/v1/compliance/audit-export/
GET /api/v1/compliance/audit-export/{jobId}—
GET /api/v1/compliance/audit-export//verify
GET /api/v1/compliance/audit-export/{jobId}/verify—
GET /api/v1/compliance/baa/
GET /api/v1/compliance/baa/GET /api/v1/compliance/baa/download
GET /api/v1/compliance/baa/downloadGET /api/v1/compliance/baa/template
GET /api/v1/compliance/baa/templateGET /api/v1/compliance/dpa/
GET /api/v1/compliance/dpa/GET /api/v1/compliance/dpa/download
GET /api/v1/compliance/dpa/downloadGET /api/v1/compliance/dpa/template
GET /api/v1/compliance/dpa/templateGET /api/v1/compliance/binder/
GET /api/v1/compliance/binder/GET /api/v1/compliance/binder/
GET /api/v1/compliance/binder/{jobId}—
GET /api/v1/compliance/binder/frameworks
GET /api/v1/compliance/binder/frameworksGET /api/v1/compliance/brands
GET /api/v1/compliance/brandsGET /api/v1/compliance/campaigns
GET /api/v1/compliance/campaignsGET /api/v1/compliance/check
GET /api/v1/compliance/checkGET /api/v1/compliance/compliance-profiles
GET /api/v1/compliance/compliance-profilesGET /api/v1/compliance/compliance-profiles/
GET /api/v1/compliance/compliance-profiles/{id}—
GET /api/v1/compliance/compliance-profiles//numbers
GET /api/v1/compliance/compliance-profiles/{id}/numbers—
GET /api/v1/compliance/compliance-profiles/eligible
GET /api/v1/compliance/compliance-profiles/eligibleGET /api/v1/compliance/consent/history
GET /api/v1/compliance/consent/historyGET /api/v1/compliance/consent/lookup
GET /api/v1/compliance/consent/lookupGET /api/v1/compliance/consent/managers
GET /api/v1/compliance/consent/managersGET /api/v1/compliance/countries
GET /api/v1/compliance/countriesGET /api/v1/compliance/countries/
GET /api/v1/compliance/countries/{code}—
GET /api/v1/compliance/country-rules/
GET /api/v1/compliance/country-rules/GET /api/v1/compliance/dlt-india/consent-templates
GET /api/v1/compliance/dlt-india/consent-templatesGET /api/v1/compliance/dlt-india/content-templates
GET /api/v1/compliance/dlt-india/content-templatesGET /api/v1/compliance/dlt-india/headers
GET /api/v1/compliance/dlt-india/headersGET /api/v1/compliance/dlt-india/nudge
GET /api/v1/compliance/dlt-india/nudgeGET /api/v1/compliance/dlt-india/principal-entities
GET /api/v1/compliance/dlt-india/principal-entitiesCheck DNC status for a phone number
GET /api/v1/compliance/dnc/checkorganizations.settings.dnc_sync_enabled (audit #SCAN-CMP-005). Federal/state/TCR feed ingestion is currently a stub; tenants must explicitly opt in (acknowledging the gap) before the endpoint is served. When the flag is OFF, responses are HTTP 403 with code DNC_SYNC_NOT_ENABLED. When ON, responses
E.164 phone number to check (e.g. +14155551234).
Optional ISO 3166-1 alpha-2 country code. Reserved for future country-specific lookups; currently informational.
GET /api/v1/compliance/documents
GET /api/v1/compliance/documentsGET /api/v1/compliance/dsar/
GET /api/v1/compliance/dsar/GET /api/v1/compliance/dsar/
GET /api/v1/compliance/dsar/{id}—
GET /api/v1/compliance/dsar/erasure-requests
GET /api/v1/compliance/dsar/erasure-requestsGET /api/v1/compliance/dsar/sla
GET /api/v1/compliance/dsar/slaGet compliance emergency-stop status
GET /api/v1/compliance/emergency-stopactive=true, every outbound SMS / MMS / voice / dialer activation for this organization is blocked with HTTP 403 ORG_COMPLIANCE_EMERGENCY_STOP. Toggle via POST /compliance/emergency-stop/activate or /deactivate (owner/admin).
GET /api/v1/compliance/preference-center
GET /api/v1/compliance/preference-centerGET /api/v1/compliance/preferences/
GET /api/v1/compliance/preferences/{token}—
Preview quiet-hours dispatch decision
GET /api/v1/compliance/quiet-hours/previewnext_allowed_at field on a blocked result is the DST-safe ISO timestamp of the next moment the gate would pass.
E.164 recipient phone number (e.g. +14155551234).
Channel of the prospective send.
Optional IANA timezone (e.g. America/New_York) overriding the area-code resolution. Useful when the recipient’s tz is known from a CRM record.
GET /api/v1/compliance/requirements
GET /api/v1/compliance/requirementsGet the org’s FCC Robocall Mitigation Database registration
GET /api/v1/compliance/rmdScrub a destination number against the FCC Reassigned Numbers Database
GET /api/v1/compliance/rnd/checkconsent_date, and whether the FCC reassigned-number safe harbor (47 CFR § 64.1200(m)) applies. Read-only — does not perform a send. Use this before any outbound SMS / Voice initiation to avoid TCPA liability for contacting a reassigned number. Gated behind organizations.settings.rnd_scrub_enabled. Tenants must explicitly opt in before the endpoint is served. When the flag is OFF, responses are HTTP 403 with code RND_SCRUB_NOT_ENABLED. When ON, feed_synced reports whether an RND disconnect snapshot is loaded: the feed ingestion pipeline runs at boot and installs the FCC RND source when the SomosGov / reassigned.us snapshot is configured, so matching verdicts return feed_synced: true; until a snapshot is configured every verdict stays no_data / feed_synced: false.
E.164 destination number to scrub (e.g. +14155551234).
ISO calendar date (YYYY-MM-DD) the prior-express consent was obtained / last verified.
GET /api/v1/compliance/sender-id-registrations
GET /api/v1/compliance/sender-id-registrationsList ITG traceback cases
GET /api/v1/compliance/tracebackGet one ITG traceback case
GET /api/v1/compliance/traceback/{id}—
GET /api/v1/compliance/use-cases
GET /api/v1/compliance/use-casesPOST /api/v1/compliance/10dlc/brand
POST /api/v1/compliance/10dlc/brandPOST /api/v1/compliance/10dlc/brands//revet
POST /api/v1/compliance/10dlc/brands/{id}/revet—
POST /api/v1/compliance/10dlc/campaign
POST /api/v1/compliance/10dlc/campaignPOST /api/v1/compliance/10dlc/decode-rejection
POST /api/v1/compliance/10dlc/decode-rejectionPOST /api/v1/compliance/10dlc/preflight
POST /api/v1/compliance/10dlc/preflightPOST /api/v1/compliance/10dlc/wizard/preflight
POST /api/v1/compliance/10dlc/wizard/preflightPOST /api/v1/compliance/10dlc/wizard/submit
POST /api/v1/compliance/10dlc/wizard/submitPOST /api/v1/compliance/admin/sync
POST /api/v1/compliance/admin/syncPOST /api/v1/compliance/baa/decline
POST /api/v1/compliance/baa/declinePOST /api/v1/compliance/baa/execute
POST /api/v1/compliance/baa/executePOST /api/v1/compliance/dpa/accept
POST /api/v1/compliance/dpa/accepttyped_attestation must exactly match signer_name. Writes a compliance.dpa.accepted audit-chain row as the legal evidence of attestation. Owner only. Acceptance never gates outbound.
POST /api/v1/compliance/binder/generate
POST /api/v1/compliance/binder/generatePOST /api/v1/compliance/brands
POST /api/v1/compliance/brandsPOST /api/v1/compliance/campaigns
POST /api/v1/compliance/campaignsPOST /api/v1/compliance/campaigns//numbers
POST /api/v1/compliance/campaigns/{id}/numbers—
POST /api/v1/compliance/compliance-profiles
POST /api/v1/compliance/compliance-profilesPOST /api/v1/compliance/compliance-profiles//documents
POST /api/v1/compliance/compliance-profiles/{id}/documents—
POST /api/v1/compliance/compliance-profiles//resync
POST /api/v1/compliance/compliance-profiles/{id}/resync—
POST /api/v1/compliance/compliance-profiles//submit
POST /api/v1/compliance/compliance-profiles/{id}/submit—
POST /api/v1/compliance/consent
POST /api/v1/compliance/consentPOST /api/v1/compliance/consent/managers
POST /api/v1/compliance/consent/managersPOST /api/v1/compliance/consent/receipts
POST /api/v1/compliance/consent/receiptsPOST /api/v1/compliance/consent/receipts//verify
POST /api/v1/compliance/consent/receipts/{id}/verify—
POST /api/v1/compliance/country-rules/sync
POST /api/v1/compliance/country-rules/syncUpstream feed to pull from:
telnyx (default), mef, iconectiv, meta,
or itu.Optional channel to limit the refresh to (for example
sms or whatsapp).POST /api/v1/compliance/dlt-india/consent-templates
POST /api/v1/compliance/dlt-india/consent-templatesPOST /api/v1/compliance/dlt-india/content-templates
POST /api/v1/compliance/dlt-india/content-templatesPOST /api/v1/compliance/dlt-india/headers
POST /api/v1/compliance/dlt-india/headersPOST /api/v1/compliance/dlt-india/nudge/dismiss
POST /api/v1/compliance/dlt-india/nudge/dismissPOST /api/v1/compliance/dlt-india/principal-entities
POST /api/v1/compliance/dlt-india/principal-entitiesPOST /api/v1/compliance/documents
POST /api/v1/compliance/documentsThis endpoint consumes
multipart/form-data — upload a single KYC document in the file form field with a required type form field (passport, id_card, …) and an optional country_code.POST /api/v1/compliance/dsar/
POST /api/v1/compliance/dsar/POST /api/v1/compliance/dsar//cancel
POST /api/v1/compliance/dsar/{id}/cancel—
POST /api/v1/compliance/dsar//verification
POST /api/v1/compliance/dsar/{id}/verification—
POST /api/v1/compliance/dsar/erasure-requests//cancel
POST /api/v1/compliance/dsar/erasure-requests/{id}/cancel—
Activate the org-wide compliance emergency stop
POST /api/v1/compliance/emergency-stop/activatereason is stored on the settings flag and surfaced in the audit log so a post-incident review can rebuild the timeline.
Deactivate the org-wide compliance emergency stop
POST /api/v1/compliance/emergency-stop/deactivatePOST /api/v1/compliance/preference-center
POST /api/v1/compliance/preference-centerPOST /api/v1/compliance/preference-center/link
POST /api/v1/compliance/preference-center/linkPOST /api/v1/compliance/public/dsar/begin
POST /api/v1/compliance/public/dsar/beginPOST /api/v1/compliance/public/dsar/resend-email
POST /api/v1/compliance/public/dsar/resend-emailPOST /api/v1/compliance/public/dsar/send-phone
POST /api/v1/compliance/public/dsar/send-phonePOST /api/v1/compliance/public/dsar/submit
POST /api/v1/compliance/public/dsar/submitPOST /api/v1/compliance/public/dsar/verify-email
POST /api/v1/compliance/public/dsar/verify-emailPOST /api/v1/compliance/public/dsar/verify-phone
POST /api/v1/compliance/public/dsar/verify-phoneCreate or update the draft RMD registration
POST /api/v1/compliance/rmdMark the RMD registration active/certified
POST /api/v1/compliance/rmd/certifyFlag the RMD registration as needing remediation
POST /api/v1/compliance/rmd/remediationResolve an RMD remediation and re-certify
POST /api/v1/compliance/rmd/resolveSubmit the RMD registration to the FCC database
POST /api/v1/compliance/rmd/submitWithdraw the RMD registration
POST /api/v1/compliance/rmd/withdrawSet the call-time RMD origination enforcement mode
PUT /api/v1/compliance/rmd/enforcementenforce), flagged (warn), or unaffected (off, the default) while this organization’s FCC Robocall Mitigation Database filing is not current. Opt-in; records policy only — it wires no carrier and places no calls. RBAC: owner/admin only.
POST /api/v1/compliance/sender-id-registrations
POST /api/v1/compliance/sender-id-registrationsBulk import a CSV of opt-outs into the suppression list
POST /api/v1/compliance/suppression-list/importThis endpoint consumes
multipart/form-data — upload a single CSV file in the file form field (not a JSON body). The CSV must have a header row; recognised columns are case-insensitive and at least one of phone, email, wa_id is required per row, with optional channel and reason columns. Optional form fields: default_country (ISO-3166 alpha-2 for national-format phone normalisation), default_reason, and dry_run=true (classify + count without writing). The JSON response returns per-row counts — accepted, duplicates, intra_file_duplicates, invalid — a by_channel breakdown, the uploaded file’s file_sha256, and an errors[] array (up to 100 invalid rows with reason codes such as invalid_phone / invalid_email) the wizard uses to build a downloadable skipped.csv.Log an inbound ITG traceback request
POST /api/v1/compliance/tracebackAcknowledge an ITG traceback case
POST /api/v1/compliance/traceback/{id}/acknowledge—
File a response/disposition for an ITG traceback case
POST /api/v1/compliance/traceback/{id}/respond—
PUT /api/v1/compliance/10dlc/wizard/draft
PUT /api/v1/compliance/10dlc/wizard/draftPUT /api/v1/compliance/ai-disclosure/
PUT /api/v1/compliance/ai-disclosure/PUT /api/v1/compliance/compliance-profiles//data
PUT /api/v1/compliance/compliance-profiles/{id}/data—
PUT /api/v1/compliance/consent/managers/
PUT /api/v1/compliance/consent/managers/{id}—
PUT /api/v1/compliance/country-rules//
PUT /api/v1/compliance/country-rules/{channel}/{country_code}—
—
PUT /api/v1/compliance/preferences/
PUT /api/v1/compliance/preferences/{token}—
PATCH /api/v1/compliance/compliance-profiles/
PATCH /api/v1/compliance/compliance-profiles/{id}—
DELETE /api/v1/compliance/10dlc/wizard/draft
DELETE /api/v1/compliance/10dlc/wizard/draftDELETE /api/v1/compliance/compliance-profiles/
DELETE /api/v1/compliance/compliance-profiles/{id}—
DELETE /api/v1/compliance/compliance-profiles//documents/
DELETE /api/v1/compliance/compliance-profiles/{id}/documents/{docId}—
—
DELETE /api/v1/compliance/documents/
DELETE /api/v1/compliance/documents/{id}—