Pular para o conteúdo principal

Limites de Requisicao

Os limites de requisicao sao aplicados por endpoint em uma janela deslizante de 60 segundos. Cada endpoint tem seu proprio contador, entao atingir o limite em uma rota nunca afeta outra. Exceder um limite retorna 429 Too Many Requests.

Como funciona

  • A janela e de 1 minuto para todos os endpoints.
  • Os limites sao isolados por endpoint — list-boards e send-message sao contados separadamente.
  • Toda resposta traz headers de rate limit para que voce possa se controlar antes de atingir o limite.

Headers de resposta

HeaderDescricao
X-RateLimit-LimitMaximo de requisicoes permitidas para este endpoint por janela.
X-RateLimit-RemainingRequisicoes restantes na janela atual.
X-RateLimit-ResetQuando a janela atual reinicia.
Retry-AfterSegundos para aguardar antes de tentar novamente (enviado apenas no 429).

Limites por categoria

Os limites se agrupam em algumas faixas. O limite exato depende de quao pesada e a operacao.

CategoriaLimite tipico (por minuto)Exemplos
Leituras50Listar boards, obter uma linha, listar channels, listar notificacoes, listar bookings
Leituras mais pesadas30Arvore de docs, arvore de drive, todas as leituras /workspace/*
Gravacoes30Criar/atualizar/excluir linhas, docs, comentarios, pastas; URLs presigned de upload
Gravacoes pesadas20Gravacoes de markdown (linha, coluna, doc), inicio/finalizacao de upload multipart
Busca60O endpoint /search entre entidades (buscas de docs/drive sao 50)
Mutacoes de notificacao60Marcar como lida/nao lida, excluir
Mensagens100Enviar mensagem de channel, enviar mensagem direta
Export10Export assincrono de tabela (o endpoint mais restrito)

Limites representativos por endpoint

EndpointMetodoLimite / min
/board/list-boardsGET50
/board/{boardId}/table/{tableId}/rowsGET50
/board/{boardId}/table/{tableId}/rowPOST30
/board/{boardId}/table/{tableId}/row/{rowId}/mdPOST20
/board/{boardId}/table/{tableId}/exportPOST10
/docs/treeGET30
/docs/{docId}/mdPOST20
/drive/files/upload/multipart/startPOST20
/searchGET60
/notificationsGET50
/notifications/{notificationId}PATCH / DELETE60
/workspace/infoGET30
/chat/channelsGET50
/chat/channel/{channelId}/send-messagePOST100
observação

Esses numeros estao corretos no momento em que isto foi escrito, mas podem mudar. Sempre leia os headers X-RateLimit-* em tempo de execucao, em vez de fixar os limites no codigo — e consulte a Referencia da API para o valor atual de um endpoint especifico.

A resposta 429

Quando voce excede um limite, o endpoint retorna:

{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Too many requests, please try again later",
"retryAfter": 27
}

O header Retry-After carrega o mesmo valor (em segundos) que o campo retryAfter do corpo — o tempo ate a janela reiniciar.

Orientacoes de backoff

  • Respeite o Retry-After. Em um 429, aguarde o numero de segundos que ele especifica antes de tentar novamente.
  • Use backoff exponencial como fallback. Se nenhum Retry-After estiver presente (por exemplo, em um 5xx), faca o backoff de forma exponencial: 1s, 2s, 4s, …
  • Observe o X-RateLimit-Remaining. Desacelere proativamente a medida que ele se aproxima de zero, em vez de esperar por um 429.
  • Distribua o trabalho em massa. Ao iterar sobre listas grandes ou criar linhas em lote, adicione um pequeno intervalo entre as chamadas para ficar abaixo do limite por minuto.
  • Limite os retries. Desista apos algumas tentativas e exiba o erro, em vez de tentar para sempre.

Veja Tratamento de Erros para um exemplo completo de retry.