Resolve a number claim
Resolves a claimId from a keyless search or purchase into the
selection it carries (country, number type, area and exact number)
priced at today's rate. The dashboard calls it when a person lands
from a claimUrl. The number is not held, so buying it can still fail
with 409 PHONE_NUMBER_UNAVAILABLE.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
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.getPhoneNumberClaim({ path: { claimId: 'claim_abc123', },});console.log(data);{ "country": { "code": "string", "needsKyc": true, "monthlyCents": 0, "types": [ {} ] }, "type": {}, "area": { "ndc": "string", "name": "string", "count": 0 }, "phoneNumber": "string"}Cancel a port-in
Cancel an in-flight port (wrong number, staying with the old carrier). Only orders that haven't ported can be cancelled; a completed port is a normal number release instead. The carrier may report `cancel-pending` briefly while the losing carrier acknowledges; it settles to `cancelled`.
List all calls (unified history)
Unified call history across ALL of your numbers: both channels (WhatsApp Business Calling + regular phone/PSTN), inbound and outbound, newest first. Unlike `GET /v1/voice/calls` (PSTN-only) and `GET /v1/whatsapp/calls` (one account at a time), this endpoint needs no `accountId` and never requires fanning out one request per number. Any row can be opened channel-agnostically via `GET /v1/calls/{id}` and `GET /v1/calls/{id}/recording`; no branching on `channel` needed. When the counterparty number matches a CRM contact, `contactId` and `contactName` are set. Cursor pagination: pass the returned `nextCursor` as `before` to fetch the next page. `nextCursor` is null on the last page.