Conta
Erros
Veja todos os códigos de erro retornados pelo gateway do api14 no formato de erro da OpenAI, o que cada um significa e como corrigir ou tentar de novo.
Os erros usam o formato de erro da OpenAI, então os SDKs oficiais os transformam em suas exceções normais (APIError, RateLimitError, AuthenticationError e assim por diante). Tome decisões com base em code; message é uma explicação legível em inglês.
{
"error": {
"message": "This request may cost up to $0.0123 but your balance is $0.0040. Add funds at /pricing.",
"type": "insufficient_quota",
"code": "insufficient_balance"
}
}
Requisições com falha não são cobradas. Qualquer resposta com status 4xx ou 5xx não custa nada.
Códigos de erro do gateway
| Status | code | type | Significado |
|---|---|---|---|
| 400 | model_required | invalid_request_error | O campo model está ausente. |
| 400 | invalid_json | invalid_request_error | O corpo não é um objeto JSON. |
| 400 | invalid_body | invalid_request_error | Não foi possível ler o corpo multipart. |
| 400 | max_tokens_too_large | invalid_request_error | Uma requisição de teste do playground pediu tokens de saída demais. |
| 401 | invalid_api_key | authentication_error | A chave está ausente, malformada ou foi revogada. |
| 402 | insufficient_balance | insufficient_quota | Seu saldo em USD é $0 ou está abaixo do custo máximo estimado da solicitação (entrada, limite de saída, imagens ou duração do vídeo). A solicitação não é enviada. |
| 403 | model_not_allowed | permission_error | A lista de modelos permitidos da chave não inclui este modelo. |
| 403 | plan_required | permission_error | Seu plano não inclui esta categoria de modelo. |
| 404 | model_not_found | not_found_error | O id do modelo é desconhecido, foi desativado ou removido. |
| 404 | not_found | not_found_error | Endpoint desconhecido, ou um job de vídeo ou geração que não é seu. |
| 413 | payload_too_large | invalid_request_error | O corpo da requisição excede o limite de tamanho (25 MB por padrão). |
| 429 | rate_limited | rate_limit_error | Requisições por minuto excedidas. Vem com Retry-After: 60. |
| 429 | daily_limit_reached | rate_limit_error | A chave atingiu seu limite diário de gasto em USD. |
| 409 | idempotency_conflict | api_error | Uma solicitação com esta Idempotency-Key já foi enviada. Use uma nova chave para outra solicitação. Limites de taxa. |
| 403 | site_not_allowed | permission_error | Somente widgets: o site da página não está entre os seus sites de widget permitidos. Widgets. |
| 429 | widget_daily_limit | rate_limit_error | Somente widgets: o widget, ou todos os widgets juntos, atingiram o limite de gasto diário em USD. |
| 429 | visitor_daily_limit | rate_limit_error | Somente widgets: este visitante atingiu o limite diário de solicitações definido nos controles de widgets. |
| 502 | upstream_unavailable | api_error | Não foi possível acessar o provedor upstream. |
| 4xx/502 | content_unavailable | varia | O conteúdo de um vídeo ainda não pôde ser obtido (o status espelha o do upstream, 502 se não houver). |
| 503 | maintenance | service_unavailable | Modo de manutenção, os endpoints de geração estão pausados, os endpoints GET continuam funcionando. |
| 503 | not_configured | service_unavailable | O gateway ainda não está configurado. |
Erros do upstream
Erros retornados pelo provedor upstream, por exemplo, um parâmetro inválido para um modelo específico, um estouro do limite de contexto, uma recusa por política de conteúdo ou um 429 do próprio provedor, são repassados com o código de status original e o mesmo formato { error: {... } }.
O que fazer
| Status | Tentar de novo? | Ação |
|---|---|---|
| 400 | Não | Corrija o corpo da requisição. |
| 401 | Não | Verifique a chave e o cabeçalho Authorization: Bearer. Veja Autenticação. |
| 402 | Não | Adicione fundos ou ative a recarga automática. |
| 403 | Não | Use um modelo permitido, edite a lista de permitidos da chave ou faça upgrade do seu plano. |
| 404 | Não | Verifique o id do modelo na página de modelos. |
| 413 | Não | Envie um corpo menor, ou passe arquivos por URL em vez de base64. |
| 429 | Mais tarde | rate_limited: aguarde o Retry-After. daily_limit_reached: aguarde o próximo dia UTC ou aumente o limite da chave. Veja Limites de taxa. |
| 502 | Sim | Tente de novo com backoff, ou adicione fallbacks de modelo. |
| 503 | Sim | Tente de novo mais tarde. |
Tratando erros no código
import OpenAI from 'openai'
const client = new OpenAI({ baseURL: 'https://api14.com/api/v1', apiKey: process.env.API14_API_KEY })
try {
await client.chat.completions.create({ model: 'openai/gpt-5-mini', messages: [{ role: 'user', content: 'Hi' }] })
} catch (err) {
if (err instanceof OpenAI.APIError) {
console.error(err.status, err.code, err.message)
if (err.code === 'insufficient_balance') {
// prompt the user to add funds
}
} else {
throw err
}
}
from openai import OpenAI, APIStatusError
client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...")
try:
client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
except APIStatusError as e:
print(e.status_code, e.code, e.message)
Erros que ocorrem depois que um stream começou chegam dentro do próprio stream. Veja Streaming.