FCC Robocall Mitigation Database (RMD)
The FCC’s Robocall Mitigation Database (RMD) is the public registry every US voice service provider must file in before it originates calls. Under 47 CFR § 64.6305, your filing declares your STIR/SHAKEN implementation level, and — for any provider that has not fully deployed STIR/SHAKEN — a description of the robocall-mitigation program you run. Terminating carriers are required to refuse traffic from providers that are absent from, or deficient in, the database, so a missing or stale filing is a direct cause of your outbound calls being blocked or labeled downstream. Orbit gives you the record-keeping surface for that obligation: a place to prepare the filing, mark it submitted and published, flag and resolve deficiencies, and watch the recertification clock — plus an opt-in call-time check you can apply to your own outbound origination. Filing with the FCC itself, and every lifecycle decision along the way, stays with you. All endpoints below are rooted athttps://api.orbit.devotel.io/api/v1/compliance. The same surface is
available in the dashboard under Settings → Compliance → RMD, which
drives the identical API.
Lifecycle states
An RMD registration moves through five states.withdrawn is not terminal —
a withdrawn filing can be re-opened to draft when you re-file.
draft— the filing is being prepared; nothing has been submitted.submitted— filed with the FCC RMD portal, awaiting publication.active— published in the RMD; the recertification clock is running.remediation_required— a terminating carrier or the FCC flagged a deficiency you must correct.withdrawn— filing withdrawn or superseded.
draft, or editing an
active filing in place) returns 409 with RMD_INVALID_TRANSITION. A
request against a registration that does not exist yet returns 404 with
RMD_NOT_FOUND.
The recertification clock
Once a filing reachesactive, a review deadline is computed from
certified_at plus your recert_interval_days (default 365; settable up to
3650). Every GET /compliance/rmd annotates the registration with a live
verdict:
Plan around two distinct cadences: the FCC expects you to update a filing
within 10 business days of any change (returned as
update_window_business_days on the read response), and most operators
re-attest annually — the 365-day default above tracks the annual cadence.
Endpoints
All writes require the owner or admin role; the read is open to any authenticated member.Working the lifecycle, step by step
1. Create or update the draft
Build the draft before you file. The STIR/SHAKEN level you declare decides whether a robocall-mitigation plan is mandatory: withpartial or none
you must supply mitigation_plan; with complete it is optional.
POST the same shape to edit the draft. Once the filing is submitted,
in-place edits are refused (409 RMD_LOCKED) and you move it through the
lifecycle endpoints instead.
2. Submit the filing
After you file with the FCC RMD portal, record the submission — optionally with the FCC confirmation reference:409 RMD_INCOMPLETE when the draft is missing a
required piece — most commonly the mitigation plan, which is mandatory
unless stir_shaken_status is complete. The details array names each
blocker.
3. Certify publication
When the filing is published in the database, mark it active. This setscertified_at and starts the review clock:
4. Flag and resolve a deficiency
If a terminating carrier or the FCC flags a problem with your filing, record the deficiency (the reason is required) and, once corrected, resolve it. Resolving returns the filing toactive and restarts the clock from the
resolve date.
5. Withdraw
Mark a filing withdrawn when it is superseded or no longer applies:POST /compliance/rmd on a withdrawn filing
re-opens it to draft (keeping the original id and creation time), and you
walk the lifecycle again.
6. Read back the current state in one call
recertification verdict
with due_at and days_remaining, the effective enforcement mode, and
update_window_business_days for the FCC’s after-a-change update window.
Call-time origination enforcement
Tracking the filing answers “what is our RMD state?” A second, opt-in layer answers “should we originate right now, given that state?” The voice pre-origination guard checks the filing of the originating organization — not the recipient — before an outbound call is placed, and applies the mode you set:
Set the mode once; it applies to every outbound voice origination from your
organization until you change it:
warn, blocked under enforce —
in four situations:
Two deliberate behaviors of the guard:
- It fails open. If the read of your organization’s settings errors at call time, the call proceeds — a lookup blip must never break dialing. The recipient-facing gates (DNC scrub, quiet hours) are the fail-closed regulatory backstop; this guard is about your own filing.
- Preview paths never throw. Dry-run origination paths evaluate the same
verdict but surface it as a flag, so tooling can preview “would this call
be held under
enforce?” without blocking.
Tenant-owned by design
The RMD surface follows Orbit’s compliance posture rule: filing is your decision, never a platform-mandated gate. Nothing files with the FCC for you, nothing blocks your traffic unless you setenforce, and the default
mode is off. Orbit records the filing state, computes the deadlines, and
applies the posture you choose — the obligation, and every lifecycle call
above, stays with your organization. The one platform-level exception is the
campaign/dialer TCPA 8 AM–9 PM recipient-local window, documented in
What is not tenant-toggleable — the RMD
enforcement mode is not part of it.
Related references
- Send Gates — the full outbound gate stack the origination guard reads alongside.
- STIR/SHAKEN attestation — caller-identity posture; the level you assert in the RMD filing.
- ITG Traceback — the companion robocall obligation: responding to Industry Traceback Group requests.
- Your Tenant Compliance Posture — where this surface sits on the toggle map.