Get KYC form spec
For a Tier 3/4 country, the fields the end customer must provide (Telnyx regulatory requirements) before a number can be ordered: text, date, address, or file (document) per requirement.
API key authentication - use your Zernio API key as a Bearer token
In: header
Query Parameters
Requirements and reuse eligibility are per (country, type). Omitted = the country's default type. Pass the same value on the POST.
"local" | "mobile" | "national" | "toll_free"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.getPhoneNumberKycForm({ query: { country: 'string', },});console.log(data);{
"country": "string",
"numberType": "string",
"fields": [
{
"requirementId": "string",
"label": "string",
"kind": "text",
"description": "string",
"example": "string",
"localTo": "string"
}
],
"reusable": {
"available": true,
"fromPhoneNumber": "string",
"details": [
{
"label": "string",
"value": "string"
}
],
"options": [
{
"id": "string",
"fromPhoneNumber": "string",
"instant": true,
"details": [
{
"label": "string",
"value": "string",
"documentId": "string"
}
]
}
]
},
"pendingReview": true
}{
"error": "Unauthorized"
}Port numbers in POST
Submit a port-in for one or more existing numbers from another carrier. Creates the carrier order(s), attaches the end-user (current account) info plus the LOA and invoice documents, and submits to the losing carrier. The transfer PIN is forwarded to the carrier and never stored. Ported numbers arrive voice-ready (and SMS-ready where the order supports messaging). Run the portability check (POST /v1/phone-numbers/port-in/check) and upload the two documents (POST /v1/phone-numbers/port-in/documents) first — uploaded documents must be attached to an order within 30 minutes or the carrier deletes them, so upload right before this call. The carrier may split the numbers into several orders (by country, number type, losing carrier); `orders` carries per-order results, and a partial failure still returns 201 with the failed orders' `error` set (they stay as cancellable drafts). Non-US/CA numbers additionally need the country-specific values from GET /v1/phone-numbers/port-in/requirements, passed via `requirements`, and must be submitted one country per request. When required information is still missing after submission, the order is kept as a resumable draft whose `error` / `declineReason` names the gaps.
A port-in order's pending requirements GET
The live requirements on an EXISTING porting order: which are filled, which are still pending, and which bounced on review (`requirement-info-exception`). Use it to fix and resubmit a rejected international port. Same field shape as the country-level requirements endpoint, plus per-requirement status.