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.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
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.
"US"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"
Area code or national dialing code the number must start with, e.g. 415 or 91
Alias of numberType, kept for existing callers
Alias of areaCode, kept for existing callers
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.
Pattern to match within the number
true narrows the pool to SMS-capable numbers. Each result still carries its full features list for per-number capability badging.
value <= 10020true 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"}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