Saltar al contenido 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 predeterminada es https://direct.evolink.ai, que ofrece mejor compatibilidad con modelos de texto y admite conexiones persistentes. https://api.evolink.ai es el endpoint principal para servicios multimodales y actúa como dirección de respaldo para los modelos de texto.

Autorizaciones

Authorization
string
header
requerido

##Todos los endpoints requieren autenticación con Bearer Token##

Obtener tu API Key:

Visita la página de gestión de API Keys para obtener tu API Key.

Inclúyela en el encabezado de la solicitud:

Authorization: Bearer YOUR_API_KEY

Cuerpo

application/json
model
enum<string>
requerido

Nombre del modelo de moderación, fijo a evolink-moderation-1.0

Opciones disponibles:
evolink-moderation-1.0
Ejemplo:

"evolink-moderation-1.0"

input
(Elemento de entrada de texto · object | Elemento de entrada de imagen · object)[]
requerido

Contenido a moderar, unificado en forma de array de objetos. Cada elemento es un objeto text o image_url.

"input": [
{"type": "text", "text": "texto a moderar"},
{"type": "image_url", "image_url": {"url": "https://..."}}
]

Limitaciones:

  • Dentro del array puede haber como máximo 1 objeto con type=image_url; si necesitas moderar varias imágenes, divide la carga en solicitudes paralelas
  • El número de objetos type=text no está limitado

Respuesta

Moderación completada con éxito

Respuesta de moderación. El evolink_summary del nivel superior es el resumen unificado de riesgo recomendado para el lado de negocio; results ofrece el detalle de puntuaciones por categoría.

Resumen de riesgo de EvoLink: resumen unificado calculado a partir de category_scores de las 13 categorías, aplicando umbrales diferenciados según la sensibilidad de cada categoría. El negocio puede usarlo directamente para permitir / rechazar / enviar a revisión.

Tabla de umbrales por nivel de riesgo

CategoríaUmbral mediumUmbral highNotas
sexual/minors0.050.20Categoría crítica, umbrales más estrictos
self-harm / self-harm/intent / self-harm/instructions0.300.60Riesgo vital, estricto
violence/graphic0.400.70Violencia gráfica
illicit/violent0.400.70Ilícito violento
sexual0.500.80Sexual general
violence0.500.80Violencia general
harassment/threatening0.500.80Acoso amenazante
hate/threatening0.500.80Odio amenazante
harassment0.600.85Acoso general
hate0.600.85Odio general
illicit0.600.85Instrucciones ilícitas generales

Reglas de decisión

Cualquier categoría con score >= umbral high   → risk_level = "high",   flagged = true,  se añade a violations
Cualquier categoría con score >= umbral medium → risk_level = "medium", flagged = false
En caso contrario → risk_level = "low", flagged = false

Recomendaciones de uso para el negocio

summary = response["evolink_summary"]

if summary["flagged"]: # high → rechazar directamente
reject(reason=summary["violations"])
elif summary["risk_level"] == "medium": # zona gris
log_for_review(summary) # registrar y revisar manualmente
proceed()
else: # low → permitir
proceed()
id
string

Identificador único de esta solicitud de moderación

Ejemplo:

"modr-0d9740456c391e43c445bf0f010940c7"

model
string

Nombre del modelo realmente utilizado, fijo a evolink-moderation-1.0

Ejemplo:

"evolink-moderation-1.0"

results
object[]

Lista de resultados de moderación. Devuelve siempre 1 result (las entradas en forma de array se consolidan en una única evaluación).

Alcance de evaluación multimodal

De las 13 categorías, algunas se evalúan solo sobre texto y no se aplican a imágenes:

CategoríaAlcance de evaluación
harassment / harassment/threateningSolo texto
hate / hate/threateningSolo texto
illicit / illicit/violentSolo texto
sexual/minorsSolo texto (categoría crítica — atención)
self-harm / self-harm/intent / self-harm/instructionsTexto + imagen
sexualTexto + imagen
violence / violence/graphicTexto + imagen

Hechos clave:

  • Cuando solo se envía una imagen, las 7 categorías anteriores de solo texto tendrán siempre puntuación 0 y category_applied_input_types vacío — esto no significa que el contenido sea seguro, solo que no se evaluó
  • Si tu negocio implica riesgo con menores (la categoría crítica sexual/minors), debes enviar siempre el contexto textual junto con la imagen; no puedes apoyarte únicamente en la puntuación de la imagen