API проверки email
Проверяйте email-адреса через REST API
Подключите проверку email-адресов к своему приложению. Отправьте адрес со своего сервера: Emvero вернет JSON со статусом, рекомендуемым действием и данными, на которых основан результат.
Полная проверка может получить сведения о ящике от почтового сервера. Письмо не отправляется. Если данных недостаточно, API возвращает неопределенный результат.
Авторизация по Bearer-ключу · Ответ в JSON · Четыре конечных статуса
Отправьте запрос со своего сервера
Создайте API-ключ в аккаунте и храните его на своем сервере: ключ не должен попадать в код, который получает браузер. Передайте email-адрес в теле запроса и ключ в заголовке авторизации. В примере используется полная проверка, выбранная по умолчанию.
Заголовок Idempotency-Key связывает запрос с одной операцией. Если после сетевой ошибки или повторной отправки формы нужно повторить запрос, используйте прежний ключ для того же адреса и глубины проверки. В пределах срока действия ключа это позволяет получить исходный результат без повторной проверки и списания кредитов.
curl -sS https://api.emvero.tech/v1/verifications \
-H "Authorization: Bearer emv_your_credential" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: signup-8f21c0" \
-d '{"email":"ada@example.com"}'
Ниже приведен условный пример ответа с HTTP-кодом 200. Адрес, идентификатор и значения полей служат для иллюстрации; реальная проверка example.com не выполнялась.
{
"id": "5f0b6f3e-1a4c-4a1f-9d2e-8f7b3c2a1d90",
"email": "ada@example.com",
"normalized": { "domain": "example.com", "ascii_domain": "example.com" },
"status": "deliverable",
"confidence": 0.92,
"action": "allow",
"checks": {
"syntax": "valid",
"domain": "valid",
"mail_routing": "valid",
"smtp": "accepted",
"accept_all": "no",
"disposable": false,
"role_account": false,
"public_provider": false,
"smtp_utf8_required": false
},
"reason_codes": ["MX_FOUND", "SMTP_RCPT_ACCEPTED"]
}
HTTP-код 200 означает, что API вернул результат проверки. Сам адрес при этом может получить статус undeliverable. Ошибки HTTP относятся к запросу, авторизации, балансу, лимитам или работе сервиса; по ним нельзя судить о состоянии адреса.
Как читать результат проверки
Поле status описывает результат: deliverable, risky, undeliverable или unknown. Поле action рекомендует, как обработать адрес: принять (allow), продолжить с подтверждением почты (allow_with_email_confirmation) или отклонить (reject).
Читайте эти поля вместе с причинами. Например, одноразовый ящик может принимать письма и получить risky с рекомендацией allow. Признак риска сам по себе не означает техническую невозможность доставки, поэтому не определяйте действие только по статусу.
| Статус | Значение | Рекомендация |
|---|---|---|
| deliverable | Свидетельства указывают, что адрес может принимать письма | allow |
| risky | Найден признак риска; обработка адреса зависит от причины | allow_with_email_confirmation / allow |
| undeliverable | Установлена техническая причина, по которой адрес не может принимать письма | reject |
| unknown | Недостаточно сведений, чтобы определить, может ли адрес принимать письма | allow_with_email_confirmation |
| pending | Проверка ещё выполняется; конечного результата пока нет | Повторить запрос после интервала retry_after_ms |
checks содержит результаты отдельных этапов и признаки риска. В reason_codes перечислены коды причин: например, DISPOSABLE_DOMAIN указывает на провайдера временной почты, а SMTP_RCPT_ACCEPTED означает, что почтовый сервер принял указанного получателя.
confidence оценивает силу свидетельств по шкале от 0 до 1. Это не вероятность существования ящика или попадания письма во «Входящие». На странице проверки отдельного адреса объясняем, что можно установить по формату адреса, почтовому маршруту и ответу сервера по SMTP.
Дождитесь результата, если API вернул pending
Если сведения от почтового сервера не получены за время запроса, полная проверка может вернуть pending. Проверка еще выполняется; это не пятый конечный статус. В ответе есть уже собранные данные, идентификатор id и интервал до следующего запроса retry_after_ms в миллисекундах. Ниже показана только часть условного ответа:
{
"id": "5f0b6f3e-1a4c-4a1f-9d2e-8f7b3c2a1d90",
"status": "pending",
"retry_after_ms": 2000
}
Подождите указанный интервал и отправьте GET /v1/verifications/{id} с тем же Bearer-ключом. Если ответ все еще содержит pending, повторите опрос после очередного интервала. Завершите опрос, когда получите один из четырех конечных статусов. API не отправляет уведомлений о готовности результата (callback).
Задайте предел ожидания в своем приложении. Если время истекло, примените заранее выбранное правило, например продолжите регистрацию с подтверждением почты. Истечение вашего срока ожидания не означает, что API вернул unknown или признал адрес недоставляемым. Подробнее об опросе читайте в документации по незавершенным проверкам.
Выберите глубину проверки и обработайте ошибки HTTP
Если не передать variant, API использует full: проверяет формат адреса, домен и почтовый маршрут, а затем может получить сведения о ящике по SMTP. Значение "variant":"domain" ограничивает проверку форматом адреса, данными DNS и почтовым маршрутом. SMTP-соединение при этом не открывается.
Обе глубины доступны через один эндпоинт и возвращают одинаковый набор полей. Выбирайте глубину по задаче: проверка домена не устанавливает существование конкретного ящика. Полная проверка может собрать больше сведений, но тоже возвращает unknown, если их недостаточно.
Обработку ошибок HTTP предусмотрите отдельно от обработки статусов адреса. При 400 исправьте запрос, при 401 проверьте ключ, при 402 пополните баланс кредитов. При 429 снизьте частоту запросов и соблюдайте интервал из Retry-After, если заголовок есть в ответе. Ответ 5xx указывает на проблему сервиса и не дает оснований отклонить адрес.
При повторе той же операции сохраняйте ключ идемпотентности. Быстрый старт показывает, как подключить API, а справочник ошибок объясняет коды ответов.
Для регистрации и других форм используйте сценарий проверки в реальном времени. Для готового списка организуйте массовую проверку в своей системе: отправьте по одному запросу на каждый адрес и сохраните результаты. В Emvero нет загрузки CSV через сайт и отдельного batch-эндпоинта.
Вопросы
Часто спрашивают.
Что возвращает API проверки email?
В JSON-ответе есть статус адреса (status), рекомендуемое действие (action), результаты этапов и признаки риска (checks), коды причин (reason_codes) и оценка силы свидетельств (confidence). Идентификатор нужен, чтобы получить результат, если проверка еще выполняется.
Чем проверка адреса отличается от проверки формата?
Валидация формата устанавливает только то, что адрес правильно записан. Emvero также проверяет домен и почтовый маршрут. Полная проверка может запросить у почтового сервера сведения о ящике по SMTP, если сервер это допускает. При глубине domain SMTP-соединение не открывается, поэтому результат не устанавливает существование конкретного ящика.
API отправляет письмо при проверке?
Нет. При SMTP-проверке Emvero указывает получателя, но завершает соединение до этапа DATA. Тема и текст письма не передаются, сообщение не доставляется. Если нужно убедиться, что человек контролирует ящик, отправьте собственное письмо подтверждения.
API может подтвердить существование каждого ящика?
Нет. Почтовый сервер catch-all домена принимает любого получателя, поэтому его согласие не подтверждает существование конкретного ящика. Такой признак может привести к risky. Если сведений недостаточно, например из-за тайм-аута или ограничений сервера, Emvero возвращает unknown. Даже положительный ответ сервера не гарантирует доставку будущего письма и не устанавливает, что человек контролирует ящик.
Можно ли бесплатно попробовать API проверки?
Да. После подтверждения нового аккаунта вы получите 1 000 кредитов без банковской карты. Их хватит на 100 полных проверок или до 500 проверок домена. Оба варианта доступны через один эндпоинт и возвращают одинаковый набор полей. Для запросов создайте API-ключ в аккаунте.
Прямое сравнение
Оценка или свидетельство за ней
Оценка confidence показывает силу свидетельств. Результаты этапов и коды причин объясняют, что удалось установить и какие ограничения остаются.
Catch-all-домен
Почтовый сервер принимает произвольных получателей в домене. Положительный ответ не подтверждает отдельный ящик.
Отправьте первый запрос
Получите кредиты для первых проверок
После подтверждения нового аккаунта вы получите 1 000 кредитов без банковской карты. Их хватит на 100 полных проверок или до 500 проверок домена. Создайте API-ключ в аккаунте и отправьте первый запрос.