Plataforma
Erros
Os erros são devolvidos em JSON no formato do endpoint chamado, com uma mensagem para as pessoas e, nos endpoints ao estilo da OpenAI, um código estável para os programas.
A estrutura
{ "error": { "message": "This API key can't use `gpt-6-astra`. It's limited to gpt-6-sol. Change that at https://zurelay.com/app/keys.", "type": "permission_error", "param": "model", "code": "model_not_allowed" }}Em /v1/messages, os mesmos erros são devolvidos no formato da Anthropic, que não tem código: use o estado HTTP e error.type: { "type": "error", "error": { "type": "...", "message": "..." } }. Todas as respostas de chat, imagem e vídeo, com ou sem erro, têm um cabeçalho x-request-id.
Códigos
Novas tentativas
- Repita os pedidos com
429e503, aguardando o número de segundos indicado no cabeçalhoretry-after(ou aumentando exponencialmente o intervalo entre tentativas), exceto se a resposta indicarx-should-retry: false. - Não repita pedidos com outros erros
4xxsem os alterar: voltarão a falhar da mesma forma. - Os pedidos que falham são gratuitos, pelo que repetir não custa nada até um ter sucesso. Um stream interrompido a meio é cobrado pelo conteúdo entregue, e o raro
503comx-should-retry: falseé cobrado pela entrada (ver Faturação). - Os SDKs oficiais da OpenAI e da Anthropic já repetem automaticamente os pedidos com os erros adequados.
Erros a meio do stream
Os erros que um modelo devolve sobre o próprio pedido (um parâmetro que não aceita, um prompt demasiado longo) chegam com a mensagem e o código do próprio modelo, como 400 ou 422.
Erros a meio do stream
Depois de um stream começar, uma falha já não pode ser comunicada por um código de estado HTTP. Em vez disso, recebe um evento final de erro (no formato do endpoint) e o stream termina. São cobradas a entrada e a saída que recebeu antes desse evento, mas nada depois. Isto é raro: a maioria dos problemas é detetada e os pedidos são repetidos antes do primeiro token.
O mesmo tipo de evento termina um stream quando o saldo ou o orçamento da chave se esgota a meio, com insufficient_quota, key_budget_exceeded ou key_daily_budget_exceeded. Um pedido sem streaming que esgote o saldo ou o orçamento a meio devolve o que foi escrito, truncado como uma resposta que atingiu max_tokens (finish_reason: "length", ou stop_reason: "max_tokens" em /v1/messages), com um cabeçalho x-zurelay-stopped que indica o código.
Tem dúvidas ou falta alguma coisa? Contacte a nossa equipa de apoio e responderemos por email, normalmente num minuto.