Numbers & call routing
Numbers
Numbers are the public phone numbers (DIDs) callers dial to reach the account. This group lists the numbers the account holds and covers getting new ones: the countries and prices on offer, searching NUACOM's stock and the provider catalogues, filing an order request, including the identity and address proof some countries require. Where a number's calls go (an extension, a queue or an IVR) is set in the portal under Numbers & Inbound Call Routing; the API has no routing endpoint. Number Providers and Porting are managed by NUACOM and have no public endpoints: to move an existing number to NUACOM, contact support, who need your authorisation before the port is requested.
Workflow (what the portal does)
- The account's numbers:
GET /v2/my-numbersanswers a plain array with one{"in_ext", "number_name"}object per assigned number.in_extis the number as international digits without+(35312345678);number_nameis the label given to the line, which, when enabled for that number, is appended to the caller ID name of inbound calls so agents see which line was called. That is the whole row: country, routing target and capabilities are not returned. The numbers an extension may present as caller ID come fromGET /v2/extensions/available-cli(see Extensions), fax numbers fromGET /v2/fax. - Countries and prices (account admin):
GET /v2/numbers/order/countries-infoanswers one row each for Ireland, the United States and the United Kingdom (isoin lower case:ie,us,gb) withname,priceMonthly(the lowest monthly price in euro),price(the same as text,€5 / month, with a leading space) andcurrency(€), followed by anOthers Regionsrow withisoxx,priceCustom PriceandpriceMonthlynull. - Search the catalogue (account admin):
GET /v2/numbers/order/search-available-numberswithcategory=paid_1(the only value accepted),iso(the country,IE) and optionallytype(Local,National,Mobile,Toll-free,Shared CostorGlobal) andareaCode(digits are matched against the provider's area prefix, text against the area name, for exampleDublin). It answers up to 20 rows of{"number", "country_iso", "monthly_price"}withnumberin E.164 (+35312345678) and the monthly price in euro. - File the order (account admin):
POST /v2/numbers/order/phone-number-requestwithcategory: "paid_1",numbersas an array of{"number", "price"}objects copied from the search (priceis the monthly price) and an optionaldescription. The request is recorded and opens a ticket with NUACOM's number team, who contact the requesting user to complete the purchase; the call itself provisions nothing. It answers200with{"status": "success", "numbers": [...]}echoing the array, or400with{"status": "error"}when the request could not be recorded. - Search the stock:
GET /v2/numbers/searchtakescategory(free,paid_1,paid_2orpaid_3), optionaliso(ISO 3166-1 alpha-2) andnumber_contains(2 to 20 digits, optional leading+).freelists numbers NUACOM already holds in stock, ten per page as{"id", "number"}rows indatawithcurrent_pageandnext_page_url, narrowed by dial code and area withcountry_codeandarea_code. The paid categories are the provider catalogues, answered as one array of rows withnumber(digits without+),country_iso,area_name,prefix,features(smswhen the number supports SMS),needs_registration,restriction_message, the provider'ssetup_priceandmonthly_price, and the prices you pay,setup_price_with_feeandmonthly_price_with_fee. Ordering a number from these results goes through the request flow above; the direct assignment the portal uses is not a public endpoint. - Registration: when the chosen row has
needs_registration: true, readGET /v2/numbers/get-requirementswithcategory(paid_1orpaid_2) andcountry_isofirst. Forpaid_1it answersaddress_area_level,business_area_level,business_mandatory_fields,service_description_required,proof_types,business_permanent_document,business_onetime_document,restriction_messageandcountry. Send the assign request asmultipart/form-datawithcompany_name,first_name,last_name,phone_number,address[country_iso],address[city_name],address[postal_code],address[address],service_descriptionwhen required, every field named inbusiness_mandatory_fields, and the documents:proofs[0][type](an id fromGET /v2/numbers/proof-types) withproofs[0][files][], andsupporting_documents[0][template](an id fromGET /v2/numbers/supporting-document-types;permanentsays whether the document stays on file) withsupporting_documents[0][files][]. The provider verifies the address after the order and NUACOM records that verification against the number.
Roles and access
- Any authenticated user:
GET /v2/my-numbers,GET /v2/numbers/search,GET /v2/numbers/get-requirements,GET /v2/numbers/proof-typesandGET /v2/numbers/supporting-document-types. - Account admin (
403otherwise): the three/v2/numbers/order/...endpoints.
Pitfalls
GET /v2/my-numbersis the only list of the account's numbers and it holds two fields. Numbers are digits without+; the search endpoints answer them with+(order search) or without (direct search).categorydiffers per endpoint: the order endpoints accept onlypaid_1,get-requirementsacceptspaid_1andpaid_2, search and assign acceptfree,paid_1,paid_2andpaid_3. Any other value is422.- The order search returns at most 20 numbers and silently leaves out numbers whose setup price, fee included, is above 5. An
areaCodethat matches nothing is ignored and the whole country is searched; an unknownisoanswers200with[], not422. numberson the order request must be objects withnumberandprice; plain strings answer400. The request is a ticket, not a purchase: the numbers reachGET /v2/my-numbersonly once NUACOM completes the order.- When
address_area_levelisArea,address[country_iso]must equal the number's country (422). - Monthly prices on the order endpoints and the
*_with_feeprices on the direct search include NUACOM's fee and are rounded up to a multiple of 5;setup_priceandmonthly_priceon the direct search are the provider's raw prices. number_containstakes 2 to 20 digits; a leading+is accepted and stripped; wildcards and letters answer422. Thefreesearch is simple pagination without a total: follownext_page_url.