{
"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"
]
}
}
]
}{
"error": {
"code": 400,
"message": "field input is required",
"type": "invalid_request_error",
"param": "input"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Insufficient quota",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/credits"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error",
"param": "model"
}
}{
"error": {
"code": 404,
"message": "Specified model not found",
"type": "not_found_error",
"param": "model",
"fallback_suggestion": "evolink-moderation-1.0"
}
}{
"error": {
"code": 413,
"message": "Image file too large",
"type": "request_too_large_error",
"param": "input",
"fallback_suggestion": "compress image to under 20MB"
}
}{
"error": {
"code": 429,
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Internal server error",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Bad gateway",
"type": "bad_gateway_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Service temporarily unavailable",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}EvoLink Moderation 1.0 - Referencia completa de la API
- Endpoint síncrono que detecta contenido nocivo en texto y/o imágenes a través de 13 dimensiones
- En la respuesta, el campo
evolink_summarydevuelve un resumen unificado con cinco propiedades:risk_level/flagged/violations/max_score/max_category
Capacidades principales:
- Moderación multimodal: admite entradas de solo texto, solo imagen o combinaciones de texto + imagen
- 13 categorías: harassment, hate, sexual, violence, self-harm, illicit, sexual/minors, etc.
- Clasificación de riesgo: cada categoría define umbrales medium / high independientes y se evalúa con sensibilidad diferenciada (la categoría crítica sexual/minors aplica los umbrales más estrictos)
- Explicable: la respuesta devuelve simultáneamente los
category_scorespor categoría y elevolink_summarysimplificado; el negocio puede usar uno u otro
Limitaciones de entrada:
- Como máximo 1 imagen por solicitud (si necesitas moderar varias imágenes, divide la carga en solicitudes paralelas)
- Las imágenes solo se aceptan como URL HTTPS
Uso típico: consulta los ejemplos de abajo, que cubren los tres escenarios habituales: solo texto, texto + imagen y solo imagen.
{
"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"
]
}
}
]
}{
"error": {
"code": 400,
"message": "field input is required",
"type": "invalid_request_error",
"param": "input"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Insufficient quota",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/credits"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error",
"param": "model"
}
}{
"error": {
"code": 404,
"message": "Specified model not found",
"type": "not_found_error",
"param": "model",
"fallback_suggestion": "evolink-moderation-1.0"
}
}{
"error": {
"code": 413,
"message": "Image file too large",
"type": "request_too_large_error",
"param": "input",
"fallback_suggestion": "compress image to under 20MB"
}
}{
"error": {
"code": 429,
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Internal server error",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Bad gateway",
"type": "bad_gateway_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Service temporarily unavailable",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}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
##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
Nombre del modelo de moderación, fijo a evolink-moderation-1.0
evolink-moderation-1.0 "evolink-moderation-1.0"
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=textno está limitado
- Elemento de entrada de texto
- Elemento de entrada de imagen
Show child attributes
Show child attributes
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ía | Umbral medium | Umbral high | Notas |
|---|---|---|---|
sexual/minors | 0.05 | 0.20 | Categoría crítica, umbrales más estrictos |
self-harm / self-harm/intent / self-harm/instructions | 0.30 | 0.60 | Riesgo vital, estricto |
violence/graphic | 0.40 | 0.70 | Violencia gráfica |
illicit/violent | 0.40 | 0.70 | Ilícito violento |
sexual | 0.50 | 0.80 | Sexual general |
violence | 0.50 | 0.80 | Violencia general |
harassment/threatening | 0.50 | 0.80 | Acoso amenazante |
hate/threatening | 0.50 | 0.80 | Odio amenazante |
harassment | 0.60 | 0.85 | Acoso general |
hate | 0.60 | 0.85 | Odio general |
illicit | 0.60 | 0.85 | Instrucciones 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()
Show child attributes
Show child attributes
Identificador único de esta solicitud de moderación
"modr-0d9740456c391e43c445bf0f010940c7"
Nombre del modelo realmente utilizado, fijo a evolink-moderation-1.0
"evolink-moderation-1.0"
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ía | Alcance de evaluación |
|---|---|
harassment / harassment/threatening | Solo texto |
hate / hate/threatening | Solo texto |
illicit / illicit/violent | Solo texto |
sexual/minors | Solo texto (categoría crítica — atención) |
self-harm / self-harm/intent / self-harm/instructions | Texto + imagen |
sexual | Texto + imagen |
violence / violence/graphic | Texto + imagen |
Hechos clave:
- Cuando solo se envía una imagen, las 7 categorías anteriores de solo texto tendrán siempre puntuación
0ycategory_applied_input_typesvací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
Show child attributes
Show child attributes