HiAPI
Blog

Tutorial

Rechazo por política de contenido de HiAPI (CONTENT_POLICY_VIOLATION): causas y solución

Entiende este código de error, dónde verlo y cómo modificar el contenido para que pase la revisión

Oct 22, 2026
Rechazo por política de contenido de HiAPI (CONTENT_POLICY_VIOLATION): causas y solución

Al enviar una tarea de generación a través de la interfaz unificada de tareas asíncronas de HiAPI, si el prompt o el material de entrada no supera la revisión de seguridad, recibirás el código de error de negocio CONTENT_POLICY_VIOLATION. La documentación oficial lo describe como «el contenido no superó la revisión de seguridad» y sugiere «ajustar el prompt o el contenido de entrada y reintentar». No es un problema de autenticación, ni de saldo, ni de parámetros: es el contenido en sí el que fue bloqueado. Este artículo explica cómo se ve, dónde puedes verlo y cómo corregirlo.

1. Síntomas del problema

El rechazo por política de contenido puede aparecer de dos formas, según si la intercepción ocurre en la fase de envío o en la fase de ejecución de la tarea. CONTENT_POLICY_VIOLATION es un código de error de negocio de la interfaz asíncrona unificada y comparte la misma enumeración que el error_code síncrono al crear la tarea y el data.error.code del estado final de la tarea (no está marcado como «solo en la creación», por lo que puede aparecer en ambos lugares).

Forma A: rechazo síncrono al crear. Al llamar a POST /v1/tasks, el contenido no supera la revisión y se devuelve un sobre de fallo con error_code igual a CONTENT_POLICY_VIOLATION. La forma del sobre es la siguiente (según la respuesta de fallo de la documentación oficial; code es el estado HTTP y error_code es el código de negocio):

{
  "code": 400,
  "message": "...",
  "data": null,
  "error_code": "CONTENT_POLICY_VIOLATION"
}

En este caso no obtienes taskId: la tarea nunca llegó a crearse.

Forma B: estado final fail tras ejecutarse la tarea. Ya obtuviste el taskId y la tarea comenzó a ejecutarse, pero después se determina que no cumple las normas. Al consultar con GET /v1/tasks/{taskId}, el HTTP sigue siendo 200 (el message del sobre puede ser incluso success, lo que solo significa que «esta consulta fue exitosa», no que tu tarea lo fuera); el fallo real está dentro de data:

{
  "code": 200,
  "data": {
    "taskId": "tk-hiapi-...",
    "status": "fail",
    "error": { "code": "CONTENT_POLICY_VIOLATION", "message": "..." }
  },
  "message": "success"
}

Regla de diagnóstico en una frase: no te fijes solo en el código de estado HTTP. Lee en tres capas: estado HTTP (si la solicitud fue aceptada) → código de error de negocio (error_code / data.error.code, por qué fue rechazada) → estado de la tarea (hasta dónde llegó data.status). Siempre que el campo code (el error_code del sobre síncrono o el data.error.code del estado final) sea CONTENT_POLICY_VIOLATION, se trata de una intercepción por revisión de contenido y no tiene nada que ver con tiempos de espera, cortes de conexión o parámetros incorrectos. El texto de message puede variar ligeramente según el escenario; la señal estable para decidir es este código; no uses expresiones regulares sobre el texto de message.

Cuando se activa este tipo de intercepción en Playground / «probar en línea» de la página del modelo, la página muestra directamente un aviso en línea de «no superó la revisión de seguridad» en lugar de entregarte el código para que lo interpretes tú: esa es la diferencia de presentación entre la ruta web de prueba (síncrona) y la ruta de API que usas desde tu código.

2. Causas habituales (de mayor a menor probabilidad)

  1. El prompt contiene contenido no permitido. Es lo más común. Contenido NSFW / para adultos, violencia explícita o gore, etc., es interceptado por la revisión de seguridad. Ten en cuenta que muchos modelos ya declaran explícitamente que no admiten contenido NSFW, y algunos modelos (como GPT Image 2) además siguen la política de contenido de su proveedor (por ejemplo, la política de contenido de OpenAI).
  2. La imagen de entrada / material de referencia no supera la revisión. En tareas como imagen a imagen (i2i) o generación de vídeo a partir de imágenes de referencia, lo que se revisa no es solo el prompt: las imágenes y materiales de referencia que subes o referencias también deben pasar la revisión. Si el prompt es limpio pero la imagen de entrada no cumple, igualmente obtendrás CONTENT_POLICY_VIOLATION.
  3. Al cambiar de modelo te topas con una política más estricta. La severidad de las políticas de contenido varía entre modelos. Es normal que el mismo prompt pase en el modelo A y sea rechazado en el modelo B, especialmente en áreas sensibles como retratos realistas, retratos de celebridades o material de marca / con derechos de autor.
  4. Confundir el rechazo con otro error. Una intercepción real de contenido se interpreta como «el servicio falla» y se reintenta tal cual una y otra vez; el mismo contenido no pasará por muchas veces que lo reintentes, solo pierdes el tiempo.

