Zernio
Zernio
API Reference

Phone Numbers

Numbers

List phone numbersGETGet phone numberGETPurchase phone numberPOSTResolve a number claimGETRelease phone numberDELETE

Availability

List offerable number countriesGETCheck country availabilityGETSearch available numbersGET

Stock Watches

List stock watchesGETWatch an out-of-stock countryPOSTStop watching a countryDELETE

KYC

Get KYC form specGETSubmit KYCPOSTPre-validate KYC addressPOSTPre-review a KYC packetPOSTUpload a KYC documentPOSTView a KYC document on fileGETCreate a hosted KYC linkPOST

Remediation

Get declined requirementsGETResubmit a declined numberPOSTReply to the regulatory reviewerPOSTRespond to the regulatory reviewer (message + corrections)POST

Porting

Check portabilityPOSTCountry porting requirementsGETPort numbers inPOSTList port-in ordersGETResolve a port claimGETA port-in order's pending requirementsGETUpload a porting documentPOSTCancel a port-inDELETE

Other

Request the WhatsApp verification code for a numberPOST
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Phone Numbers

Search available numbers

Search the provider's inventory for numbers available to purchase in a country (default US). Optional filters narrow the results. The country must be offerable (see GET /v1/phone-numbers/countries). Voice capability is always required; pass sms=true to only see numbers that can also text (SMS support is per-number, not per-country). Numbers a purchase would refuse are left out, and any result's phoneNumber can be bought exactly by passing it to POST /v1/phone-numbers/purchase.

Works without an API key. Keyless calls get up to 12 results with the middle digits masked (maskedNumber), each with a claimId and a claimUrl: a signup link that lands a person on the dashboard's confirm step with that number picked, so an agent can search for a user and hand them one link. Keyless calls are rate limited per IP and results are cached for a few minutes. With an API key you get full numbers and no claim fields.


GET
/v1/phone-numbers/available

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Query Parameters

country?string

ISO code, or auto on the keyless shape to search the caller's own country (from their IP) near their city, falling back to US.

Default"US"
numberType?string

Number type; defaults to the country's WhatsApp-safe type (the same name as on purchase, availability and kyc)

Value in

  • "local"
  • "mobile"
  • "national"
  • "toll_free"
areaCode?string

Area code or national dialing code the number must start with, e.g. 415 or 91

type?string
Deprecated

Alias of numberType, kept for existing callers

prefix?string
Deprecated

Alias of areaCode, kept for existing callers

locality?string

A city name, matched against the numbering plan (accents and common aliases allowed) and searched by that city's area codes; a name no city of the plan matches returns no numbers. areaCode takes a city name too.

contains?string

Pattern to match within the number

sms?boolean

true narrows the pool to SMS-capable numbers. Each result still carries its full features list for per-number capability badging.

limit?integer
Rangevalue <= 100
Default20
masked?boolean

true returns the keyless shape (masked numbers with claimId and claimUrl) even when you send an API key, e.g. to hand a user a signup link for a number.

Response Body

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.phonenumbers.searchAvailablePhoneNumbers();console.log(data);
{  "country": "string",  "numberType": "string",  "requireSms": true,  "numbers": [    {      "phoneNumber": "string",      "features": [        "string"      ],      "locality": "string",      "bestEffort": true,      "maskedNumber": "string",      "numberType": "string",      "claimId": "string",      "claimUrl": "string"    }  ],  "masked": true,  "near": "string",  "claimId": "string",  "claimUrl": "string"}
Was this page helpful?

Check country availability

Pre-purchase check, so you can warn BEFORE a customer invests in KYC (regulated review is async, 1-3 days). Tells you whether we have deliverable inventory, and what address the customer needs: - `addressConstraint: geo` → the registered address MUST be in one of the returned `areas` (the only place we have stock). A different-area address passes pre-approval but the number can never be assigned. - `addressConstraint: country` → any in-country address works. - `addressConstraint: none` → field-only / instant country, no address. Call this before starting the KYC form for regulated countries. Without an API key it answers from cache only and returns just `country`, `numberType` and `areaOptions`, for building an area picker before signup.

List stock watches

Next Page