Skip to content

Fraud Prevention Data API

Data API — это серверный напарник Web SDK. Используйте его для получения вердиктов, агрегирования статистики и экспорта данных для отчётности и сверки — чтобы получать цифры, на которых сходятся ваши собственные системы.

Базовый URL

https://apiv1.captcha.la

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

Все запросы к Data API аутентифицируются учётными данными вашего приложения Fraud Prevention, передаваемыми в заголовках:

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

WARNING

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

Эндпоинты

Получить вердикт

Получите вердикт для одного визита (например, чтобы сверить конкретный визит).

bash
GET /v1/bot/verdict?cid=CID_OF_THE_VISIT
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET

Поле data в ответе — это объект BotVerdict:

json
{
  "code": 0,
  "data": {
    "is_bot": true,
    "score": 87,
    "level": "high",
    "action": "flag",
    "consistency": { "ok": false },
    "degraded": false
  }
}

Агрегированная статистика

Получайте подсчёты по корзинам за период времени — итоги, долю ботов и разбивку по action/level — для дашбордов и отчётов о качестве.

bash
GET /v1/bot/stats?from=2026-06-01&to=2026-06-30
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
json
{
  "code": 0,
  "data": {
    "from": "2026-06-01",
    "to": "2026-06-30",
    "total": 124500,
    "bots": 18230,
    "bot_rate": 0.146,
    "by_action": { "record_only": 102100, "flag": 19800, "challenge": 2600 },
    "by_level":  { "low": 100300, "medium": 16900, "high": 6200, "critical": 1100 }
  }
}

Экспорт

Экспортируйте построчные вердикты по визитам за период времени для офлайн-сверки.

bash
GET /v1/bot/export?from=2026-06-01&to=2026-06-30&format=csv
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET

Каждая строка несёт идентификатор визита, временную метку и поля вердикта (is_bot, score, level, action), так что вы можете связать её обратно со своими логами.

Сверка по каждому клику

Для сценариев платного трафика отдельный визит может быть привязан обратно к конкретному доставленному клику, чтобы две стороны могли по нему рассчитаться. Это использует click-токен и описано в руководстве Рекламный фрод.

Справочник по click token (для поставщиков трафика)

Поставщик трафика подписывает click token на своём собственном сервере и добавляет его в целевой URL, чтобы вердикт по итоговому визиту был отнесён обратно к поставщику. Подпись выполняется офлайн — без вызова API.

Получите учётные данные для подписи

В панели управления откройте ваше приложение → Fraud Prevention → Выпустить ключ подписи. Вы получите:

  • bot_kid — идентификатор вашего публичного ключа (попадает в токен как pkid).
  • bot_hmac_secret — ваш секрет подписи, показывается один раз. Храните его на стороне сервера.

Формат токена

ct.<base64url(payload)>.<base64url(HMAC_SHA256(body, bot_hmac_secret))>

body — это base64url JSON-полезной нагрузки; подпись вычисляется над этой строкой body.

Поля полезной нагрузки

полеобязательноописание
pkidдаваш bot_kid; бэкенд использует его для поиска вашего секрета и проверки подписи
cidдауникальный идентификатор этого клика; ключ сверки. Генерируйте новое уникальное значение для каждого клика
audнетapp_key целевого рекламодателя. Если задано, токен принимается только на странице этого рекламодателя. Опустите, чтобы токен принимался на странице любого рекламодателя
click_tsнетunix-секунды момента клика
expнетunix-секунды срока действия; просроченные токены отклоняются

Добавьте его в ссылку

Добавьте токен как query-параметр _ctk к целевому URL рекламодателя:

https://advertiser.example/lp?_ctk=ct.<...>.<...>

SDK рекламодателя считывает _ctk автоматически (настраивается через tokenParam). Значение cid можно использовать только один раз (защита от повторного воспроизведения). См. Модель безопасности.

Пример (псевдокод)

js
const payload = { pkid, cid, aud: advertiserAppKey, click_ts: now, exp: now + 900 }
const body  = base64url(JSON.stringify(payload))
const sig   = base64url(hmacSha256(body, botHmacSecret))
const token = `ct.${body}.${sig}`
const url   = `${destination}?_ctk=${encodeURIComponent(token)}`

Дальнейшие шаги

MIT-licensed examples · CaptchaLa is operated independently