ДАРА ЗАЩИТА
Разделы документации

ДАРА ЗАЩИТА / Документация / API антиспама

API антиспама

Метод POST /api/v1/check: запрос и ответ, поля action, verdict, checked и mode, пример на PHP, отметки feedback, проверка ключа и что делать при сбое Защиты.

Сервер сайта отправляет заявку на проверку до того, как отправить её дальше. Ключ — секретный dzs_… со вкладки «Код и ключи», передаётся в заголовке Authorization: Bearer. Никогда не вставляйте его в код страницы.

POSThttps://captcha.daratech.ru/api/v1/check

{
  "token": "значение поля dara_token (или пусто)",
  "fields": {"name": "Анна", "email": "anna@mail.ru", "phone": "+7 912 000-00-00", "message": "…", "любое_поле": "…"},
  "ip": "IP посетителя",
  "user_agent": "User-Agent посетителя",
  "page_url": "https://site.ru/contacts/",
  "form": "contacts"
}

Ответ:

{"check_id": "Vb3…", "verdict": "spam", "action": "reject", "score": 83,
 "reasons": ["no_interaction", "links_in_text"], "checked": "full", "mode": "live"}
ПолеЗначение
actiondeliver — отправляйте заявку как обычно; reject — не отправляйте (она уже в журнале Защиты). Ориентируйтесь на это поле.
verdictok, suspect (заявка доставляется, но подозрительна — можно пометить) или spam.
checkedfull — с данными визита по токену; partial — токена не было, проверка по содержимому, IP и браузеру.
modeshadow — режим «Только считать»: action всегда deliver.

Повтор того же токена в течение 30 минут возвращает тот же ответ — проверять одну заявку дважды безопасно.

Если Защита не ответила за несколько секунд или вернула ошибку, отправляйте заявку как обычно — с пометкой «не проверено». Терять настоящие заявки из-за нашего сбоя нельзя. Пример на PHP:

$ch = curl_init('https://captcha.daratech.ru/api/v1/check');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Authorization: Bearer ' . getenv('DARA_PROTECT_SECRET')],
    CURLOPT_POSTFIELDS => json_encode([
        'token' => $_POST['dara_token'] ?? '',
        'fields' => $_POST,
        'ip' => $_SERVER['REMOTE_ADDR'],
        'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
        'page_url' => $_SERVER['HTTP_REFERER'] ?? '',
    ]),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 5,
]);
$r = json_decode((string)curl_exec($ch), true);
if (($r['action'] ?? 'deliver') === 'reject') {
    exit;                                  // спам: не отправляем, заявка в журнале Защиты
}
$unchecked = !isset($r['action']);        // Защита не ответила — отправляем с пометкой
// … дальше как обычно: письмо, CRM, база

POSThttps://captcha.daratech.ru/api/v1/feedback

Отметка человека: {"check_id": "…", "label": "spam"} или "ham" (не спам). По отметкам видно, где Защита ошибается.

GEThttps://captcha.daratech.ru/api/v1/ping

Проверка ключа: {"ok": true, "site": "…", "mode": "shadow"}.