Port numbers in
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.
Authorization
bearerAuth 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.createPhoneNumberPortIn({ body: { phoneNumbers: [ 'string', ], endUser: { entityName: 'Example', authPersonName: 'Example', accountNumber: 'string', streetAddress: 'string', locality: 'string', postalCode: 'string', countryCode: 'US', }, loaDocumentId: 'loadocument_abc123', invoiceDocumentId: 'invoicedocument_abc123', },});console.log(data);{ "id": "string", "telnyxPortingOrderId": "string", "status": "draft", "phoneNumbers": [ "string" ], "orders": [ { "id": "string", "telnyxPortingOrderId": "string", "status": "string", "phoneNumbers": [ "string" ], "error": "string" } ]}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.
List port-in orders
Your porting orders, newest first (max 50). Poll this for port progress: pending, confirmed FOC date, exception reason, or ported.