Emergency Address (E911)
Register an emergency (E911 / PSAP) dispatchable address against each provisioned number so an emergency call carries the correct civic location. The address is stored on the number and gated by org ownership — a sibling subaccount sharing your tenant schema can neither read nor mutate another subaccount’s dispatchable location.Lifecycle at a glance
A registered address moves through four statuses, fromregistered to dispatchable:
- Register or update.
PUTwrites the civic fields and stamps the addressregistered. An update replaces the previous address and resets the status — any earlier validation or confirmation attached to the old address no longer applies. - Verify locally.
POST /verifyruns a client-side structural check (required civic fields present, postal-code shape). A clean address moves tovalid; a failed check stamps itinvalidwith per-field issues. - Record the provider confirmation.
POST /psap-confirmationingests the carrier/PSAP MSAG verdict that arrives out-of-band (provider portal, follow-up webhook).confirmed: trueflips the address todispatchable;confirmed: falseflips it toinvalidwith the rejection reason. - Remove.
DELETEclears the address entirely. A delete on a number with no address returns 404, not a silent no-op.
dispatchable — the provider-confirmed verdict — means the address is a usable emergency location. valid is a structural pre-check, deliberately scoped so it never costs money or touches a provider address-lookup API.
Get the Registered Address
{ "id": "...", "address": null } when nothing is registered, and the full address object once one is:
Register or Update the Address
200 with the stored address and the lifecycle reset to registered:
422 VALIDATION_ERROR with field-level details.
Country coverage
The address shape is country-agnostic:country accepts any ISO-3166 alpha-2 code, and required fields (caller_name, street_line_1, city, region, postal_code) apply everywhere. Postal-code validation is strict for the two NANP countries (US five-digit ZIP, optionally with the four-digit extension; Canada letter-digit-letter form) and length-only everywhere else — a non-US registration never fails on country format.
“Dispatchable” means a provider has confirmed the civic address against its MSAG database, so an emergency call routes to the correct PSAP. Orbit records that confirmation; whether a PSAP accepts one depends on the carrier owning the number. For fixed locations register the civic address here; for roaming or hot-desk devices pair it with the per-device dispatchable-location routes under /:id/emergency-address/location (see the emergency-calling policy page for how Orbit blocks the unsupported outbound 911 path and how that interacts with what you register here).
Verify the Address
validation_status plus any validation_issues. A clean address comes back valid:
validation_status: "invalid" and names each issue, for example "postal_code is not a valid US postal code format" — fix the field and re-run before asking the provider for an MSAG confirmation. Verify on a number with no address registered returns 404.
Verification is deliberately local-only — it does not call any provider address-verification API. Upstream PSAP/MSAG confirmation is recorded separately (below).
Verification model
Two distinct verdicts write thevalidation_status field, and they answer different questions:
Keep the roles straight:
- Replace the address (
PUT) and the lifecycle resets toregistered— the update invalidates the priorvalidordispatchableverdict because the civic fields changed. Re-verify after every edit. validation_issueson a failed verify or rejected confirmation tells you which field or provider reason to fix.
Record a PSAP/MSAG Confirmation
Ingest the carrier/PSAP MSAG confirmation result to flip the address todispatchable (confirmed) or invalid (rejected). This records an inbound, out-of-band result — it does not initiate a provider verification call.
dispatchable and stores the confirmation detail:
confirmed is false the status flips to invalid and the provider’s reason lands in validation_issues; include rejection_reason in the request — the API returns 422 VALIDATION_ERROR without it. A confirmation on a number with no address registered returns 404.
Remove the Address
200 with address cleared to null, confirming the removal:
From the dashboard
In the Orbit dashboard, open Numbers, click a number, and use the Emergency address card on the number detail page. It mirrors the API: the status badge reflects the lifecycle (registered → valid → dispatchable); Edit replaces the address; Run validation calls /verify; Record PSAP confirmation flips the verdict when your carrier reports the MSAG result; and removal is gated behind a confirmation dialog. Sibling subaccounts never see the card’s fields from another subaccount — the API gate applies the same way.
Troubleshooting
- 422
VALIDATION_ERRORonPUT— the body is missing a required field, or a field breaks its shape (emptycaller_name, missingcountry, invalid postal pattern for US/CA,countrynot ISO alpha-2). The response lists each issue; fix the field and retry. Only owners and admins can write. verifyreturnsinvalidwithvalidation_issues— run locally first; the check flags empty civic fields and NANP postal-format mismatches. Fix the address fields and re-run/verifybefore you ask the provider for an MSAG confirmation.verifyseems to do nothing useful — it never calls a provider (deliberate, so verification is free and idempotent). Use it as a pre-check, then rely onpsap-confirmationfor the actual provider verdict.psap-confirmationrejected your 422 — whenconfirmed: falsethe API requires arejection_reason. Include it.- Cannot read or mutate the address from a sibling subaccount — the endpoint is org-scoped by design; each subaccount sees only its own numbers’ dispatchable location. Nothing is shared across subaccounts that share a tenant schema.
DELETEreturns 404 — no address is registered on the number. The delete is deliberately not a silent no-op so a missing address surfaces.