Tutorial
HiAPI invalid_request: ¿cómo solucionar el uso incorrecto de la interfaz del modelo?
Verifica el ID del modelo, los endpoints admitidos y el cuerpo de la solicitud, distingue entre errores de endpoint, parámetros y clave, e incluye código de diagnóstico de solo lectura.
TL;DR
invalid_request es un error de tipo solicitud. Elegir el endpoint incorrecto es una posible causa, pero también hay que revisar el cuerpo de la solicitud y el ID del modelo junto con el mensaje de error. Primero verifica los endpoints que admite el modelo y luego organiza los campos según ese endpoint.
Antes de ejecutar el ejemplo de Python, ejecuta python -m pip install requests en el mismo entorno de Python.
Cómo elegir entre los tres endpoints
Los tres endpoints de generación más usados de HiAPI son los siguientes; para saber qué endpoints admite un modelo concreto, consulta su página de modelo y el catálogo público de modelos.
| Endpoint | Puntos clave del cuerpo de la solicitud | Uso |
|---|---|---|
/v1/tasks |
model + input |
Tareas de imagen, vídeo y audio |
/v1/chat/completions |
model + messages |
Modelos que admiten el protocolo de chat |
/v1/responses |
model + input |
Modelos que admiten Responses |
Los valores task, openai y openai-response de supported_endpoint_types corresponden respectivamente a los tres endpoints anteriores. El catálogo también puede incluir otros tipos de protocolo; si encuentras un tipo no listado, abre la documentación de integración de ese modelo.
Comprobación de solo lectura de los endpoints admitidos por el modelo
Establece HIAPI_MODEL con el ID completo del modelo que aparece en su página y ejecuta el siguiente script. Solo lee el catálogo público y no envía tareas de generación.
import os
import requests
model_id = os.environ["HIAPI_MODEL"]
response = requests.get("https://api.hiapi.ai/api/pricing", timeout=30)
response.raise_for_status()
models = response.json()["data"]
model = next((m for m in models if m.get("model_name") == model_id), None)
if model is None:
raise SystemExit("Model not present in the public catalog; check its exact model ID")
print("model:", model["model_name"])
print("supported_endpoint_types:", model.get("supported_endpoint_types", []))
Cuatro pasos para corregir la solicitud
- Revisa el dominio y la ruta de la solicitud real y confirma que la Base URL no tenga
/v1concatenado repetidamente. - Compara el ID completo y los endpoints admitidos de la página del modelo; el nombre visible no puede sustituir directamente al ID de modelo de la API.
- Ajusta el cuerpo de la solicitud en consecuencia: los
messagesdel chat no se pueden copiar tal cual en la interfaz de tareas; los parámetros de la tarea deben ir dentro deinput. - Vuelve a leer el estado HTTP y los campos de error devueltos; si sigue fallando, conserva el ID de solicitud, el ID de modelo, la ruta del endpoint y el cuerpo de la solicitud sin datos confidenciales.
Distinguir entre errores de endpoint, parámetros y clave
| Síntoma | Siguiente paso |
|---|---|
| 400, indica que la solicitud no es válida | Revisa el endpoint, el JSON, los campos obligatorios y los tipos de campo |
| Indica claramente que no se admite el protocolo actual | Usa el endpoint que el modelo declara admitir |
| 401, clave no válida o ausente | Revisa la cabecera Bearer y las variables de entorno en tiempo de ejecución |
La interfaz de tareas devuelve MODEL_UNAVAILABLE |
Revisa el ID del modelo, su estado de disponibilidad y los permisos de acceso de la cuenta |
La respuesta de rechazo de la interfaz de tareas puede incluir un error_code de nivel superior; otros endpoints pueden usar error.code. No uses un único campo para determinar todos los errores.
Preguntas frecuentes
¿invalid_request siempre significa que se eligió mal el endpoint?
No necesariamente. Campos de la solicitud, el JSON o la falta de campos obligatorios también pueden provocar que se rechace la solicitud. Primero lee el mensaje y luego revisa el endpoint.
¿Basta con cambiar la URL para solucionarlo?
También hay que ajustar el cuerpo de la solicitud según el endpoint correspondiente. La estructura de messages y la de input de la interfaz de tareas son diferentes.
¿Qué hago si el modelo no está en el catálogo público?
Verifica el ID completo, la página del modelo y el alcance de visibilidad de la cuenta; no lo sustituyas automáticamente por un modelo de nombre similar.
¿Este código de comprobación genera contenido?
No. El código solo lee el catálogo público; el flujo de tareas se inicia únicamente al enviar realmente una solicitud de generación.
Seguir investigando
Artículos relacionados
Ver todos los artículos →-
Tutorial
Casos de Recraft Creative Upscale: escalado de paisajes y acuarela
Observa los cambios de textura en la cabaña, el lago y el pueblo en acuarela, distingue entre resultado completo y vista previa, y revisa los detalles redibujados.
-
Tutorial
Clave de API de OpenAI no válida: 401, variables de entorno y solución de problemas de configuración del proyecto
Distingue entre los errores 401, 403 y 429 de OpenAI, revisa las variables de entorno y la configuración de la organización y del proyecto, y valida las credenciales con una solicitud de solo lectura.
-
Tutorial
Guía completa de prompts de Kling 4.0: 6 escenas para copiar y generar vídeos directamente
Producto de e-commerce, comida, paisajes de viaje, escenas cotidianas, planos vacíos con sonido y vídeo a partir de imagen: cada escena incluye un vídeo real, el prompt completo y un enlace con autorrelleno en un clic.