Docs
Erros

Erros

Códigos de erro e como tratá-los na sua aplicação.

O Ignus Code retorna erros no formato padrão da OpenAI, facilitando o tratamento em código já existente.

Formato do erro

{
  "error": {
    "message": "Invalid API key provided.",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}

Códigos HTTP

CódigoTipoCausa
400invalid_request_errorParâmetros inválidos ou ausentes
401authentication_errorAPI key ausente ou inválida
402insufficient_fundsSaldo insuficiente na carteira
403permission_errorSem permissão para o modelo solicitado
404not_found_errorModelo ou recurso não encontrado
429rate_limit_errorLimite de requisições excedido
500api_errorErro interno (nosso ou do provedor)
503service_unavailableProvedor temporariamente indisponível

Erros 429 e 503 do provedor são automaticamente retriados no próximo provedor disponível. Você só recebe o erro se todos os provedores da sua lista de fallback falharem.

Tratamento de erros

Python

error_handling.py
from openai import OpenAI, APIError, AuthenticationError, RateLimitError
 
client = OpenAI(
    base_url="https://proxy.ignustec.com.br/v1",
    api_key="sk_ic_xxxxxxxxxxxxxxxxxxxx",
)
 
try:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Olá"}],
    )
    print(response.choices[0].message.content)
 
except AuthenticationError:
    print("API key inválida. Verifique suas credenciais.")
 
except RateLimitError:
    print("Rate limit atingido. Aguarde e tente novamente.")
 
except APIError as e:
    print(f"Erro da API: {e.status_code}{e.message}")

TypeScript

error_handling.ts
import OpenAI, { APIError } from "openai";
 
const client = new OpenAI({
  baseURL: "https://proxy.ignustec.com.br/v1",
  apiKey: process.env.IGNUS_API_KEY,
});
 
try {
  const response = await client.chat.completions.create({
    model: "gpt-4o",
    messages: [{ role: "user", content: "Olá" }],
  });
  console.log(response.choices[0].message.content);
 
} catch (error) {
  if (error instanceof APIError) {
    console.error(`Erro ${error.status}: ${error.message}`);
 
    if (error.status === 402) {
      console.error("Saldo insuficiente. Adicione créditos no Dashboard.");
    }
  }
}

Retry com backoff exponencial

Para erros 429 e 5xx, implemente retry com backoff:

retry.py
import time
from openai import OpenAI, RateLimitError
 
client = OpenAI(
    base_url="https://proxy.ignustec.com.br/v1",
    api_key="sk_ic_xxxxxxxxxxxxxxxxxxxx",
)
 
def request_with_retry(messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-4o",
                messages=messages,
            )
        except RateLimitError:
            if attempt == max_retries - 1:
                raise
            wait = 2 ** attempt  # 1s, 2s, 4s
            time.sleep(wait)