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

Check portability

Pre-flight portability check: whether each number can be ported in, whether it qualifies for FastPort, and its current carrier and line type where the carrier lookup knows them, BEFORE the user commits to a port order (LOA, invoice, service address). Read-only; creates no order and bills nothing.

Works without an API key for one number per request. Keyless calls are what the checker at https://zernio.com/port-your-number makes: they must come from that page (a browser bot check rejects scripted callers with 401), are limited per IP (3 a minute, 10 a day) and by a shared daily budget (429 once spent), because each check runs a paid carrier lookup. Each portable keyless result carries a claimId and a claimUrl: a signup link that opens the dashboard's port form with the number filled in. Send an API key to check up to 50 numbers without those limits.


POST
/v1/phone-numbers/port-in/check

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.phonenumbers.checkPhoneNumberPortability({  body: {    phoneNumbers: [      'string',    ],  },});console.log(data);
{  "results": [    {      "phoneNumber": "string",      "portable": true,      "fastPortable": true,      "messagingCapable": true,      "lineType": "string",      "carrierName": "string",      "countryCode": "string",      "phoneNumberType": "string",      "notPortableReason": "string",      "claimId": "string",      "claimUrl": "string"    }  ]}
Was this page helpful?

Respond to the regulatory reviewer (message + corrections)

Send a single response to the reviewer on a number awaiting remediation: a free-text message and/or corrected requirement documents, in one call. If corrections are present they are PATCHed onto the requirement group and re-submitted (the number goes back to "in review"); if a message or file attachments are present they are posted to the reviewer's comment thread. When both are present, your message is the thread comment and the resubmit drives the state change. At least one of message, corrections, or attachments is required. `documents` correct requirement slots; `attachments` are loose files (their links are added to your message).

Country porting requirements

The country-specific information a port-in needs BEYOND the LOA, invoice, and account/address details, such as an ID copy, proof of address, a tax id, or a porting code. Call it after the portability check (which returns each number's `countryCode` and `phoneNumberType`), render the fields, and pass the collected values as the create request's `requirements`. US/CA return an empty list.

phoneNumbers*array<string>

E.164 numbers to check, e.g. +13035550000. At most one without an API key.

Items1 <= items <= 50
claimLinks?boolean

true adds claimId and claimUrl to portable results even when you send an API key, e.g. to hand a user a signup link that opens the port form with their number.