Emergency Stop
The emergency stop is an org-wide kill switch — one flag, owned by
your organization, that halts every outbound dispatch path (SMS, MMS,
voice origination, dialer campaign activation) until you lift it. It
exists for the moment when throttling a channel or scrubbing a list is
not enough: a suspected breach, a runaway campaign, a litigator or
carrier exposure you need frozen now.
Only the owner or admin roles can read status, activate, and
deactivate the switch; developer and viewer roles receive 403. The
scope is your organization only — you operate the switch, Orbit
operates the platform.
Activation halts outbound dispatch for the entire organization
immediately. Blocked sends are rejected with
403 ORG_COMPLIANCE_EMERGENCY_STOP before provider dispatch, so no
balance is debited for them. Transactional Verify/OTP sends and
email are not gated — those run on separate delivery paths.
Deactivate as soon as the incident is resolved.
All endpoints below are rooted at
https://api.orbit.devotel.io/api/v1/compliance.
The endpoints
Three endpoints, all owner/admin:
Check status — reads active, plus activated_at,
activated_by, and reason:
Activate — flips the switch ON. An optional reason (up to 500
characters) is stored with the flag and written to the audit log
alongside the actor and timestamp, so a post-incident review can
rebuild the timeline:
Deactivate — lifts the halt:
Both write paths are rate-limited to 5 requests per minute — one
decisive click plus a few retries, never a settings-thrash vector.
Activation and deactivation are audit-logged; deactivation clears
activated_at / activated_by / reason back to null while the
activation record stays in the audit log.
When to use it
Reach for the emergency stop when the cost of one more outbound send
exceeds the cost of halting everything:
- Suspected breach — a compromised API key or sender behaving
outside policy.
- Runaway campaign — a misconfigured campaign or content mistake
dispatching at volume.
- Litigator or carrier exposure — a complaint spike, carrier block
notice, or regulator inquiry mid-flight.
For narrower problems use a narrower control: a bad list is a
DNC scrub case, a channel-specific pause is a
channel rate override, and
individual contacts belong on
opt-out suppression.
Interplay with send gates
Send gates (quiet hours, DNC, RND, RMD, DNO)
are tenant-owned, per-decision controls: each one evaluates a specific
regulatory signal before a send dispatches. The emergency stop layers
on top of them as the blunt instrument — when it is active, every
outbound dispatch is rejected with
403 ORG_COMPLIANCE_EMERGENCY_STOP before the individual gate chain
matters. Use the gates for posture; use the stop for an incident.
Recovery path
- Resolve the incident root cause — re-key credentials, halt the
runaway campaign, scrub the bad list.
POST /emergency-stop/deactivate lifts the halt (owner/admin).
GET /emergency-stop confirms active: false; queued or blocked
sends can then be re-dispatched.
The state is cached for at most 30 seconds, so plan for enforcement
(and lifting it) within half a minute of the POST. If the state lookup
ever fails, the gate treats the switch as OFF and logs — a transient
read failure cannot black-hole all outbound traffic.
Full runbook
This page is the API reference for the control. For the full incident
operator’s runbook — when to reach for it, the fail-safes that bound
it, and how to run it as a launch-day drill — see
Emergency Stop Runbook. The
summarized endpoint surface also lives inside
Send Gates.