REST API · Email

API верификации по email

Покупайте одноразовые email-адреса для OTP-верификации через простой REST API. Те же соглашения JSON и тот же ключ API, что и для SMS, в пространстве /v1/email-activations.

Базовый URL

https://smsbulk.net/api/v1/email-activations

Один ключ API работает и для SMS, и для email. Если вы уже интегрировали SMS API, email работает с тем же ключом.

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

Передавайте ключ API с каждым запросом. Принимаются два взаимозаменяемых способа:

# 1. Header (recommended)
curl https://smsbulk.net/api/v1/email-activations \
  -H "x-api-key: YOUR_KEY"

# 2. Bearer token
curl https://smsbulk.net/api/v1/email-activations \
  -H "Authorization: Bearer YOUR_KEY"

Передавайте ключ через заголовок (x-api-key) или Bearer-токен. Передавать его как параметр запроса в URL не рекомендуется из соображений безопасности, так как строки запроса часто попадают в логи сервера и прокси.

Ваш ключ API для SMS является тем же ключом, что используется здесь. Отдельного ключа для email нет.

Конечные точки

Шесть маршрутов в /api/v1/email-activations. Цены указаны для пользователя; оптовая стоимость никогда не возвращается.

GET/api/v1/email-activations/domains?site=telegram.com

Список доменов email-провайдеров, доступных для целевого сайта, с пользовательской ценой и остатком.

Запрос
curl "https://smsbulk.net/api/v1/email-activations/domains?site=telegram.com" \
  -H "x-api-key: YOUR_KEY"
Ответ
[
  { "name": "gmx.com", "price": 0.04, "count": 12, "currency": "USD" }
]
POST/api/v1/email-activations

Резервирует email-адрес для пары сайт/домен. Сразу списывает средства с кошелька и возвращает активацию в статусе WAITING.

Запрос
curl -X POST https://smsbulk.net/api/v1/email-activations \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "site": "telegram.com", "domain": "gmx.com" }'
Ответ
{
  "id": "cmox8h7pmicm3mkczzwhdz0yd",
  "site": "telegram.com",
  "domain": "gmx.com",
  "emailAddress": "a1b2c3@gmx.com",
  "status": "WAITING",
  "otpValue": null,
  "userCost": "0.04",
  "currency": "USD",
  "expiresAt": "2026-06-03T14:05:00Z",
  "createdAt": "2026-06-03T13:45:00Z"
}
GET/api/v1/email-activations?limit=50

Возвращает ваши последние email-активации, сначала новые. По умолчанию 50, максимум 100, без курсорной пагинации.

Запрос
curl "https://smsbulk.net/api/v1/email-activations?limit=50" \
  -H "x-api-key: YOUR_KEY"
Ответ
[
  {
    "id": "cmox8h7pmicm3mkczzwhdz0yd",
    "site": "telegram.com",
    "domain": "gmx.com",
    "emailAddress": "a1b2c3@gmx.com",
    "status": "RECEIVED",
    "otpValue": "595348",
    "userCost": "0.04",
    "currency": "USD",
    "expiresAt": "2026-06-03T14:05:00Z",
    "receivedAt": "2026-06-03T13:47:12Z",
    "createdAt": "2026-06-03T13:45:00Z",
    "reorderBlockedAt": null
  }
]
GET/api/v1/email-activations/:id

Получает одну активацию. Включает разобранный OTP и исходное HTML-тело письма после получения.

Запрос
curl https://smsbulk.net/api/v1/email-activations/cmox8h7pmicm3mkczzwhdz0yd \
  -H "x-api-key: YOUR_KEY"
Ответ
{
  "id": "cmox8h7pmicm3mkczzwhdz0yd",
  "site": "telegram.com",
  "domain": "gmx.com",
  "emailAddress": "a1b2c3@gmx.com",
  "status": "RECEIVED",
  "otpValue": "595348",
  "htmlMessage": "<html>Your code is 595348</html>",
  "userCost": "0.04",
  "currency": "USD",
  "expiresAt": "2026-06-03T14:05:00Z",
  "receivedAt": "2026-06-03T13:47:12Z",
  "createdAt": "2026-06-03T13:45:00Z",
  "reorderBlockedAt": null
}
POST/api/v1/email-activations/:id/reorder

Повторно открывает тот же адрес для нового OTP. Снова списывает средства (email-аналог повторной отправки SMS).

Запрос
curl -X POST https://smsbulk.net/api/v1/email-activations/cmox8h7pmicm3mkczzwhdz0yd/reorder \
  -H "x-api-key: YOUR_KEY"
Ответ
{
  "id": "cmox8h7pmicm3mkczzwhdz0yd",
  "site": "telegram.com",
  "domain": "gmx.com",
  "emailAddress": "a1b2c3@gmx.com",
  "status": "WAITING",
  "otpValue": null,
  "userCost": "0.04",
  "currency": "USD",
  "expiresAt": "2026-06-03T14:20:00Z",
  "createdAt": "2026-06-03T13:45:00Z",
  "reorderBlockedAt": null
}
Ответ с ошибкой

Если почтовый провайдер заблокировал адрес, reorder завершается ошибкой 502 с кодом EMAIL_BANNED, а списанная сумма возвращается. После этого активация содержит поле reorderBlockedAt (дата ISO, иначе null) в ответах списка, деталей и reorder, а каждый следующий reorder возвращает 409 с кодом EMAIL_BANNED без списания средств. Купите новый адрес.

HTTP 409 Conflict
{
  "statusCode": 409,
  "code": "EMAIL_BANNED",
  "message": "Email address blocked by the provider; reorder is not possible"
}
DELETE/api/v1/email-activations/:id

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

Запрос
curl -X DELETE https://smsbulk.net/api/v1/email-activations/cmox8h7pmicm3mkczzwhdz0yd \
  -H "x-api-key: YOUR_KEY"
Ответ
{
  "ok": true
}
Ответ

Если reorder по этой активации завис, отмена вместо отмены активации возвращает средства за reorder. Ответ 200 содержит reorderRefunded: true и код EMAIL_REORDER_REFUNDED, а исходный адрес остаётся активным.

HTTP 200 OK
{
  "ok": true,
  "reorderRefunded": true,
  "code": "EMAIL_REORDER_REFUNDED",
  "message": "Reorder failed and was refunded. Your original email address is still active."
}
Ответ с ошибкой

Если по этой активации ещё выполняется reorder, отмена возвращает 409 с кодом EMAIL_REORDER_IN_PROGRESS и полем retryAfterSec (сколько секунд подождать). Ничего не отменяется и не списывается; повторите запрос по истечении этого времени.

HTTP 409 Conflict
{
  "statusCode": 409,
  "code": "EMAIL_REORDER_IN_PROGRESS",
  "message": "A reorder is in progress. Try again in a moment.",
  "retryAfterSec": 90
}

Примечания и лимиты

  • Дневная квота общая для SMS и email: 10 000 запросов на ключ API в сутки по UTC.
  • Конечная точка списка возвращает не более 100 строк (по умолчанию 50) и по замыслу не имеет курсорной пагинации.
  • Скидки лояльности применяются к списываемой цене автоматически. userCost отражает то, что вы реально платите.

Начните верификацию по email

Получите ключ API и отправьте первый запрос одной командой curl.