Pular para o conteúdo principal

Erros

Falhas da Platform API usam códigos de status HTTP padrão. Quase toda falha inclui uma string subcode estável sobre a qual os clientes devem decidir — os códigos de status sozinhos são ambíguos (403 cobre scope, produto, origin, IP e tipo de chave).

Envelope

A maioria dos erros retorna um wrapper detail no estilo FastAPI:

{ "detail": "<subcode>" }

Payloads 429 estruturados (map_load_quota_exceeded, b2b_overloaded, org_overloaded, tile_access_restricted) são objetos planos no nível superior — sem wrapper detail:

{ "error": "map_load_quota_exceeded", "meter": "map_loads", "limit": 50000, "used": 50000 }

429s com string-detail (map-load hard stops) mantêm o wrapper:

{ "detail": "map_load_hard_stop" }

Alguns endpoints sem streaming relatam falhas como HTTP 200 com uma chave error — principalmente POST /chat/control/route. Quem decide apenas pelo status trata isso como sucesso. Sempre leia o body.

Tabela

StatusSubcodeSignificadoO que fazer
401(no detail)Chave ausente / inválida / revogada / expiradaVerifique o valor da chave e se ela não foi revogada. Viewer não precisa de chave.
401publishable_requires_sessionUma chave publishable (kld_pk_…) foi enviada como bearer diretoUse-a pelo SDK, que a troca por uma sessão.
403insufficient_scopeChave válida, mas não possui o scope da rotaCrie / recrie uma chave com o scope correto (ai / maps / design).
403tier_capability_not_allowedA chave armazenada possuía a capacidade, mas o tier atual da organização não a permite mais (normalmente downgrade Pro→Free)Faça upgrade do plano ou use um produto permitido pelo tier atual.
403origin_requiredUma chave publishable foi usada sem Origin de navegador (ex.: server-side)Chaves publishable são apenas para navegador.
403session_origin_mismatchO Origin da solicitação não está na allowlist da chaveAtualize os allowed origins da chave (consulte Obter uma chave de API).
403product_not_allowedA chave não é permitida para este produtoCrie uma chave com o produto permitido (ou use viewer, que não precisa de chave).
403server_key_in_browserUma server key (kld_sk_…) foi usada em um navegadorServer keys são apenas para servidor; também são bloqueadas por CORS.
403ip_not_allowedUma server key foi usada de um IP fora da sua allowlistAtualize a IP allowlist da chave ou chame de um endereço permitido.
403publishable_key_requiredO SDK session exchange foi tentado com algo diferente de uma chave publishableUse uma chave kld_pk_… na etapa de session-exchange.
403sessions_disabledA emissão de sessões está desativada para este deploymentEntre em contato com o suporte — é um estado operacional, não uma configuração do cliente.
403sessions_not_configuredA infraestrutura de sessão não está configuradaEntre em contato com o suporte.
422(various)Body de solicitação malformadoCorrija o payload (consulte Endpoints). No mint, unknown_scope / unknown_product significam valor não reconhecido; publishable_live_requires_origins significa que uma chave publishable live foi criada sem allowed origins.
429(flat) map_load_quota_exceededA franquia mensal de map-loads da organização foi esgotadaFaça upgrade ou reduza os carregamentos de mapa-base.
429map_load_hard_stopOrganização paga está 5× acima da franquia de map-loadsO serviço para aqui; a faixa flexível acima da franquia continua funcionando até esse ponto.
429(flat) tile_access_restrictedSolicitação Tile rejeitada (normalmente por falta do origin na allowlist). Inclui Retry-After: 3600Adicione o origin da página à allowlist da chave; tente novamente após o intervalo do header.
429(flat) b2b_overloadedO descarte global de solicitações está ativoReduza o ritmo e tente novamente com jitter.
429(flat) org_overloadedDescarte por organizaçãoReduza o ritmo e tente novamente.
429limiter_unavailableO rate limiter está temporariamente inacessívelTrate como transitório; tente novamente.
429rate_limitedSolicitações demais neste momentoRespeite Retry-After.
503(no detail)Serviço de chaves temporariamente indisponívelTransitório — tente novamente em breve.

Gerenciamento de chaves

Falhas de POST/PATCH/DELETE /shared-api/api-keys/* (Cognito org-admin JWT, não uma platform key):

StatusSubcodeSignificado
403free_plan_publishable_onlyOrganizações Free só podem criar chaves publishable.
403plan_requiredA organização não possui uma linha de plano API reconhecida.
403tier_capability_not_allowedUm PATCH tentou ampliar uma chave além do permitido pelo tier atual da organização.
403vendor_scope_requires_acknowledgementO scope vendor exige uma flag explícita de confirmação por chave.
409key_limit_reachedA organização atingiu o limite de chaves por organização do seu plano.

Consulte Obter uma chave de API para o fluxo completo de mint e o caminho de atualização PATCH.

Erros de streaming

Em um stream SSE, uma falha terminal chega como um evento error em vez de status HTTP (a resposta já começou com 200):

event: error
data: { "type":"error", "message":"…", "code":"…", "partial_text":"…" }

Trate um evento error como o fim daquele stream. Um evento quota no meio do stream não é um erro — é o medidor informando quanto orçamento resta. Os clientes devem ignorar nomes de eventos desconhecidos — novos eventos podem ser adicionados ao contrato estável sem mudança de versão.

CORS "bloqueado" no navegador

Se o navegador informar um bloqueio CORS em uma solicitação real, o Origin da solicitação não está na allowlist da chave — não é uma falha de auth. Consulte CORS & allowed origins.