Перейти к содержимому

Проверка одного номера в реальном времени

POST/v1/realtime/check/phone

Синхронная проверка одного номера. В запросе можно выбрать несколько продуктов реального времени по ID; slug пакетных продуктов не используется.

ПолеТипОбязательноОписание
identifierstringДаОдин номер в формате E.164, например +8613800138000.
countrystringНетДля полного E.164 необязательно; для национального номера нужен соответствующий ISO-код страны. — Коды стран
product_idsarrayДаМассив из 1–10 ID продуктов реального времени.

Идентификаторы продуктов не угадывают: возьмите id записи с mode = realtime из GET /v1/products. Пакетные продукты адресуются по slug, поэтому slug на этой ручке никогда не сработает. В списке продуктов идентификаторы реального времени показаны с префиксом # именно поэтому.

Продукты

Один запрос проверяет один номер по десяти продуктам реального времени. Вы получите один request_id, по одной записи на продукт в results, и каждая тарифицируется отдельно, поэтому status может вернуть partial_succeeded. Больше десяти идентификаторов в запросе отклоняется; в консоли тот же лимит.

{
"request_id": "8c1e4f91-7bd8-4d7e-a3ae-3d7e5b0c6c11",
"identifier": "+8613800138000",
"series": "phone",
"status": "succeeded",
"request_status": "completed",
"replayed": false,
"total_reserved": 0.004000,
"total_charged": 0.004000,
"total_refunded": 0.000000,
"charged_amount": 0.004000,
"refunded_amount": 0.000000,
"results": [
{
"product_id": 47,
"product": "wavalid-realtime",
"result": "valid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:00Z",
"error_code": null
},
{
"product_id": 50,
"product": "tgValid-rt",
"result": "invalid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:01Z",
"error_code": null
}
]
}
ПолеТипОписание
request_idstring (UUID)UUID, идентифицирующий эту отправку. Указывайте его в обращениях в поддержку.
identifierstringИдентификатор, который проверялся, возвращённый в ответе.
seriesstringphone или email.
statusstringsucceeded, partial_succeeded или failed — зависит от того, сколько результатов было списано.
request_statusstringВнутреннее состояние жизненного цикла запроса.
total_reservednumberСумма, зарезервированная до выполнения проверок.
total_chargednumberВсего списано по всем продуктам в комбинации.
total_refundednumberВсего возвращено за позиции, которые не удалось обработать.
charged_amountnumberИтоговое списание. Всегда равно total_charged.
refunded_amountnumberИтоговый возврат. Всегда равно total_refunded.
replayedbooleantrue, если повтор с Idempotency-Key вернул сохранённый результат.
resultsarrayПо одной записи на каждый запрошенный продукт, в порядке запроса продуктов.
ПолеТипОписание
product_idintegerID realtime-продукта из каталога.
productstringSlug продукта, которому соответствует этот ID.
resultstringvalid, invalid или unknown — зарегистрирован ли идентификатор.
cachedbooleantrue, если вердикт взят из кеша. Попадание в кеш всё равно списывается.
billing_statusstringcharged или refunded.
charged_amountnumberСумма, списанная за этот продукт.
refunded_amountnumberСумма, возвращённая за этот продукт.
checked_atstring (ISO 8601)Когда был получен вердикт, в UTC.
error_codestring | nullПричина, по которой позицию не удалось обработать, или null при успехе.
Окно терминала
curl -X POST "https://api.zelnum.com/api/v1/realtime/check/phone" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"+8613800138000","country":"CN","product_ids":[47,50]}'

Каждый продукт использует зафиксированную цену за проверку, включая попадание в кэш. valid и invalid оплачиваются; unknown, тайм-аут и занятые элементы возвращаются.

Частично успешная комбинация возвращает HTTP 200 и status=partial_succeeded; при полном сбое — status=failed. Проверяйте billing_status и error_code каждого элемента.

Idempotency-Key ограничен 191 байтом и действует для пользователя. После тайм-аута или 500 повторите исходные данные с исходным ключом. Результаты хранятся 30 дней по умолчанию.

error_code указывает на сбой провайдера, лимита канала, срока, кэша или защиты конкуренции. Ошибочные элементы не оплачиваются.

ЭндпоинтыЗначение / действие
400Исправьте номер, продукты или ключ; предоплаты не было.
401Проверьте ключ, состояние аккаунта и доступ; предоплаты не было.
402Недостаточно средств; комбинация не запускается.
409Повторите после Retry-After; другой запрос не может использовать тот же ключ.
429Подождите время Retry-After; предоплаты не было.
500Результат неясен. Повторите с исходным ключом, не создавая новый.
503Маршрут, кэш или лимитер недоступен; повторите позже.