---
title: "Watch an out-of-stock country"
method: POST
path: "/v1/phone-numbers/stock-watches"
tags: ["Phone Numbers"]
---

# Watch an out-of-stock country

`POST /v1/phone-numbers/stock-watches`

Get notified the first time an out-of-stock country has deliverable
numbers again: an email to the account holder plus the
`phone_number.stock_available` webhook. Stock is re-checked every 6h.
One watch per country and number type; a repeat request returns the
existing watch (200). The watch is consumed when it fires, so re-create
it if you miss the stock. Up to 20 watches at once.

Countries and types marked `fulfilment: request` by
GET /v1/phone-numbers/countries can also be watched, but anything with
`preOrderable: true` does not need a watch: submit KYC and the carrier
sources the number to order.

Pass `areaCode` (with `numberType`) to watch one sold-out area, for
example an entry of `soldOutAreas` from
GET /v1/phone-numbers/availability. Area stock is checked live on the
same 6h cadence.

## Request body

- object
  - `country` string, required — ISO 3166-1 alpha-2 code of a country listed by GET /v1/phone-numbers/countries.
  - `numberType` 'local' | 'mobile' | 'national' | 'toll_free' — Narrow the watch to one number type. Omit to be notified when any type in the country is back.
  - `areaCode` string — Narrow the watch to one area code (NDC). Requires numberType.

## Response `200`

A watch for this country and type already existed; returned unchanged.

- PhoneNumberStockWatch
  - `id` string, required
  - `country` string, required — ISO 3166-1 alpha-2.
  - `countryName` string, required
  - `numberType` 'local' | 'mobile' | 'national' | 'toll_free' | 'null', nullable, required — The watched number type, or null when the watch covers every type in the country.
  - `areaCode` string, nullable — The watched area code (NDC), or null when the watch covers every area.
  - `createdAt` string, date-time, required

## Other responses

- `201` — Watch created.
- `400` — Invalid request
- `401` — Unauthorized
- `409` — The country (or the watched area) is in stock right now (buy instead of watching), or the 20-watch limit is reached (code invalid_resource_state).

## Changes

- **2026-09-16** `3e6ddf2a99ea` — 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status
- **2026-09-15** `0dba7d004d75` — 5 info
  - added the new optional request property `areaCode`
  - added the optional property `areaCode` to the response with the `200` status
  - added the optional property `areaCode` to the response with the `201` status
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - …1 more
- **2026-09-07** `89b06d5526f9` — 3 info
  - added the new optional request property `numberType`
  - added the required property `numberType` to the response with the `200` status
  - added the required property `numberType` to the response with the `201` status
- **2026-08-29** `e6f7a453bfb1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/phone-numbers/stock-watches/post.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/eded32b62823?raw)
