Solicitações combinadas com múltiplas verificações
Você não precisa fazer uma chamada de API para cada verificação. Um único POST /api/v2/check pode executar verificações de texto, imagem, palavras proibidas e antivírus em conjunto sobre conteúdo misto, retornando uma única resposta com um resultado para cada uma. Essa é a forma mais eficiente de moderar, de uma só vez, uma publicação que tem legenda, imagem e anexo.
Por que moderar tudo em uma única chamada?
O envio de um usuário geralmente é um conjunto: texto mais mídia e links. Chamar a API separadamente para cada parte significa mais idas e vindas, mais latência e mais cota consumida. Uma solicitação combinada executa as verificações habilitadas em paralelo e fornece uma única decisão para você agir.
Como executar várias verificações de uma vez?
Coloque cada tipo de conteúdo em content, habilite as verificações desejadas em settings e leia os resultados de cada verificação. Cada verificação habilitada é executada sobre o conteúdo correspondente.
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
}
}'
Resposta
{
"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
}
}
Como interpretar o resultado combinado?
Use has_violations para a decisão geral e, em seguida, observe cada results.<check>.hit para ver qual verificação foi acionada e por quê:
| Campo | Significado |
|---|---|
has_violations |
Verdadeiro se qualquer verificação habilitada sinalizou o conteúdo — sua decisão em uma linha |
results.hits |
O mesmo sinal geral dentro do objeto de resultados |
results.spamfinder.hit |
Spam foi acionado (considera o limite; use hit como critério, não o is_spam bruto) |
results.sentiment.hit |
Sentimento tóxico/negativo acima dos seus limites |
results.images.hit |
Uma imagem ultrapassou seu limite de NSFW |
results.antivirus.hit |
Malware encontrado em um documento |
results.badwords.hit |
Uma palavra proibida configurada foi encontrada |
results.skipped_features |
Verificações solicitadas, mas não executadas (por exemplo, um recurso cuja cota se esgotou) |
Apenas as verificações que você habilitou (e que tinham conteúdo correspondente) aparecem em results. Uma verificação sem conteúdo para analisar — check_images sem image_urls — simplesmente não é executada.
Qual conteúdo corresponde a qual verificação?
| Verificação | Conteúdo lido |
|---|---|
check_sentiment, check_spam, check_badwords, check_language |
content.text |
check_images |
content.image_urls |
check_antivirus |
content.document_urls |
Uma única solicitação pode conter até 10 URLs de imagem, 5 URLs de documento e texto com até 10.000 caracteres. Envie as partes de um envio juntas, em vez de dividi-las em várias chamadas.
E quanto a falhas parciais?
Se uma verificação gerar erro (por exemplo, se uma URL de imagem estiver inacessível), as outras ainda retornam — você recebe os resultados que tiveram sucesso, e a verificação com falha informa seu erro/resultado vazio em vez de fazer a solicitação inteira falhar. Decida por verificação: bloqueie com base em um hit confirmado e escolha se uma verificação com erro deve ser aprovada por padrão ou enviada para análise.
Boas práticas
Habilite apenas o que você precisa
Cada verificação habilitada adiciona trabalho. Ative as verificações que correspondem ao conteúdo que você realmente recebe — não há benefício em executar check_antivirus em mensagens apenas de texto.
Uma decisão, depois aprofunde
Primeiro ramifique com base em has_violations para o caminho rápido; depois, inspecione results somente quando precisar saber qual verificação foi acionada (para registros, contestações ou encaminhamento ao revisor certo).
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);
Relacionados
- Análise de texto — sentimento, spam e os campos de resultado de texto
- Detecção de NSFW em imagens — pontuação de imagens e limites
- Verificação antivírus de arquivos — verificações de malware em documentos
- Códigos de erro e resposta — o envelope da resposta e o gerenciamento de cota