from — a number your account owns. You search live inventory, buy a number in one call, and it becomes the caller id your agent dials from and a texting endpoint for your inbox.
Search available numbers
Filter bycountry (ISO 3166-1 alpha-2, default US), areaCode, a contains digit sequence, and type (local, toll_free, national, mobile). limit is 1–100 and defaults to 10.
capabilities tells you what the number can do (voice, sms); monthlyCostUsd and setupCostUsd are the recurring and one-time cost of owning it.
A result with
purchasable: false and a masked number like +16313------ is real inventory your account can’t buy yet: additional identity verification is required before those numbers unlock. It isn’t an error and it isn’t hidden from you — pick a purchasable: true number instead.Buy a number
Pass the exact E.164 number from a search result. You get back aphone_number record; when the country requires no paperwork it arrives with status: "active", immediately usable as a caller id. Buying a number you already own returns 409, and so does a number that is no longer available.
active number in hand, use it as the from on Making calls.
Regulated countries: pending is not an error
Some countries regulate who may hold a local number. Germany, for example, requires proof of a local address before a number activates. Buying a number there succeeds, but the order settles at status: "pending" with a requirements object listing exactly which documents are outstanding:
GET /v1/phone/numbers/{id} to watch the status: once the listed requirements are met, the number turns active. A number’s status is one of active, pending, or released — only an active number can be a call’s from.
Configure a number
Two bindings turn a bare number into part of your fleet — set either, both, or clear them with an explicitnull:
inboxId— inbound SMS to this number lands in that inbox’s mailbox, next to your email and other channels. Texts become messages you read, search, and reply to like everything else.agentId— attribute the number to one of your agents, so its calls and texts carry clear provenance.
metadata in the same call; the request must carry at least one of inboxId, agentId, or metadata. Binding an inbox or agent you don’t own is rejected. List everything you own with GET /v1/phone/numbers — add includeReleased=true to include released numbers, which stay on your account for the audit trail.
Release a number
Releasing returns the number to the public pool — anyone can buy it afterwards, and whoever does receives the calls and texts meant for you. Because that is irreversible, the API refuses to release without an explicitconfirm: true in the body (400 without it), and releasing an already-released number returns 409. A successful release returns the number’s final record with status: "released" and releasedAt set.