Skip to main content
Toda falha da API, de rede ou local lança uma única classe: SquareCloudAPIError. Os exemplos usam o cliente api de Criando o cliente. appId é o id de uma das suas aplicações: api.account.me() lista todas.

SquareCloudAPIError

SquareCloudAPIError estende Error (ele não é um TypeError). Duas falhas não são encapsuladas:
  • Uma chamada abortada rejeita com o reason do signal. Um loop de realtime() abortado simplesmente termina.
  • Um caminho de upload que não pode ser aberto lança o erro do sistema de arquivos.

Códigos do SDK

O tipo ErrorCode

ErrorCode é apenas um tipo (sem objeto em runtime). Ele lista todos os códigos públicos da API, os depreciados e os do SDK, além de string & {}, então seu editor autocompleta os códigos conhecidos e novos códigos continuam passando na checagem de tipos. RATE_LIMIT e RATE_LIMIT_EXCEEDED continuam no tipo, marcados como depreciados: a API agora responde RATE_LIMITED para os dois. A lista de códigos da API cresce. Trate um código desconhecido pelo seu status HTTP:

Códigos de erro da API

Todos os outros códigos vêm da API. A referência de erros da API lista cada um com o status HTTP, o significado e a solução, e cada página do SDK lista os códigos que os seus métodos retornam com mais frequência. Qualquer chamada também pode responder 401 ACCESS_DENIED (uma chave inválida), 403 MISSING_SCOPE ou RESOURCE_NOT_ALLOWED (os limites da chave), 429 (veja Rate limits) ou 503 DATABASE_UNAVAILABLE. Os erros de ai.chat() usam, em vez disso, códigos da OpenAI em minúsculas (access_denied, rate_limit_exceeded, server_overloaded, …). Veja IA.

Novas tentativas

O SDK só tenta novamente o que é seguro repetir, até maxRetries vezes (padrão 2, ou seja, até 3 tentativas): Ele nunca tenta novamente:
  • TIMEOUT;
  • qualquer 429: RATE_LIMITED pode ser um bloqueio de cerca de 30 minutos, e KEEP_CALM também não é repetido;
  • outros 5xx;
  • erros de IA.
O 503 DATABASE_UNAVAILABLE pode chegar depois que uma mutação já foi aplicada, então o SDK não o repete fora de GET. Repita suas próprias mutações idempotentes se precisar. A espera antes da nova tentativa n (começando em 0) é min(8 s, 500 ms · 2^n) · U(0.5, 1): backoff exponencial com jitter de 50% a 100%. Defina maxRetries: 0 para desativar as novas tentativas.

Timeouts

timeoutMs (30 s) se aplica por tentativa e cobre a resposta inteira. Veja Timeouts para as chamadas com mínimo de 120 s e as chamadas sem timeout. Um timeout lança TIMEOUT com status 0 e nunca é repetido.

Rate limits

Toda conta tem um limite de requisições a cada 60 segundos, definido pelo seu plano (valores), e algumas rotas têm limites próprios:
  • 429 RATE_LIMITED: a conta ou a chave de API ultrapassou a sua cota de requisições e fica bloqueada por cerca de 30 minutos, ou um IP que continua enviando chaves inválidas fica bloqueado por um curto período. Também é o limite dos endpoints de rede e de account.snapshots.
  • 429 KEEP_CALM: chamadas demais a uma rota em pouco tempo.
O SDK nunca repete um 429. Diminua o ritmo e aguarde antes de tentar novamente.

Próximos passos

Referência de erros da API

Todos os códigos de erro, com o significado e a solução.

Limitações e restrições

Os limites de requisições de cada plano.