Troubleshooting: queue emergency activation 422 EMERGENCY_DESTINATION_REQUIRED
Queue emergency mode is the supervisor panic button: while armed, every new inbound call to the queue routes straight to the emergency destination instead of the agent matcher. Arming it requires a destination. If the queue has none stored and the request supplies none, the activation is refused:error.code— alwaysEMERGENCY_DESTINATION_REQUIRED, HTTP 422, onPOST /api/v1/voice/queues/{id}/emergencywithactive: true.details.queueId— the queue the activation targeted.
Why the API refuses
Arming a queue with no destination would leave it in an “emergency mode” state that silently routes calls normally. The override would read as active to your supervisors while changing nothing for callers, which is exactly the state you cannot afford to trust mid-incident. The 422 enforces a configure-then-activate order instead: a destination must exist, either stored on the queue or supplied with the activation, before the toggle can succeed.Fix: configure, then activate
Step 1. Store the destination on the queue
Step 2. Arm the override
destination in the toggle body overwrites the stored value; omit it to arm
with the stored one.
Arming or disarming is a supervisor, admin, or owner action. A caller without
one of those roles receives a 403 before the destination check runs.
Read the current posture
The queue config object returned by the queue read and by every write on this page carries both fields:emergencyActive—truewhile the override is armed,falseotherwise.emergencyDestinationNumber— the stored E.164 destination, ornullwhen none is configured.
GET /api/v1/voice/queues/{id} and confirm both before
you rely on the override in an incident.
While armed, every new inbound call to the queue routes straight to the
destination. The routing layer re-reads the posture on each inbound call, so
an arm or disarm takes effect at the next call. Callers already waiting in
the queue keep their place and are served by the agent matcher as usual.
Adjacent safety gates are independent
Two nearby gates look related but neither reads nor writes the queue’s emergency fields:- Callback dispatcher emergency-dial block. The virtual-callback dispatcher never dials emergency short codes (see the queue SLA forecast callback gate runbook). That guard applies to callbacks the platform places, not to the destination your queue forwards inbound calls to.
- Platform emergency-calling block. Outbound dials of 911 / 112 and the
other emergency short codes are refused platform-wide with
EMERGENCY_CALLING_NOT_SUPPORTED(see Emergency calling). Queue emergency mode reroutes inbound calls only; it never places an outbound emergency call, so arming it cannot trip that block.
EMERGENCY_CALLING_NOT_SUPPORTED, you are on the
outbound-dial page, not this one.
Deactivate and fail back
active: false restores normal ACD routing for new inbound calls at the
next call; the stored destination stays in place for the next activation.
To clear the stored destination as well, send destination: null in the
same request, or set "emergencyDestinationNumber": null on the queue PUT.
Clearing the destination also disarms the override, so a queue can never
hold an armed state with no target.
What to send support
If the 422 persists after you store a destination:- the
queueIdfromerror.details, - the
request_idfrom the response envelope, - the queue config read showing
emergencyActiveandemergencyDestinationNumber, - the request sequence you sent (queue PUT, then the emergency toggle).