Skip to main content

Inventory & Export

Every number you own lives in your tenant inventory. List it page-by-page, export the whole set for finance reconciliation, and monitor low-stock buckets so you never run dry mid-campaign. All routes are tenant-scoped — you only ever see your own organization’s numbers.

List Numbers

The list endpoint is cursor-paginated (25 rows per page by default). For anything over ~100 numbers, use the bulk export below instead of paging.

Export Inventory

Download your entire number inventory in a single request — ideal for reconciling the monthly DID line on your invoice against the active set, or syncing your CMDB.

Query parameters

Response headers

CSV columns

Columns are emitted in this exact order (load-bearing for downstream billing tooling — new columns are only ever appended):
tfv_status is the Toll-Free Verification status of the number. It only applies to toll-free DIDs (not_submitted, pending, approved, rejected); for every other number type the column reads N/A because toll-free verification does not apply. spend_30d is the trailing-30-day total spend for the number — recurring monthly charge plus realised usage (voice + SMS + MMS) over the last 30 days — matching the Spend (30d) column on the dashboard Numbers list. A number with no traffic shows just its recurring cost; the cell is left blank only if the spend figure could not be computed.

JSON example

Export is a pure read of your local inventory table — no carrier call is made, and it never touches an outbound voice/SMS path. Any dashboard user with read access can export their own organization’s inventory.

Low-Stock Inventory Alerts

When you provision numbers from a pool (rotation, sticky-sender, campaign overflow), Orbit tracks how many active DIDs remain per (country, area-code prefix) bucket and flags any bucket below your threshold.

Query parameters

Response

The threshold defaults to 3 and can be overridden per-tenant via organizations.settings.numbers.tn_low_stock_threshold. A daily scheduler emits the low-stock bucket payload through the number.inventory.low webhook event so your integration can auto-reprovision without polling.