Skip to content

Справочник API

CaptchaLa предоставляет RESTful API для всех серверных интеграций.

Базовый URL

https://apiv1.captcha.la

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

Все запросы к API требуют заголовков аутентификации:

X-App-Key:    YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET

WARNING

X-App-Secret предназначен только для сервера. Никогда не передавайте его в браузер, мобильные приложения или публичные репозитории.

API серверной проверки

💡 Используйте серверный SDK, чтобы пропустить шаблонный код. Оборачивает endpoint, обрабатывает повторы, выдаёт типизированные ошибки:

После того как пользователь проходит CAPTCHA на frontend, ваш сервер должен проверить Token, возвращённый SDK. Ниже перечислены endpoint серверной проверки.

Серверная проверка Token

Проверяет pass_token из frontend SDK (с префиксом pt_). Требует заголовков X-App-Key и X-App-Secret.

bash
POST /v1/validate
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/json

{ "pass_token": "pt_xxx", "client_ip": "1.2.3.4" }
json
{
  "code": 0,
  "data": {
    "valid": true,
    "challenge_id": "ch_xxx",
    "action": "login",
    "uid": null,
    "client_ip": "1.2.3.4",
    "risk_score": 12
  }
}

TIP

Проверяйте data.valid === true и что data.action соответствует ожидаемому сценарию (отклоняйте, если Token из потока pay предъявляется на /login). Token одноразовые.

Token запроса, выданный сервером

Выпустите короткоживущий server_token с вашего backend. Браузер затем передаёт этот Token при инициализации запроса, подтверждая, что запрос поступил с вашего доверенного сервера.

Выпуск Server Token

Вызывайте этот endpoint только со своего сервера. Требует X-App-Key + X-App-Secret. Ответ содержит server_token (префикс sct_), который frontend передаёт при инициализации запроса.

bash
POST /v1/server/challenge/issue
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/x-www-form-urlencoded

action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4
json
{
  "code": 0,
  "data": {
    "server_token": "sct_xxxxxxxxxxxx",
    "expires_in": 300,
    "issued_at": 1713600000
  }
}

Параметры тела (form-urlencoded)

ПолеОписание
actionБизнес-сценарий, например login, register, pay. Должен совпадать с action, использованным при инициализации запроса.
ttlВремя жизни Token в секундах. По умолчанию 300, максимум 900.
max_usesМаксимальное количество использований Token. По умолчанию 10.
bind_ipПривязка Token к IP клиента. Инициализация с другого IP будет отклонена.
bind_device_idПривязка Token к конкретному идентификатору устройства.
bind_fingerprintПривязка Token к конкретному отпечатку браузера.

Инициализация запроса

Вызывается SDK для запуска запроса CAPTCHA. Принимает опциональный server_token, выданный через /v1/server/challenge/issue.

ПолеОписание
app_keyВаш публичный App Key.
actionБизнес-сценарий. Должен совпадать с action, использованным при выпуске server_token.
server_tokenОпционально; обязательно, когда у приложения server_token_required = true.

INFO

Если для данного приложения в панели управления включён server_token_required, инициализация запроса отклонит обращения без действительного server_token.

Коды ошибок

КодОписание
invalid_app_keyНедействительный App Key
invalid_app_secretНедействительный App Secret
challenge_expiredСрок действия запроса истёк
challenge_not_foundЗапрос не найден
invalid_answerНеверный ответ
token_expiredСрок действия Token истёк
token_already_usedToken уже использован
token_not_foundToken не найден
quota_exceededКвота превышена
rate_limitedПревышен лимит частоты
rate_limit_exceededСлишком много запросов на выпуск для этого приложения. Сделайте паузу и повторите.

MIT-licensed examples · CaptchaLa is operated independently