3. Pasos de solución

  1. Primero confirma el código de error. Lee el código exacto desde el error_code de la respuesta síncrona o desde el data.error.code del estado final de la tarea. Confirma que es CONTENT_POLICY_VIOLATION y no TASK_FAILED (fallo genérico, normalmente por problemas transitorios o porque la URL de la imagen de entrada no es accesible) o INVALID_REQUEST (cuerpo de la solicitud no válido). Con códigos distintos, la solución es completamente distinta.
  2. Limpia el prompt punto por punto. Elimina las expresiones NSFW / para adultos, violencia explícita, etc., y sustitúyelas por una redacción conforme antes de enviar. Los cambios deben ser específicos, no borrar palabras al azar.
  3. Revisa todos los materiales de entrada. En imagen a imagen / generación a partir de referencias, sustituye las imágenes de entrada o de referencia que puedan activar la revisión: deben pasar la revisión igual que el prompt.
  4. Comprueba la política del modelo de destino. Consulta en la página del modelo las restricciones indicadas (por ejemplo, la página del modelo GPT Image 2 indica explícitamente «no admite contenido NSFW, sigue la política de contenido de OpenAI»); si necesitas cambiar de modelo, puedes comparar las capacidades y políticas de cada modelo en el mercado de modelos.
  5. Reintenta después de corregir. La recomendación de la documentación para este código es «ajustar el prompt o el contenido de entrada y reintentar». Nota: las tareas fallidas no generan cobro: la cuota reservada al crear la tarea se devuelve íntegramente cuando la tarea alcanza el estado final de fallo, por lo que una tarea interceptada por la revisión no cuesta nada en sí misma; pero reenviar tal cual el mismo contenido infractor no pasará: primero corrige y luego envía.

4. Ejemplo mínimo de verificación

Para descartar primero «¿es un problema de mi key / de la integración?», lanza un POST /v1/tasks con un prompt claramente conforme y comprueba si obtienes correctamente un taskId (model con el id simple gpt-image-2):

curl -s -X POST "https://api.hiapi.ai/v1/tasks" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "input": { "prompt": "a cozy coffee shop storefront at sunrise, warm light" }
  }'
  • Devuelve {"code":200,"data":{"taskId":"tk-hiapi-..."}} → tu key y la integración funcionan; entonces el problema de la solicitud rechazada anterior está en el contenido: vuelve a la sección 3 para limpiar el prompt / la imagen de entrada.
  • Devuelve HTTP 401 + {"error":{"code":"permission_denied",...}} → es un problema de autenticación (key incorrecta / falta Authorization: Bearer), no es política de contenido.
  • Incluso con un prompt conforme devuelve error_code: "CONTENT_POLICY_VIOLATION" → es poco frecuente; revisa de nuevo si hay en ese prompt palabras sensibles que pasaste por alto o prueba con una descripción más neutra.

5. Lecturas adicionales

6. FAQ

P: ¿Cuál es la diferencia entre CONTENT_POLICY_VIOLATION y TASK_FAILED? R: El primero indica que el contenido no superó la revisión de seguridad; la solución es modificar el prompt / material de entrada. El segundo es un fallo genérico, cuya causa más habitual es que la URL de la imagen / vídeo de entrada no es accesible o una fluctuación transitoria; la solución es corregir la URL / reintentar. Son códigos de error de negocio distintos; no los confundas. Basta leer error.code para distinguirlos.

P: Si una tarea es rechazada por política de contenido, ¿me cobran? R: No. Según la documentación, cuando la tarea alcanza el estado final de fallo, la cuota reservada al crearla se devuelve íntegramente. Una tarea interceptada por la revisión no genera ningún coste en sí misma.

P: Con el mismo prompt, ¿por qué en «probar en línea» de la web veo un aviso claro de «no superó la revisión» y con la API solo obtengo un código? R: La prueba web es una ruta síncrona y muestra el resultado de la revisión directamente como aviso en línea; la ruta de API coloca el resultado en el error_code / data.error.code del cuerpo de la respuesta, y es tu código el que debe leerlo y ramificar. La información es la misma; solo cambia la forma de presentarla.

P: Solo cambié el prompt y no toqué la imagen de entrada, ¿por qué sigue siendo rechazada? R: La revisión de seguridad cubre los materiales de entrada, no solo el prompt. En imagen a imagen / generación a partir de referencias, sustituye también primero las imágenes de entrada o de referencia que puedan activar la revisión.

P: ¿HiAPI tiene una página pública de «política de contenido» que pueda consultar? R: No hay una página independiente de política de contenido. Las restricciones de contenido de cada modelo figuran en la página del modelo correspondiente (por ejemplo, «no admite contenido NSFW»); las condiciones a nivel de plataforma están en los términos de servicio y la política de privacidad.

P: ¿Reintentar una y otra vez puede «colarlo»? R: No. El mismo contenido infractor no pasará por muchas veces que lo reintentes; solo consume consultas de sondeo en vano. Primero modifica el contenido según la sección 3 y luego envíalo.

Artículos relacionados

Ver todos los artículos →

Empieza a crear con artefactos de IA persistentes

Consigue tu API key y llama a modelos de imagen, vídeo y audio a través de una única API basada en tasks.

Leer la documentación de la API