Inovacc Desenvolvedores

Guias

Erros

Quando uma API da Inovacc recusa ou não consegue concluir uma chamada, ela responde com um status HTTP e um envelope de erro em JSON. Este guia descreve o envelope, os tipos de erro, os códigos que todas as APIs compartilham e o que fazer para cada status: corrigir a requisição, esperar ou tentar novamente.

O envelope

Linguagem

⋮
    JSONExemplo

    JSON

    { "error": { "message": "Human-readable explanation", "type": "validation_error", "code": "invalid_body" } }
    • code é aquilo em que o seu programa deve se basear para ramificar. Os códigos fazem parte do contrato de cada API: dentro de um caminho de versão como /v1, novos códigos podem ser acrescentados, e um código existente mantém o seu significado.
    • type agrupa os códigos em famílias, úteis para registro em log e tratamento amplo.
    • message é uma frase fixa em inglês para pessoas. Ela nunca repete um valor da sua requisição (no máximo o nome de um campo recusado) e nunca descreve o que falhou dentro da Inovacc. Não a interprete programaticamente.

    Algumas respostas acrescentam um campo ao envelope: um arquivo recusado traz reason (por exemplo executable ou password_protected), e uma conversão de esquema que não se encaixa traz failing_documents, uma contagem. Ignore os campos que você não conhece.

    Duas respostas não usam o envelope. Na API de IA, um caminho que não existe responde 404 {"error":"not_found"}. Um WebSocket (uma transmissão de Eventos ou um ouvinte de Dados) recusado antes do upgrade responde com um erro HTTP comum; depois de aberto, ele termina com um código de fechamento.

    Tipos

    typeSignificaStatus típico
    validation_errorA requisição está malformada: um cabeçalho, um campo ou um valor viola as regras.400
    invalid_request_errorA requisição está bem formada, mas não pode ser atendida como foi enviada: grande demais, um tipo de arquivo não suportado, uma URL que não pode ser buscada.400, 413, 415, 422
    authentication_errorNenhuma credencial, ou uma que não é válida.401
    authorization_error, permission_error, forbiddenA credencial é válida, mas não pode fazer isto.403
    not_found_error, not_foundA coisa não existe, ou você não pode saber que ela existe.404, 410
    conflict_error, conflictA requisição entra em conflito com o estado atual: uma versão, um modo, um limite de uma coleção.409
    idempotency_errorUm id de operação está em uso ou foi usado para outra coisa.409
    rate_limit_error, rate_limitedChamadas demais, ou uma cota ou orçamento foi consumido.429
    api_error, service_error, service_unavailable, internal_errorAlgo do lado da Inovacc, ou uma fonte que ela chamou por você, falhou.500, 502, 503, 504

    As APIs de Dados, de IA e de Eventos usam as famílias acima; a string exata de type pode diferir entre APIs para a mesma família, então trate o code e use o status HTTP como alternativa.

    Códigos que toda API compartilha

    StatusCódigoSignificadoO que fazer
    401missing_credentials, invalid_credentialsNenhuma chave, ou uma chave que não é válida, expirou ou foi revogada.Corrija a credencial; não tente de novo sem alterá-la.
    403forbidden, route_forbidden, key_disabled, capability_not_enabledA credencial não pode fazer isto.Peça a permissão, a rota ou a capacidade.
    403origin_not_allowed, secret_key_in_browserUma chamada de navegador a partir de uma origem não listada, ou uma chave secreta em um navegador.Liste a origem; use uma chave publicável.
    400missing_operation_id, invalid_operation_idIA: um POST, PUT ou DELETE sem um X-Operation-Id válido.Envie de 8 a 128 letras, dígitos, _ ou -.
    400invalid_body, unsupported_field, invalid_fieldO corpo ou um parâmetro não é válido para este endpoint.Corrija a requisição.
    404*_not_foundNão existe, ou não é seu.Confira o id.
    409operation_in_progressO mesmo id de operação ainda está em execução.Aguarde e tente novamente com o mesmo id.
    409operation_id_reusedIA: um id de operação já usado para outro arquivo em uma coleção.Use um novo id de operação para uma nova operação.
    409version_conflictDados: o registro mudou desde que você o leu.Leia de novo e tente novamente.
    413request_too_large, payload_too_largeO corpo excede o limite de tamanho.Reduza-o ou envie em partes.
    429rate_limitedRequisições demais na janela.Aguarde Retry-After segundos, quando informado.
    429quota_exceeded, concurrency_limitedIA: uma cota de tokens, de custo ou de simultaneidade se esgotou.Diminua o ritmo; peça à Inovacc para aumentar a cota.
    429budget_exhaustedIA: um orçamento diário foi consumido.Aguarde até 00:00 UTC (Retry-After).
    502upstream_errorUma fonte chamada por você falhou.Tente novamente com espera crescente.
    503service_unavailableUma dependência não pôde ser alcançada; nada foi feito nem presumido.Tente novamente com espera crescente.
    504timeout_errorIA: o modelo não começou a responder a tempo.Tente novamente com espera crescente.

    Cada página de produto lista todos os códigos que ele pode devolver, com o que fazer.

    Política de novas tentativas

    StatusTentar de novo?Como
    400, 401, 403, 404, 410, 413, 415, 422NãoA mesma requisição falhará da mesma forma. Corrija-a primeiro.
    409 operation_in_progressSimApós uma curta espera, com o mesmo id de operação.
    409 version_conflictSim, após relerLeia o registro, aplique a sua alteração à nova versão, envie o If-Match dela.
    409, outros códigosNãoO estado precisa mudar primeiro (crie o banco de dados, aguarde os itens, esvazie a pasta).
    429 com Retry-AfterSimNão antes do número de segundos informado.
    429 sem Retry-AfterMais tardeUma cota se esgotou: espere minutos, não segundos, ou aumente-a.
    500, 502, 503, 504SimCom espera exponencial e jitter (por exemplo 1, 2, 4, 8 segundos), no máximo algumas vezes.
    Erro de rede, sem respostaSimComo para 503.

    Repita com segurança. Na API de IA, repita uma chamada que altera algo com o mesmo X-Operation-Id: se a primeira tentativa teve sucesso, você recebe a resposta armazenada em vez de uma segunda execução. Em Dados, repita uma criação com o seu próprio id de registro ou If-None-Match: *, e uma atualização com o mesmo If-Match. Em Eventos, repita uma publicação com a mesma idempotency_key: o event_id original volta com duplicate: true.

    Veja também

    • Autenticação: credenciais e idempotência.
    • Limites: os tamanhos e taxas por trás de 413 e 429.
    • Webhooks: como as entregas que falharam são repetidas.
    Atualizado em 2026-10-10.