---
title: "Get regulatory requirements"
method: GET
path: "/v1/phone-numbers/requirements"
---

# Get regulatory requirements

`GET /v1/phone-numbers/requirements`

## Request

- Base URL: `https://api.zavu.dev`
- URL: `https://api.zavu.dev/v1/phone-numbers/requirements`
- Auth: HTTP bearer

Get the regulatory information needed to buy a phone number, for one specific number or for a country and number type. Prefer `phoneNumber`: the response is then exactly the list the purchase of that number validates against. Pass each `requirementTypes[].id` back as `requirementType` in `regulatoryRequirements` on `POST /v1/phone-numbers`.

For `phoneNumber`, the requirements of that exact number are returned. When they cannot be resolved for the number itself, the list for its country and `type` is returned instead, and the purchase uses the same list. An empty `items` array means the number needs no regulatory information. If the requirements cannot be retrieved at all, the response is `502 requirements_unavailable`, never an empty list.

URL-encode the `+` of `phoneNumber` as `%2B`. An unencoded `+` is also accepted.

## Query parameters

- `countryCode` string
- `type` 'local' | 'national' | 'tollFree' | 'mobile': Type of phone number. `mobile` is stocked in countries where no geographic (`local`) or non-geographic (`national`) inventory exists, and in several markets it is the only type that can receive SMS.
- `phoneNumber` string

## Response `200`

Requirements for the number, or for the country and type.

- object
  - `items` Requirement[], required
    - `id` string, required
    - `countryCode` string, required
    - `phoneNumberType` string, required
    - `action` string, required
    - `requirementTypes` RequirementType[], required
      - `id` string, required: Send this as `requirementType` in `regulatoryRequirements` when purchasing.
      - `name` string, required
      - `description` string, required
      - `type` 'textual' | 'address' | 'document' | 'action', required: Type of requirement field.
      - `example` string, nullable
      - `acceptanceCriteria` RequirementAcceptanceCriteria: Acceptance criteria for a requirement.
        - `minLength` integer, nullable
        - `maxLength` integer, nullable
        - `allowedValues` string[], nullable
        - `regexPattern` string, nullable

## Other responses

- `400`: Neither `countryCode` nor `phoneNumber` was given, one is malformed, or the requirements cannot be looked up for this input (`invalid_request`).
- `401`: Unauthorized.
- `502`: The requirements could not be retrieved right now. Retry; do not treat this as "no requirements".

## Changes

> 80 revisions in range; 1 not diffed.

- **2026-09-08** `b343da23d9f4`: 1 info
  - added the new enum value `mobile` to the `query` request parameter `type`
- **2026-07-07** `f467a4da6cd2`: 1 breaking, 1 info
  - removed the enum value `mobile` from the `query` request parameter `type`
  - added the new enum value `national` to the `query` request parameter `type`

[Operation history](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/changes/v1/phone-numbers/requirements/get.md)

---

[API](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api.md) - [All operations](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/revisions/75bc777b0ffb?raw)
