Tutorial
HiAPI invalid_request: como corrigir o uso incorreto da interface do modelo?
Verifique o ID do modelo, os endpoints suportados e o corpo da requisição, diferencie erros de endpoint, parâmetros e chave, com código de diagnóstico somente leitura.
TL;DR
invalid_request é um erro de classe de requisição. A escolha errada do endpoint é um possível motivo, mas também é preciso verificar o corpo da requisição e o ID do modelo junto com a mensagem de erro. Primeiro confirme os endpoints suportados pelo modelo e depois organize os campos conforme esse endpoint.
Antes de executar o exemplo em Python, rode python -m pip install requests no mesmo ambiente Python.
Como escolher entre os três endpoints
A HiAPI tem três endpoints de geração comumente usados, listados abaixo; para saber quais endpoints um modelo individual suporta, consulte a página do modelo e o catálogo público de modelos.
| Endpoint | Destaques do corpo da requisição | Uso |
|---|---|---|
/v1/tasks |
model + input |
Tarefas de imagem, vídeo e áudio |
/v1/chat/completions |
model + messages |
Modelos que suportam o protocolo de chat |
/v1/responses |
model + input |
Modelos que suportam Responses |
Os valores task, openai e openai-response em supported_endpoint_types correspondem respectivamente aos três endpoints acima. O catálogo também pode conter outros tipos de protocolo; ao encontrar um tipo não listado, abra a documentação de integração desse modelo.
Verificação somente leitura dos endpoints suportados pelo modelo
Defina HIAPI_MODEL com o ID completo do modelo exibido na página do modelo e execute o script abaixo. Ele apenas lê o catálogo público e não envia tarefas de geração.
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", []))
Quatro passos para corrigir a requisição
- Verifique o domínio e o caminho da requisição real e confirme que a Base URL não tem
/v1concatenado duas vezes. - Compare com o ID completo e os endpoints suportados na página do modelo; o nome de exibição não substitui diretamente o model ID da API.
- Ajuste o corpo da requisição de acordo: os
messagesdo chat não podem ser copiados como estão para a interface de tarefas; os parâmetros da tarefa devem ficar dentro deinput. - Releia o status HTTP retornado e os campos de erro; se ainda falhar, guarde o request ID, o model ID, o caminho do endpoint e o corpo da requisição com dados sensíveis removidos.
Diferenciar erros de endpoint, parâmetros e chave
| Sintoma | Próximo passo |
|---|---|
| 400, indicando requisição inválida | Verifique o endpoint, o JSON, os campos obrigatórios e os tipos de campo |
| Indicação explícita de que o protocolo atual não é suportado | Use um endpoint que o modelo declara suportar |
| 401, chave inválida ou ausente | Verifique o cabeçalho Bearer e as variáveis de ambiente em tempo de execução |
A interface de tarefas retorna MODEL_UNAVAILABLE |
Verifique o model ID, o status de disponibilidade e a permissão de acesso da conta |
A resposta de recusa da interface de tarefas pode incluir um error_code no nível superior; outros endpoints podem usar error.code. Não use apenas um campo para julgar todos os erros.
Perguntas frequentes
invalid_request é sempre endpoint escolhido errado?
Não necessariamente. Campos da requisição, JSON ou falta de itens obrigatórios também podem fazer a requisição ser rejeitada. Leia primeiro a message e depois verifique o endpoint.
Basta mudar a URL para corrigir?
Ainda é preciso ajustar o corpo da requisição conforme o endpoint correspondente. A estrutura de messages e de input na interface de tarefas é diferente.
O que fazer se o modelo não estiver no catálogo público?
Confira o ID completo, a página do modelo e o escopo visível da conta; não substitua automaticamente por um modelo de nome parecido.
Este código de verificação gera conteúdo?
Não. O código apenas lê o catálogo público; o fluxo de tarefas só começa quando uma requisição de geração é realmente enviada.
Continuar a investigação
Artigos relacionados
Ver todos os artigos →-
Tutorial
Casos do Recraft Creative Upscale: upscale de paisagens e aquarela
Veja as mudanças de textura na cabana, no lago e na cidade em aquarela, diferencie o resultado completo da prévia e verifique os detalhes redesenhados.
-
Tutorial
Chave de API da OpenAI inválida: diagnóstico de 401, variáveis de ambiente e configuração de projeto
Diferencie 401, 403 e 429 da OpenAI, verifique variáveis de ambiente e configurações de organização e projeto, e valide as credenciais com uma requisição somente leitura.
-
Tutorial
Coleção de prompts do Kling 4.0: 6 cenas para copiar e gerar vídeos diretamente
Produto de e-commerce, comida, paisagem de viagem, cena cotidiana, plano vazio com som e imagem para vídeo: cada cena traz um vídeo real, o prompt completo e um link de preenchimento com um clique.