Журнал изменений
Эта страница фиксирует изменения в API и в этой документации. Записи начинаются с 2026-09-19: всё, что изменилось до появления этой страницы, не перечисляется задним числом, поэтому считайте отсутствие записи «не зафиксировано», а не «не менялось».
Как это читать
Заголовок раздела «Как это читать»| Тип | Значение |
|---|---|
| API | Сервис изменился — эндпоинт, поле, лимит. |
| Контракт | Опубликованный документ OpenAPI изменился. |
| Документация | Документация изменилась. API не менялся. |
| Исправление | Документация описывала API неверно. |
Записи Исправление выделены отдельно намеренно. Они описывают изменение того, что вы читаете, а не того, что делает API, — поэтому в вашей интеграции ничего не ломается, но всё, что вы построили по старому описанию, может быть неверным.
2026-10-27 — Справочник кодов стран
Заголовок раздела «2026-10-27 — Справочник кодов стран»Документация · Добавлено
- Страница Коды стран с поиском, перечисляющая все официально присвоенные коды ISO 3166-1 alpha-2, со ссылками с эндпоинтов, принимающих поле
country.
2026-09-19 — Документация перестроена, контракт опубликован
Заголовок раздела «2026-09-19 — Документация перестроена, контракт опубликован»Документация · Добавлено
- Раздел Справочник: OpenAPI, Версионирование и устаревание, Статус и поддержка, Безопасность и Глоссарий.
- Документ OpenAPI 3.1 теперь публикуется по адресу
https://docs.zelnum.com/openapi.yaml— побайтово идентичное зеркало копии платформы, импортируемое в Postman, Insomnia и генераторы клиентов. - Примеры клиентов на Python, Node.js, PHP и Go для обоих режимов проверки, рядом с существующими примерами cURL. Навигация обещала примеры SDK, тогда как существовал только cURL.
- Таблицы полей ответа для эндпоинтов проверки realtime, пакетной отправки, статуса задачи и результата.
- Две новые проверки сборки: теперь сборка падает из-за неровной таблицы в любой локали, а также сверяет каждый упомянутый в документации эндпоинт с поставляемым документом OpenAPI в обоих направлениях — и задокументированный эндпоинт, которого нет в контракте, и путь контракта, который никто не документирует, одинаково являются сбоями.
Контракт · Добавлено
- Сам документ OpenAPI: 10 путей, 9 схем и
deprecated: trueу прежнегоPOST /v1/realtime/detect.
Документация · Исправления
- Пакетное поле
countryбыло задокументировано как обязательное для каждой отправки. Оно обязательно для телефонных продуктов и должно быть опущено для email-продуктов. В таком виде девять пакетных email-продуктов было невозможно отправить — каждый запрос не прошёл бы валидацию. - Правило пакетного объёма было неверным. Там говорилось «от 1,000 до 2,000,000 номеров на запрос». Настоящее правило — собственный минимум выбранного продукта — 500, 1,000 или 2,000 — вплоть до максимума платформы 2,000,000. Прежняя цифра исключала одиннадцать продуктов с минимумом 500.
- Каталог ошибок перечислял четыре кода, которые API никогда не возвращает. Прежняя страница документации платформы называет
not_found,result_not_ready,result_expiredиvalidation_failed; реализация не выдаёт ни один из них, и эти ответы вообще не содержат поляcode. Теперь таблица перечисляет 22 кода, которые API действительно возвращает, а вторая таблица документирует условия без кода — с предупреждением для тех, кто перенёс эти четыре ветви. - В примерах ответов отсутствовали поля, которые API фактически возвращает.
series,charged_amountиrefunded_amountв ответах realtime;idempotent_replayиrecovery_pendingв пакетных отправках; и десять счётчиков прогресса задачи, включаяsubmitted,prefiltered,deduped,stage,last_progress_atиfailure_message. - Лимиты запросов называли не тот эндпоинт. В строке realtime было указано
POST /v1/realtime/check/phone; лимит применяется кPOST /v1/realtime/check/{series}, включая email. - Заголовки ответа были описаны неверно. Страница лимитов подразумевала, что полный набор заголовков присутствует в каждом ответе. Это не так: бакет realtime сообщает только
X-RateLimit-Remainingпри успехе и никогдаX-RateLimit-Limit, аX-RateLimit-Resetпоявляется только при общем или detection429. Теперь страница указывает, какой заголовок где появляется. - Модель ключей была описана неверно. Страница безопасности утверждала, что аккаунт держит один ключ за раз. Аккаунт может держать несколько активных ключей, и консоль создаёт, перегенерирует и удаляет их по отдельности — поэтому возможна поэтапная смена без простоя, а перегенерация на месте — вариант без перекрытия.
GET /v1/api-keyсообщает о самом новом активном ключе, а не об инвентаризации, и егоlast_usedзаписывается не чаще раза в пять минут. - ID и slug были описаны неверно. Глоссарий утверждал, что перепутанные ID или slug отклоняются как
product_mode_not_supported. На эндпоинтах realtimeproduct_idsвалидируется как массив целых чисел, поэтому slug отклоняется раньше как400 invalid_realtime_request;422 product_mode_not_supported— это ответ пакетного эндпоинта на продукт realtime. - Страница формата ответа противоречила странице баланса в вопросе валюты. Одна говорила «валюта биллинга аккаунта», другая — USD. Теперь обе говорят USD, как и контракт, и эндпоинт баланса.
- Единица цены была указана без источника. Пакетные проверки описывались как «цена за 10,000 проверок». Каталог не публикует цены, поэтому утверждение убрали, а не оставили.
- Два исправления дошли только до написанных вручную страниц. Утверждение о валюте и формулировка «за 10,000 проверок» были исправлены на английской странице и странице упрощённого китайского, но таблица строк, из которой генерируются остальные семь локалей, всё ещё содержала их, поэтому семь локалей продолжали публиковать оба. Их исправили и в таблице.
/examples/была разной страницей в каждой локали. Английская страница была коротким навигационным узлом, а остальные восемь отображали пакетное руководство из пяти шагов. Теперь английская совпадает с руководством, поэтому все девять локалей несут одинаковое содержимое.
Документация · Исправления ошибок
- Таблицы параметров молча теряли столбец описания во всех семи генерируемых локалях. Общий помощник выдавал заголовок из трёх столбцов для строк из четырёх ячеек, а GFM отбрасывает каждую ячейку за пределами ширины заголовка — поэтому, например, в испанской версии значение «Required» отображалось под заголовком «Description», а само описание исчезало, на трёх страницах в семи локалях. Теперь помощник принимает явную форму столбцов и падает на неровной строке, а проверка на этапе dist независимо перепроверяет каждую отрендеренную таблицу в каждой локали.
- Генерируемые локали отображали заголовки столбцов таблицы продуктов, её примечание и строку синхронизации по-английски, а обратные кавычки примечания доходили до браузера как литеральные символы. Теперь текст компонентов берётся из переведённой таблицы строк, а отсутствующий перевод роняет сборку вместо отката.
Подписка на изменения
Заголовок раздела «Подписка на изменения»Фида пока нет. Пока его нет, надёжный сигнал — контракт:
npm run openapi:checkв задании по расписанию — он завершается с ненулевым кодом, как только опубликованный документ отличается от скопированной вами версии. Два URL см. в OpenAPI.