Passer au contenu principal
POST
/
v1
/
moderations
curl --request POST \
  --url https://direct.evolink.ai/v1/moderations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "evolink-moderation-1.0",
  "input": [
    {
      "type": "text",
      "text": "I want to kill them."
    }
  ]
}
'
{
  "evolink_summary": {
    "risk_level": "medium",
    "flagged": false,
    "violations": [],
    "max_score": 0.597383272,
    "max_category": "sexual"
  },
  "id": "modr-0d9740456c391e43c445bf0f010940c7",
  "model": "evolink-moderation-1.0",
  "results": [
    {
      "flagged": false,
      "categories": {
        "harassment": false,
        "harassment/threatening": false,
        "hate": false,
        "hate/threatening": false,
        "illicit": false,
        "illicit/violent": false,
        "self-harm": false,
        "self-harm/intent": false,
        "self-harm/instructions": false,
        "sexual": false,
        "sexual/minors": false,
        "violence": false,
        "violence/graphic": false
      },
      "category_scores": {
        "harassment": 0.0006,
        "harassment/threatening": 0.0007,
        "hate": 0.00003,
        "hate/threatening": 0.0000025,
        "illicit": 0.000013,
        "illicit/violent": 0.0000096,
        "self-harm": 0.0000166,
        "self-harm/intent": 0.000004,
        "self-harm/instructions": 0.0000031,
        "sexual": 0.597383272,
        "sexual/minors": 0.000004,
        "violence": 0.0231,
        "violence/graphic": 0.0089
      },
      "category_applied_input_types": {
        "harassment": [
          "text"
        ],
        "harassment/threatening": [
          "text"
        ],
        "hate": [
          "text"
        ],
        "hate/threatening": [
          "text"
        ],
        "illicit": [
          "text"
        ],
        "illicit/violent": [
          "text"
        ],
        "self-harm": [
          "text"
        ],
        "self-harm/intent": [
          "text"
        ],
        "self-harm/instructions": [
          "text"
        ],
        "sexual": [
          "text"
        ],
        "sexual/minors": [
          "text"
        ],
        "violence": [
          "text"
        ],
        "violence/graphic": [
          "text"
        ]
      }
    }
  ]
}
BaseURL : La BaseURL par défaut est https://direct.evolink.ai, qui offre une meilleure prise en charge des modèles de texte et des connexions persistantes. https://api.evolink.ai est le point d’accès principal pour les services multimodaux et sert d’adresse de secours pour les modèles de texte.

Autorisations

Authorization
string
header
requis

##Tous les endpoints requièrent une authentification par jeton Bearer##

Obtenir votre clé API :

Consultez la page de gestion des clés API pour obtenir votre clé API.

Ajoutez-la dans l'en-tête de la requête :

Authorization: Bearer YOUR_API_KEY

Corps

application/json
model
enum<string>
requis

Nom du modèle de modération, fixé à evolink-moderation-1.0

Options disponibles:
evolink-moderation-1.0
Exemple:

"evolink-moderation-1.0"

input
(Élément d'entrée texte · object | Élément d'entrée image · object)[]
requis

Contenu à modérer, sous forme d'un tableau d'objets unifié. Chaque élément est un objet text ou image_url.

"input": [
{"type": "text", "text": "texte à modérer"},
{"type": "image_url", "image_url": {"url": "https://..."}}
]

Limites :

  • Le tableau ne peut contenir qu'un seul objet type=image_url ; pour modérer plusieurs images, lancez des requêtes en parallèle
  • Le nombre d'objets type=text n'est pas limité

Réponse

Modération effectuée avec succès

Réponse de modération. Le champ evolink_summary au plus haut niveau est le résumé de risque unifié recommandé pour les applications ; results fournit le détail des scores par catégorie.

Résumé de risque EvoLink : résumé unifié calculé à partir des category_scores des 13 catégories, en appliquant à chacune des seuils différenciés selon sa sensibilité. L'application peut s'en servir directement pour autoriser, refuser ou mettre en revue.

Tableau des seuils par niveau de risque

CatégorieSeuil mediumSeuil highNotes
sexual/minors0.050.20Catégorie sensible, seuils les plus stricts
self-harm / self-harm/intent / self-harm/instructions0.300.60Vies humaines en jeu, traitement strict
violence/graphic0.400.70Violence graphique
illicit/violent0.400.70Illicite et violent
sexual0.500.80Sexuel courant
violence0.500.80Violence courante
harassment/threatening0.500.80Harcèlement avec menace
hate/threatening0.500.80Haine avec menace
harassment0.600.85Harcèlement courant
hate0.600.85Haine courante
illicit0.600.85Indications illicites courantes

Règles de décision

Une catégorie au moins avec score >= seuil high   → risk_level = "high",   flagged = true,  ajoutée à violations
Une catégorie au moins avec score >= seuil medium → risk_level = "medium", flagged = false
Sinon → risk_level = "low", flagged = false

Recommandations d'utilisation

summary = response["evolink_summary"]

if summary["flagged"]: # high → refus immédiat
reject(reason=summary["violations"])
elif summary["risk_level"] == "medium": # zone grise
log_for_review(summary) # journaliser, contrôle manuel ponctuel
proceed()
else: # low → autoriser
proceed()
id
string

Identifiant unique de cette requête de modération

Exemple:

"modr-0d9740456c391e43c445bf0f010940c7"

model
string

Nom du modèle effectivement utilisé, fixé à evolink-moderation-1.0

Exemple:

"evolink-moderation-1.0"

results
object[]

Liste des résultats de modération. Renvoie toujours 1 seul result (un tableau d'entrées est consolidé en un seul score).

Portée d'évaluation multimodale

Parmi les 13 catégories, certaines sont évaluées uniquement sur le texte et ne sont pas évaluées sur l'image :

CatégoriePortée d'évaluation
harassment / harassment/threateningTexte uniquement
hate / hate/threateningTexte uniquement
illicit / illicit/violentTexte uniquement
sexual/minorsTexte uniquement (catégorie sensible — attention)
self-harm / self-harm/intent / self-harm/instructionsTexte + image
sexualTexte + image
violence / violence/graphicTexte + image

Points clés :

  • Lorsque seule une image est envoyée, les scores des 7 catégories texte uniquement ci-dessus restent à 0 et category_applied_input_types est un tableau vide — cela ne signifie pas que le contenu est sûr, mais simplement qu'il n'a pas été évalué
  • Si votre cas d'usage implique un risque concernant des mineurs (catégorie sensible sexual/minors), il faut impérativement soumettre le contexte textuel en même temps ; ne vous reposez pas uniquement sur le score image