Solicitudes combinadas con varias comprobaciones
No necesitas una llamada a la API por cada comprobación. Un solo POST /api/v2/check puede ejecutar comprobaciones de texto, imagen, palabras prohibidas y antivirus juntas sobre contenido mixto, y devolver una única respuesta con un resultado para cada una. Esta es la forma más eficiente de moderar de una vez una publicación que tiene un pie de foto, una imagen y un archivo adjunto.
¿Por qué moderar todo en una sola llamada?
El envío de un usuario suele ser un conjunto: texto más contenido multimedia más enlaces. Llamar a la API por separado para cada parte implica más viajes de ida y vuelta, más latencia y más cuota consumida. Una solicitud combinada ejecuta las comprobaciones habilitadas en paralelo y te da un único veredicto sobre el que actuar.
¿Cómo ejecuto varias comprobaciones a la vez?
Incluye cada tipo de contenido en content, habilita las comprobaciones que quieras en settings y lee los resultados de cada comprobación. Cada comprobación habilitada se ejecuta sobre el contenido correspondiente.
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
}
}'
Respuesta
{
"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
}
}
¿Cómo interpreto el resultado combinado?
Usa has_violations para la decisión general y luego revisa cada results.<check>.hit para ver qué comprobación se activó y por qué:
| Campo | Significado |
|---|---|
has_violations |
True si alguna comprobación habilitada marcó el contenido: tu veredicto en una sola línea |
results.hits |
La misma señal general dentro del objeto de resultados |
results.spamfinder.hit |
Se activó spam (tiene en cuenta el umbral; decide con hit, no con el valor bruto de is_spam) |
results.sentiment.hit |
Sentimiento tóxico/negativo por encima de tus umbrales |
results.images.hit |
Una imagen superó tu umbral de NSFW |
results.antivirus.hit |
Se encontró malware en un documento |
results.badwords.hit |
Coincidió una palabra prohibida configurada |
results.skipped_features |
Comprobaciones que se solicitaron pero no se ejecutaron (por ejemplo, una función cuya cuota está agotada) |
Solo las comprobaciones que habilitaste (y que tenían contenido correspondiente) aparecen en results. Una comprobación sin contenido sobre el que actuar — check_images sin image_urls — simplemente no se ejecuta.
¿Qué contenido corresponde a cada comprobación?
| Comprobación | Contenido que lee |
|---|---|
check_sentiment, check_spam, check_badwords, check_language |
content.text |
check_images |
content.image_urls |
check_antivirus |
content.document_urls |
Una sola solicitud puede incluir hasta 10 URL de imágenes, 5 URL de documentos y texto de hasta 10.000 caracteres. Envía juntas las partes de un envío en lugar de dividirlas en varias llamadas.
¿Qué ocurre con los fallos parciales?
Si una comprobación da error (por ejemplo, una URL de imagen no es accesible), las demás igualmente devuelven resultado: recibes los resultados que se completaron correctamente, y la comprobación fallida informa de su error o de un resultado vacío en lugar de hacer fallar toda la solicitud. Decide por comprobación: bloquea ante un hit confirmado y elige si una comprobación con error debe permitirse o enviarse a revisión.
Buenas prácticas
Habilita solo lo que necesites
Cada comprobación habilitada añade trabajo. Activa las comprobaciones que coincidan con el contenido que realmente recibes: no tiene sentido ejecutar check_antivirus en mensajes que solo contienen texto.
Un veredicto y luego profundiza
Primero bifurca según has_violations para la ruta rápida; después inspecciona results solo cuando necesites saber qué comprobación se activó (para registros, apelaciones o para dirigirlo al revisor adecuado).
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);
Relacionado
- Análisis de texto — sentimiento, spam y campos de resultado de texto
- Detección NSFW en imágenes — puntuación de imágenes y umbrales
- Escaneo antivirus de archivos — comprobaciones de malware en documentos
- Códigos de error y respuesta — el envoltorio de respuesta y la gestión de cuotas