Разработчикам

API для проверки email, который просто работает

Проверяйте один адрес в реальном времени или отправляйте целый список пакетом. Все запросы используют HTTPS и возвращают JSON. Ключи API создаются в панели управления в разделе «Ключи API».

  • REST и JSON
  • Пакетные обратные вызовы
  • Те же кредиты, что и в панели управления
Страница ключей API в BounceBell с активными ключами и формой создания нового ключа

Аутентификация

Передавайте ключ API как bearer-токен в заголовке Authorization в каждом запросе. Храните ключи на своём сервере. Никогда не размещайте их в коде браузера или в мобильных приложениях.

Authorization: Bearer YOUR_API_KEY

Базовый URL для всех эндпоинтов: https://bouncebell.com/api/v1.

Проверить один адрес

GET https://bouncebell.com/api/v1/verify

ПараметрОбязательноОписание
emailДаАдрес для проверки. Закодируйте его для URL.
timeoutНетВремя ожидания ответа почтового сервера в секундах, от 3 до 30. По умолчанию 10. Если время истекло, статус будет unknown, а кредит не списывается.

Пример

curl "https://bouncebell.com/api/v1/verify?email=rini.elizabeth%40acme-foods.example" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "rini.elizabeth@acme-foods.example",
  "status": "valid",
  "reason": "mailbox_exists",
  "domain": "acme-foods.example",
  "mx_record": "mx1.acme-foods.example",
  "disposable": false,
  "role": false,
  "free_provider": false,
  "catch_all": false,
  "did_you_mean": null,
  "checked_at": "2026-10-30T09:30:12Z",
  "credits_used": 1
}

Поля результата

ПолеТипОписание
emailstringАдрес в том виде, в каком вы его отправили.
statusstringИтоговый результат. См. статусы.
reasonstringПричина результата, например mailbox_not_found или no_mail_server.
domainstringДоменная часть в нижнем регистре.
mx_recordstring or nullПочтовый сервер с наивысшим приоритетом.
disposablebooleanTrue, если домен является сервисом временных ящиков.
rolebooleanTrue для общих ящиков, например info@ или support@.
free_providerbooleanTrue для бесплатных почтовых сервисов, например Gmail.
catch_allbooleanTrue, если домен принимает любой адрес.
did_you_meanstring or nullИсправленный адрес, если в домене похоже на опечатку.
checked_atstringВремя проверки в формате ISO 8601 UTC.
credits_usedinteger1 или 0, если статус unknown.

Статусы

СтатусЗначениеРекомендуемое действие
validЯщик существует и принимает почту.Отправить
invalidАдрес, домен или ящик не существует.Удалить
disposableСервис временных почтовых ящиков.Удалить
catch_allДомен принимает все адреса, поэтому подтвердить ящик невозможно.Проверить
roleСуществующий общий ящик.Проверить
unknownПочтовый сервер не дал ответ вовремя. Кредит не списывается.Повторите позже

Пакеты

Отправляйте до 100 000 адресов в одном запросе. Пакет обрабатывается в фоне: запрашивайте его статус или укажите callback_url, и мы вызовем его, когда пакет будет готов.

Создать пакет

POST https://bouncebell.com/api/v1/batches

curl -X POST "https://bouncebell.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "October import", "emails": ["a@example.com", "b@example.com"],
       "callback_url": "https://yourapp.example/hooks/bouncebell"}'
{ "id": "bat_8f2k1q3m9x7w4p", "status": "queued", "total": 2, "done": 0 }

При создании пакета кредиты резервируются за каждый уникальный адрес, а после завершения кредиты за неизвестные результаты возвращаются. На адрес обратного вызова приходит POST-запрос с {"event": "batch.completed", "batch_id": "...", "status": "done", "counts": {...}}. Адреса обратного вызова должны использовать HTTPS.

Проверить ход выполнения

GET https://bouncebell.com/api/v1/batches/{id}

{ "id": "bat_8f2k1q3m9x7w4p", "status": "running", "total": 2, "done": 1 }

Статус: queued, running или done. При статусе done ответ также содержит counts по статусам.

Скачать результаты

GET https://bouncebell.com/api/v1/batches/{id}/results

По умолчанию возвращает JSON. Добавьте ?format=csv, чтобы получить файл CSV. Каждая строка содержит те же поля, что и проверка одного адреса.

Кредиты

GET https://bouncebell.com/api/v1/credits

{ "credits_remaining": 33420 }

Ошибки и ограничения

При ошибке возвращается JSON с кодом error и понятным сообщением message.

HTTP-кодОшибкаЧто делать
400bad_requestПараметр отсутствует или указан неверно. Прочитайте сообщение.
401invalid_keyУбедитесь, что ключ указан верно и не был отозван.
402no_creditsКупите ещё кредитов.
403email_not_confirmedОткройте ссылку подтверждения, которую мы отправили вам при регистрации.
404not_foundПакет не существует или был удалён через 30 дней.
429rate_limitedСнизьте частоту запросов. Подождите столько секунд, сколько указано в заголовке Retry-After.
500server_errorПовторите запрос с небольшой задержкой. Если ошибка повторяется, обратитесь в поддержку.

Проверки отдельных адресов ограничены 20 запросами в секунду на ключ. Если нужно больше, напишите нам.