Moderar contenido
Toda caja de comentarios, función de chat o campo generado por usuarios es una invitación abierta a lo peor que alguien pueda escribir, y este endpoint lee cada envío antes de que tenga que hacerlo una persona, marcando toxicidad, odio y acoso con un puntaje de severidad. Es la capa que permite que una comunidad se mantenga abierta sin que un moderador lea cada publicación primero.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema detrás de la funcionalidad
Nadie construye una sección de comentarios esperando tener una cola de moderación, pero en cuanto llegan usuarios reales, una parte de lo que publican será acoso, insultos discriminatorios o ataques coordinados, y la revisión manual sola no puede seguirle el ritmo al volumen. text/moderate existe para detectar esa parte automáticamente, marcándola para eliminación, revisión o limitación de frecuencia antes de que sea visible para nadie más, en vez de después de que llegue un reporte.
Qué pasa en cada llamada
Envía sus textos por POST a /text/moderate y recibe de inmediato un task_id mientras la tarea corre de forma asíncrona sobre nuestra red global. El resultado final, entregado por webhook firmado o por enlace firmado válido por 24 horas, devuelve un desglose por categoría —cosas como discurso de odio, acoso y toxicidad severa— con un puntaje por cada una, así puede fijar su propio umbral para eliminación automática o cola de revisión humana en vez de recibir un simple sí o no.
Por qué se juzga por categorías y no con un solo puntaje
Los primeros filtros de spam y groserías funcionaban con listas de palabras prohibidas, y se rompían constantemente: no detectaban faltas de ortografía creativas y marcaban palabras totalmente inocentes que por casualidad contenían una subcadena prohibida. La moderación moderna lee significado en vez de comparar cadenas de texto, y separa categorías porque una grosería dirigida a nadie en particular no es el mismo problema que una amenaza dirigida, y tratarlas igual termina sobrebloqueando texto inofensivo o dejando pasar acoso real.
Quién lo incorpora a su infraestructura
Plataformas de comunidad que necesitan revisar cada publicación antes de que quede visible, no después de que un usuario la reporte. Marketplaces que filtran mensajes entre compradores y vendedores buscando acoso antes de que una disputa escale. Secciones de comentarios de sitios de medios que quieren un pre-filtrado automatizado antes de un equipo de moderación humana más pequeño. Cualquier producto que reciba texto libre de desconocidos, sin importar el volumen.
Dónde encaja en un flujo automatizado
Como el endpoint es asíncrono, encaja de forma natural como filtro previo a la publicación: envía el contenido, lo mantiene en estado pendiente, deja que el webhook devuelva los puntajes por categoría, y publica, retiene o descarta según los umbrales que usted controla por categoría. Las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran, así que un filtro de moderación nunca se convierte en un punto único de falla que descarte contenido silenciosamente en vez de revisarlo.
Qué puede hacer con ella
Filtrado previo a la publicación de comentarios
Mantenga cada comentario nuevo en estado pendiente hasta que lleguen los puntajes de moderación, publicando al instante si está limpio y enviando los marcados a una cola humana.
Filtrado de mensajes en marketplace
Revise los mensajes entre comprador y vendedor buscando acoso y amenazas antes de entregarlos, detectando disputas que se vuelven abusivas antes de que alguna parte tenga que reportarlas.
Prevención de ataques coordinados en comunidad
Monitoree un hilo de comentarios activo buscando un aumento repentino en puntajes de odio o acoso, y ralentice automáticamente las publicaciones antes de que un moderador lo note.
Limpieza de contenido histórico generado por usuarios
Reescanee años de publicaciones de foro archivadas contra las categorías de moderación actuales para encontrar y eliminar contenido que nunca se revisó correctamente.
Preguntas frecuentes
¿Cómo funciona la api de moderación de contenido?
Envía el texto a POST /text/moderate, recibe de inmediato un task_id, y obtiene puntajes por categoría de toxicidad, discurso de odio y acoso por webhook o mediante un enlace firmado válido por 24 horas cuando termina la tarea asíncrona.
¿Qué categorías de contenido dañino detecta?
Puntúa el texto en categorías como discurso de odio, acoso y toxicidad severa, devolviendo puntajes individuales por categoría para que pueda decidir umbrales de forma independiente en vez de recibir una sola marca genérica.
¿Hay prueba gratuita para probar reglas de moderación?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta la moderación de contenido?
$0.003 por solicitud más $0.0135 por ítem, así que revisar 5,000 comentarios cuesta la tarifa base más $65, cobrando solo por los ítems que se completan.
¿Puede moderar contenido en lote, como un archivo antiguo de comentarios?
Sí, el endpoint acepta lotes y corre de forma asíncrona, lo que lo hace apto para reescanear archivos grandes sin afectar el tráfico en vivo.
¿Solo bloquea palabras prohibidas?
No, lee significado en vez de comparar contra una lista de palabras, lo que evita tanto los falsos positivos de marcar texto inocente que contiene una subcadena prohibida como los falsos negativos de faltas de ortografía creativas que pasan desapercibidas.
¿Puedo definir mis propios umbrales de eliminación?
Sí, como cada categoría devuelve su propio puntaje, usted decide qué puntaje activa la eliminación automática, una cola de revisión, o ninguna acción, categoría por categoría.
¿Qué pasa con el contenido marcado y los datos después?
El texto enviado se elimina al terminar la ventana de retención y nunca se usa para entrenar modelos; los ítems fallidos se reintentan automáticamente hasta tres veces antes de devolver un error claro, y una tarea fallida nunca se cobra.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/text/moderate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/text/moderate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/moderate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/moderate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/moderate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.moderate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |