Skip to main content
Документация
Центр обучения

Освойте модерацию контента с подробными руководствами, обучающими материалами и документацией API

Быстрые ссылки

Комбинированные запросы с несколькими проверками

Вам не нужен отдельный API-вызов для каждой проверки. Один POST /api/v2/check может одновременно выполнить проверки текста, изображения, badword и антивирусную проверку для смешанного контента, а затем вернуть один ответ с результатом по каждой из них. Это самый эффективный способ модерировать публикацию, в которой сразу есть подпись, изображение и вложение.

Зачем модерировать всё одним вызовом?

Пользовательская отправка обычно представляет собой набор: текст, медиафайлы и ссылки. Если вызывать API отдельно для каждой части, будет больше сетевых обращений, выше задержка и больше расход квоты. Один комбинированный запрос запускает включённые проверки параллельно и даёт единый вердикт, на основании которого можно действовать.

Как запустить несколько проверок одновременно?

Поместите каждый тип контента в content, включите нужные проверки в settings и прочитайте результаты по каждой проверке. Каждая включённая проверка выполняется для соответствующего контента.

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "text": "Great deal, check my profile!",
      "image_urls": ["https://example.com/post-image.jpg"],
      "document_urls": ["https://example.com/attachment.pdf"]
    },
    "settings": {
      "check_spam": true,
      "check_sentiment": true,
      "check_images": true,
      "check_antivirus": true
    }
  }'

Ответ

{
  "has_violations": true,
  "cached": false,
  "results": {
    "hits": true,
    "spamfinder": { "label": "spam", "confidence": 0.91, "is_spam": true, "hit": true },
    "sentiment": { "is_negative": false, "is_toxic": false, "score": 0.1, "hit": false },
    "images": { "status": "OK", "porn": 0.02, "sexual": 0.05, "neutral": 0.93, "hit": false },
    "antivirus": { "status": "OK", "hit": false, "details": [] }
  },
  "usage": {
    "api_requests_used": 530,
    "api_requests_limit": 10000,
    "api_requests_remaining": 9470
  }
}

Как читать комбинированный результат?

Используйте has_violations для общего решения, затем смотрите на каждый results.<check>.hit, чтобы понять, какая проверка сработала и почему:

Поле Значение
has_violations True, если любая включённая проверка пометила контент — ваш краткий итоговый вердикт
results.hits Тот же общий сигнал внутри объекта результатов
results.spamfinder.hit Сработала проверка спама (с учётом порога; ориентируйтесь на hit, а не на сырое значение is_spam)
results.sentiment.hit Токсальная/негативная тональность выше заданных вами порогов
results.images.hit Изображение превысило ваш порог NSFW
results.antivirus.hit В документе найдено вредоносное ПО
results.badwords.hit Найдено совпадение с настроенным badword
results.skipped_features Проверки, которые были запрошены, но не выполнены (например, функция, у которой исчерпана квота)

В results появляются только те проверки, которые вы включили и для которых был соответствующий контент. Проверка, для которой нет контента, — например, check_images без image_urls — просто не запускается.

Какой контент соответствует какой проверке?

Проверка Какой контент читает
check_sentiment, check_spam, check_badwords, check_language content.text
check_images content.image_urls
check_antivirus content.document_urls

Один запрос может содержать до 10 URL изображений, 5 URL документов и текст длиной до 10 000 символов. Отправляйте части одной пользовательской отправки вместе, а не разделяйте их по разным вызовам.

Что насчёт частичных сбоев?

Если одна проверка завершается ошибкой (например, URL изображения недоступен), остальные всё равно вернутся — вы получите успешные результаты, а проверка со сбоем сообщит свою ошибку или пустой результат, не проваливая весь запрос целиком. Принимайте решение по каждой проверке отдельно: блокируйте при подтверждённом hit и решайте, должна ли проверка с ошибкой пропускать контент или отправлять его в очередь на ручную проверку.

Рекомендации

Включайте только то, что нужно

Каждая включённая проверка добавляет работу. Включайте проверки, которые соответствуют контенту, фактически поступающему к вам, — нет смысла запускать check_antivirus для сообщений, состоящих только из текста.

Один вердикт, затем детализация

Сначала ветвитесь по has_violations для быстрого сценария, а затем проверяйте results только тогда, когда нужно понять, какая именно проверка сработала (для логирования, апелляций или направления подходящему модератору).

const res = await check(content, settings);
if (!res.has_violations) return allow();

const r = res.results;
if (r.antivirus?.hit) return quarantine();      // most severe first
if (r.images?.hit)    return blockMedia();
if (r.spamfinder?.hit || r.badwords?.hit) return shadowban();
return queueForReview(r);

Связанные материалы

Автор: Команда Discuse · Обновлено June 2026

Похожие статьи

Анализ текста и определение тональности

Выявляйте спам, токсичность, ненормативную лексику и анализируйте тональность текстового контента

Определение NSFW на изображениях

Автоматически выявляйте и фильтруйте неприемлемые изображения и контент для взрослых

Обнаружение спама

Фильтрация спама в тексте и сообщениях на базе AI