---
title: "Country porting requirements"
method: GET
path: "/v1/phone-numbers/port-in/requirements"
tags: ["Phone Numbers"]
---

# Country porting requirements

`GET /v1/phone-numbers/port-in/requirements`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/phone-numbers/port-in/requirements`
- Auth: HTTP bearer

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.

## Query parameters

- `country` string, required
- `numberType` 'local' | 'mobile' | 'national' | 'toll_free'

## Response `200`

Requirement fields for the country/type combination.

- object
  - `country` string
  - `numberType` string
  - `supported` boolean: false when the combination includes a step that can't be completed through the API (e.g. an in-person identity verification). Porting it needs support.
  - `fields` object[]
    - `requirementId` string: Pass back as requirements[].requirementTypeId.
    - `label` string
    - `kind` 'text' | 'date' | 'address' | 'file' | 'action': text/date take a string value; file takes a documentId from the documents endpoint; address is satisfied automatically from the end-user service address.
    - `description` string
    - `example` string
    - `acceptableValues` string[]: When present, the value must be one of these.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `422`: Country not supported for port-in

## Changes

- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-09-30** `16a7b9d5373e`: 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
- **2026-09-25** `2c04683ce694`: 4 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/stage` to the response with the `400` status
  - added the optional property `details/unconfirmedWrite` to the response with the `400` status
- **2026-09-16** `3e6ddf2a99ea`: 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/phone-numbers/port-in/requirements/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/4e74db179e73?raw)
