---
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`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/phone-numbers/stock-watches`
- Auth: HTTP bearer

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.

- object
  - `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
  - `preOrderable` boolean: See the 201 response.

## Other responses

- `201`: Watch created.
- `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.
- `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-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-29** `69bbe3da3a18`: 12 breaking, 2 warning, 2 info
  - the response's body type changed from `object` to no type for status `200`
  - the response's body type changed from `object` to no type for status `201`
  - removed the required property `country` from the response with the `200` status
  - removed the required property `country` from the response with the `201` status
  - …12 more
- …earlier changes not shown

[Operation 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/4e74db179e73?raw)
