Products · /v1/phone_numbers

Real phone numbers, one API call away

Search available numbers by area code, buy one, and it arrives configured: messaging and voice enabled, webhooks attached, E911 registration handled. Assign it to a tenant and it's their business line.

+1 415 555 0184Buy · $1/mo

+1 415 555 0271sms · voice

+1 415 555 0339sms · voice

What you get out of the box

Search and buy in one flow

Area-code search returns live inventory with pricing; purchase attaches messaging and voice automatically.

Ready on arrival

No follow-up configuration calls — a purchased number can text and ring the moment the response returns.

E911 built in

Register a physical address per number through the API and emergency calling is handled correctly.

Port numbers in, by API

Bring existing numbers from any carrier: create a port-in, submit it, and follow status webhooks until the numbers go live on the tenant — rehearsable end to end in test mode.

buy-a-number.sh
curl "https://api.handset.dev/v1/phone_numbers/search?area_code=415"
{ "data": [ { "e164": "+14155550184", "monthly_price": "1.00" }, … ] }

curl https://api.handset.dev/v1/phone_numbers \
  -d tenant_id="tnt_01kzv90afex…" -d e164="+14155550184"
{ "id": "num_01kzvb7…", "messaging_ready": true, "voice_ready": true }

The API surface

Endpoints

GET/v1/phone_numbers/searchSearch available numbers by area code
POST/v1/phone_numbersPurchase and configure a number for a tenant
GET/v1/phone_numbersList a tenant's numbers and capabilities
GET/v1/phone_numbers/{id}Retrieve one number with its status
DELETE/v1/phone_numbers/{id}Release a number
POST/v1/port_insPort existing numbers in from another carrier
POST/v1/e911_addressesRegister an emergency address

Ship numbers this sprint.

We're onboarding a small group of vertical SaaS platforms. Tell us what your customers need to say, and to whom.