Documentação › Conceitos
Paginação e limites
Cursor de cada lista, limite de 120 requisições por minuto e tamanho máximo do corpo.
Paginação por cursor
As listas que podem crescer usam cursor: você pede uma página, guarda o cursor que veio e o devolve para pedir a próxima. Os nomes mudam entre as rotas. É herança das duas partes do produto (documentos recebidos nasceram antes da emissão), e o contrato não muda, então confira a tabela:
| Rota | Parâmetro do cursor | Itens em | Próximo cursor em | limite (padrão / máx.) |
|---|---|---|---|---|
GET /v1/documents |
cursor |
itens |
proximoCursor |
20 / 100 |
GET /v1/nfse |
cursor |
dados |
proximo_cursor |
50 / 100 |
GET /v1/lotes |
cursor |
dados |
proximo_cursor |
20 / 100 |
GET /v1/lotes/{id}/itens |
cursor |
dados |
proximo_cursor |
100 / 500 |
GET /v1/webhooks/{id}/entregas |
cursor |
entregas |
proximo_cursor |
50 / 200 |
GET /v1/eventos |
apos |
eventos |
proximo_cursor |
100 / 1000 |
GET /v1/companies e GET /v1/webhooks não são paginados: devolvem a lista
inteira.
Regras que valem para todas:
- Trate o cursor como valor opaco. Guarde e devolva exatamente como veio. Não interprete, não monte, não compare. O formato interno pode mudar.
- Termine quando o próximo cursor vier nulo. Uma página com menos itens
que
limite, ou até vazia, não quer dizer que acabou: com filtro destatus, a página pode vir menor e ainda ter próximo cursor. GET /v1/eventosé diferente: oproximo_cursorvem sempre, mesmo na página vazia. É um log que cresce: guarde o último cursor e volte a ler a partir dele depois. Veja Eventos.- Nas rotas de emissão, lote, webhooks e eventos, cursor inválido é 400
parametro_invalido. Em/v1/eventos, cursor mais velho que a retenção de 90 dias é 410cursor_vencido, comcursor_mais_antigopara continuar. limitefora da faixa: em/v1/nfseé ajustado para dentro dela, sem erro; nas demais rotas é 400.
Limite de requisições
120 requisições por minuto, por chave de API, em janela fixa de 60 segundos
alinhada ao relógio. Passar do limite devolve 429. Não há cabeçalho
Retry-After nem X-RateLimit-*: espere a virada do minuto e repita a mesma
requisição.
- Um
POST /v1/lotesconta como uma chamada, qualquer que seja o número de itens. Para volume, use lote. - Para acompanhar notas, use webhook. Consultar uma nota a cada segundo gasta o limite sem adiantar nada.
Tamanho do corpo
Até 2 MB por requisição. POST /v1/lotes aceita até 30 MB em JSON e planilha
de até 20 MB.