Requêtes combinées avec plusieurs vérifications
Vous n’avez pas besoin d’effectuer un appel API par vérification. Un seul POST /api/v2/check peut exécuter simultanément des vérifications de texte, d’image, de mots interdits et d’antivirus sur du contenu mixte, puis renvoyer une réponse unique avec un résultat pour chacune. C’est la manière la plus efficace de modérer en une seule fois une publication qui contient une légende, une image et une pièce jointe.
Pourquoi tout modérer en un seul appel ?
Une soumission utilisateur est généralement un ensemble : du texte, des médias et des liens. Appeler l’API séparément pour chaque partie implique davantage d’allers-retours, plus de latence et une consommation de quota plus élevée. Une requête combinée exécute les vérifications activées en parallèle et vous fournit une décision unique sur laquelle agir.
Comment exécuter plusieurs vérifications à la fois ?
Placez chaque type de contenu dans content, activez les vérifications souhaitées dans settings, puis consultez les résultats par vérification. Chaque vérification activée s’exécute sur le contenu correspondant.
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
}
}'
Réponse
{
"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
}
}
Comment interpréter le résultat combiné ?
Utilisez has_violations pour la décision globale, puis consultez chaque results.<check>.hit pour savoir quelle vérification s’est déclenchée et pourquoi :
| Champ | Signification |
|---|---|
has_violations |
Vrai si une vérification activée a signalé le contenu — votre verdict en une ligne |
results.hits |
Le même signal global dans l’objet de résultats |
results.spamfinder.hit |
Le spam a été détecté (tient compte des seuils ; basez-vous sur hit, pas sur la valeur brute is_spam) |
results.sentiment.hit |
Sentiment toxique/négatif au-dessus de vos seuils |
results.images.hit |
Une image a dépassé votre seuil NSFW |
results.antivirus.hit |
Logiciel malveillant trouvé dans un document |
results.badwords.hit |
Un mot interdit configuré a été détecté |
results.skipped_features |
Vérifications demandées mais non exécutées (par exemple une fonctionnalité dont le quota est épuisé) |
Seules les vérifications que vous avez activées (et qui disposaient d’un contenu correspondant) apparaissent dans results. Une vérification sans contenu à traiter — check_images sans image_urls — ne s’exécute tout simplement pas.
Quel contenu correspond à quelle vérification ?
| Vérification | Contenu lu |
|---|---|
check_sentiment, check_spam, check_badwords, check_language |
content.text |
check_images |
content.image_urls |
check_antivirus |
content.document_urls |
Une seule requête peut contenir jusqu’à 10 URL d’images, 5 URL de documents et un texte de 10 000 caractères maximum. Envoyez ensemble les différentes parties d’une soumission plutôt que de les répartir sur plusieurs appels.
Qu’en est-il des échecs partiels ?
Si une vérification échoue (par exemple si l’URL d’une image est inaccessible), les autres renvoient tout de même leurs résultats : vous obtenez les résultats qui ont abouti, et la vérification en échec signale son erreur ou un résultat vide au lieu de faire échouer toute la requête. Décidez au cas par cas : bloquez sur un hit confirmé, et choisissez si une vérification en erreur doit être ignorée ou mise en file d’attente pour examen.
Bonnes pratiques
Activez uniquement ce dont vous avez besoin
Chaque vérification activée ajoute du traitement. Activez les vérifications qui correspondent au contenu que vous recevez réellement : il n’y a aucun intérêt à exécuter check_antivirus sur des messages contenant uniquement du texte.
Un verdict, puis une analyse détaillée
Commencez par vous baser sur has_violations pour le chemin rapide, puis inspectez results uniquement lorsque vous devez savoir quelle vérification s’est déclenchée (pour les journaux, les recours ou l’orientation vers le bon modérateur).
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);
Articles associés
- Analyse de texte — sentiment, spam et champs de résultat du texte
- Détection NSFW des images — scoring des images et seuils
- Analyse antivirus des fichiers — vérifications de logiciels malveillants dans les documents
- Codes d’erreur et de réponse — enveloppe de réponse et gestion des quotas