---
title: "Provision (purchase) a phone number"
method: POST
path: "/v1/phone-numbers"
tags: ["Phone Numbers"]
---

# Provision (purchase) a phone number

`POST /v1/phone-numbers`

## Request

- Base URL: `https://api.honkio.ca`
- URL: `https://api.honkio.ca/v1/phone-numbers`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Provisions a number and debits its first month's rent plus a one-time activation fee, as one purchase (see GET /v1/pricing for both amounts; the activation fee is the same on every tier and is not refunded on release). A balance that cannot cover the total returns 402 INSUFFICIENT_BALANCE before anything is charged or ordered. Accounts are capped on how many phone numbers they may hold at once (counting ACTIVE and SUSPENDED), a per-account limit that falls back to a platform-wide default staff can change at runtime; exceeding it returns 403 NUMBER_LIMIT_REACHED with the limit and current usage in `details`. Request a higher allowance from the dashboard. May also return 409 PURCHASE_IN_PROGRESS when another purchase for this account is already in flight: this is transient, unlike the terminal 409 CONFLICT returned when the number is already owned; retry PURCHASE_IN_PROGRESS after a short delay rather than treating it as a failed purchase.

Requires `phone_numbers:w`.

## Request body

- object
  - `phone_number` string, required: E.164 number to provision (from available search)

## Response `201`

The provisioned number.

- PhoneNumber: A phone number provisioned on the account.
  - `id` string, required
  - `phone_number` string, required: E.164
  - `area_code` string, required
  - `region` string, nullable, required: Province or territory, when the area code maps to one.
  - `capabilities` string[], required
  - `status` 'ACTIVE' | 'SUSPENDED' | 'RELEASING' | 'RELEASED', required
  - `monthly_cost_cents` integer, required: Recurring rent in CAD cents.
  - `provisioned_at` string, date-time, required
  - `released_at` string, date-time, nullable, required
  - `number_type` 'local' | 'toll_free', required: Toll-free numbers (833, 844, 855, 866, 877, 888) need an approved toll-free verification before they can send SMS.
  - `toll_free_verification` object, nullable, required: The newest toll-free verification application for this number, cancelled ones aside. Null for a local number or a toll-free number never applied for.
    - `id` string, required: tfv_…
    - `status` 'DRAFT' | 'AWAITING_PAYMENT' | 'IN_REVIEW' | 'CHANGES_REQUESTED' | 'SUBMITTED' | 'APPROVED' | 'REJECTED' | 'DECLINED', required: The number sends SMS once this is APPROVED.

## Other responses

- `401`: Missing, invalid, revoked or expired API key.
- `402`: INSUFFICIENT_BALANCE: the balance cannot cover the first month and the activation fee. Nothing was charged or ordered.
- `403`: NUMBER_LIMIT_REACHED (details carries limit and used), LIVE_KEY_REQUIRED (test keys cannot provision), or ACCOUNT_NOT_VERIFIED (the account has not verified an owner mobile number).
- `409`: CONFLICT (the number is already owned) or PURCHASE_IN_PROGRESS (another purchase for this account is in flight; retry shortly).
- `422`: NON_CANADIAN_NUMBER or VALIDATION_ERROR.
- `429`: Rate limit reached: 100 requests per second per account, or a route-specific limit (Retry-After set where one applies).
- `500`: INTERNAL_ERROR: the charge failed for a reason other than balance.
- `501`: TOLLFREE_800_COMING_SOON: 1-800 numbers are not offered yet.
- `502`: PROVISIONING_FAILED: the carrier did not provision the number. The charge is refunded.

---

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