Upload a porting document
Upload ONE porting document (the signed LOA or a recent carrier invoice)
and get back its documentId, which the port-in create request takes as
loaDocumentId / invoiceDocumentId. PDF, JPEG, or PNG, 10MB max.
API key authentication - use your Zernio API key as a Bearer token
In: header
The document (PDF/JPEG/PNG, 10MB max).
binaryInformational; used for the stored filename.
"loa" | "invoice"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.uploadPhoneNumberPortInDocument();console.log(data);{
"documentId": "string"
}{
"error": "Unauthorized"
}Upload a KYC document POST
Upload ONE document and get back its provider document id, to reference from POST /v1/phone-numbers/kyc via `documents[].documentId`. Send the RAW file bytes as the request body (not base64); put the filename in the `X-Filename` header. Uploading documents one-per-request keeps each request under the ~4.5MB body limit. The document streams straight to the number provider and is not stored by Zernio.
Pre-validate KYC address POST
Optional early check for the address step of a Tier 4 (end-user identity) registration: validates a postal address for deliverability BEFORE the full KYC submit, so it can be corrected before any documents are uploaded. The full submit (POST /v1/phone-numbers/kyc) re-validates the address, so this call is purely a fast feedback path and skipping it is safe. Only the postal address is sent (no documents, no gov-ID fields). A region (`administrative_area`) is required by the validator; when it is omitted the pre-check is skipped and `{ ok: true, skipped: true }` is returned (the final submit still validates).