The lifecycle
1
Search
GET /numbers/search browses purchasable inventory. Filter by areaCode, locality,
administrativeArea (state), numberType (local or toll_free), required features
(voice, sms, …), or a vanity contains / endsWith. bestEffort (default true) widens
a too-narrow filter; set it false for strict last-four or vanity matching.2
Reserve (optional)
POST /numbers/reserve holds a number (about 30 minutes) so it can’t be taken while you
confirm. This does not charge your wallet. Pass the returned reservation id to purchase.3
Purchase
POST /numbers/purchase buys the number and debits your prepaid wallet. Include the
reservationId from the hold so the order can’t be sniped. Returns the owned number.4
Assign
POST /numbers/{id}/assign points the number at an agent (sets its default agent). Inbound
calls now reach that agent.Already own a number elsewhere?
POST /numbers/import brings a number you hold on your carrier
account into Flowyte with no wallet charge — and can assign it to an agent in the same call.Releasing vs unassigning
Detaching a number has two very different outcomes:Vendor-neutral provider field
Each number carries aprovider field. It is an opaque, vendor-neutral label for the carrier
behind the line — treat it as an identifier, not a brand to depend on. Cost is reported as
monthlyCost (and setupCost on available numbers).
In the API
A purchase needs funds in your prepaid wallet — an empty balance returns
402. A number that was
taken between search and purchase returns 409.