PolarPOLAR

Erros

Referência de códigos de erro HTTP da API Polar. Formato do corpo de erro, troubleshooting e soluções para cada tipo de erro.

Visão Geral

A API Polar utiliza códigos de status HTTP padrão para indicar o sucesso ou falha de uma requisição. Todas as respostas de erro seguem um formato consistente em JSON.

Formato do Corpo de Erro

Todas as respostas de erro incluem um corpo JSON com a seguinte estrutura:

{
  "error": {
    "message": "Descrição legível do erro",
    "type": "tipo_do_erro",
    "code": "codigo_especifico"
  }
}
CampoTipoDescrição
error.messagestringMensagem descritiva do erro
error.typestringCategoria do erro
error.codestringCódigo específico para tratamento programático

Códigos de Status HTTP

400 Bad Request

Requisição malformada ou parâmetros inválidos.

{
  "error": {
    "message": "O campo 'model' é obrigatório",
    "type": "invalid_request_error",
    "code": "missing_required_field"
  }
}

Causas comuns:

  • JSON malformado no corpo da requisição
  • Campo obrigatório ausente
  • Valor de parâmetro com tipo incorreto
  • Modelo não existente

Solução: Verifique o corpo da requisição e compare com a documentação do endpoint.

401 Unauthorized

Autenticação falhou.

{
  "error": {
    "message": "API key inválida ou ausente",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

Causas comuns:

  • API key ausente no header Authorization
  • API key inválida ou revogada
  • Formato incorreto (deve ser Bearer pk-...)
  • JWT token expirado

Solução: Verifique sua API key e o formato do header Authorization: Bearer pk-sua-chave.

403 Forbidden

Permissão insuficiente para a operação.

{
  "error": {
    "message": "Escopo insuficiente para esta operação. Necessário: write",
    "type": "permission_error",
    "code": "insufficient_scope"
  }
}

Causas comuns:

  • API key sem o escopo necessário
  • IP não está no allowlist
  • Recurso pertence a outra conta

Solução: Use uma API key com os escopos corretos ou adicione o IP ao allowlist.

404 Not Found

Recurso não encontrado.

{
  "error": {
    "message": "Modelo 'urso-mega' não encontrado",
    "type": "not_found_error",
    "code": "model_not_found"
  }
}

Causas comuns:

  • URL do endpoint incorreta
  • ID de recurso inexistente
  • Modelo não disponível

Solução: Verifique a URL e os IDs utilizados. Consulte a lista de modelos disponíveis.

422 Unprocessable Entity

Requisição válida sintaticamente, mas semanticamente incorreta.

{
  "error": {
    "message": "O valor de 'temperature' deve estar entre 0.0 e 2.0",
    "type": "validation_error",
    "code": "invalid_parameter_value"
  }
}

Causas comuns:

  • Valores de parâmetros fora da faixa permitida
  • Combinação inválida de parâmetros
  • Conteúdo excede limite de tokens

Solução: Ajuste os valores dos parâmetros conforme a documentação.

429 Too Many Requests

Rate limit excedido.

{
  "error": {
    "message": "Rate limit excedido. Máximo de 200 requisições por minuto.",
    "type": "rate_limit_error",
    "code": "rate_limited"
  }
}

Causas comuns:

  • Muitas requisições em curto período
  • Limite de tokens por minuto atingido

Solução: Implemente retry com backoff exponencial. Consulte a página de Rate Limits.

500 Internal Server Error

Erro interno do servidor.

{
  "error": {
    "message": "Erro interno do servidor. Tente novamente.",
    "type": "server_error",
    "code": "internal_error"
  }
}

Causas comuns:

  • Erro temporário no servidor
  • Falha em serviço interno

Solução: Tente novamente após alguns segundos. Se persistir, contate o suporte.

503 Service Unavailable

Serviço temporariamente indisponível.

{
  "error": {
    "message": "Serviço temporariamente indisponível. Manutenção programada.",
    "type": "service_error",
    "code": "service_unavailable"
  }
}

Causas comuns:

  • Manutenção programada
  • Sobrecarga temporária
  • Modelo sendo atualizado

Solução: Aguarde e tente novamente. Verifique o status em status.polar-ai.com.

Tratamento de Erros

Python

import requests

response = requests.post(
    "https://api.polarai.com.br/v1/chat/completions",
    headers={"Authorization": "Bearer pk-sua-chave-aqui"},
    json={"model": "urso-mabe", "messages": [{"role": "user", "content": "Olá"}]}
)

if response.status_code != 200:
    error = response.json()["error"]
    print(f"Erro {response.status_code}: {error['message']}")
    print(f"Tipo: {error['type']}, Código: {error['code']}")
else:
    data = response.json()
    print(data["choices"][0]["message"]["content"])

TypeScript

try {
  const response = await fetch("https://api.polarai.com.br/v1/chat/completions", {
    method: "POST",
    headers: {
      "Authorization": "Bearer pk-sua-chave-aqui",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "urso-mabe",
      messages: [{ role: "user", content: "Olá" }]
    })
  });

  if (!response.ok) {
    const { error } = await response.json();
    console.error(`Error ${response.status}: ${error.message}`);
    console.error(`Type: ${error.type}, Code: ${error.code}`);
    return;
  }

  const data = await response.json();
  console.log(data.choices[0].message.content);
} catch (e) {
  console.error("Network error:", e);
}

Tabela Resumo

StatusTipoRetentávelAção
400invalid_request_errorNãoCorrija a requisição
401authentication_errorNãoVerifique a API key
403permission_errorNãoVerifique escopos/IP
404not_found_errorNãoVerifique URL/IDs
422validation_errorNãoAjuste parâmetros
429rate_limit_errorSimRetry com backoff
500server_errorSimRetry após espera
503service_errorSimRetry após espera

On this page