Sudrel API
Panel Crear clave de API

Documentación › Conceptos

Guías

Paginación y límites

Cursor de cada lista, límite de 120 solicitudes por minuto y tamaño máximo del cuerpo.

Paginación por cursor

Las listas que pueden crecer usan cursor: pides una página, guardas el cursor que vino y lo devuelves para pedir la siguiente. Los nombres cambian entre las rutas. Es herencia de las dos partes del producto (los documentos recibidos nacieron antes de la emisión), y el contrato no cambia, así que revisa la tabla:

Ruta Parámetro del cursor Ítems en Siguiente cursor en limite (predeterminado / 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 y GET /v1/webhooks no están paginados: devuelven la lista completa.

Reglas que valen para todas:

  • Trata el cursor como valor opaco. Guárdalo y devuélvelo exactamente como vino. No lo interpretes, no lo armes, no lo compares. El formato interno puede cambiar.
  • Termina cuando el siguiente cursor venga nulo. Una página con menos ítems que limite, o incluso vacía, no significa que se acabó: con filtro de status, la página puede venir más pequeña y todavía tener siguiente cursor.
  • GET /v1/eventos es diferente: el proximo_cursor viene siempre, incluso en la página vacía. Es un registro que crece: guarda el último cursor y vuelve a leer a partir de él después. Consulta Eventos.
  • En las rutas de emisión, lote, webhooks y eventos, un cursor inválido es 400 parametro_invalido. En /v1/eventos, un cursor más antiguo que la retención de 90 días es 410 cursor_vencido, con cursor_mais_antigo para continuar.
  • limite fuera del rango: en /v1/nfse se ajusta para quedar dentro de él, sin error; en las demás rutas es 400.

Límite de solicitudes

120 solicitudes por minuto, por clave de API, en una ventana fija de 60 segundos alineada al reloj. Pasar el límite devuelve 429. No hay encabezado Retry-After ni X-RateLimit-*: espera el cambio de minuto y repite la misma solicitud.

  • Un POST /v1/lotes cuenta como una llamada, sin importar el número de ítems. Para volumen, usa lotes.
  • Para hacer el seguimiento de notas fiscales, usa webhook. Consultar una nota fiscal cada segundo gasta el límite sin adelantar nada.

Tamaño del cuerpo

Hasta 2 MB por solicitud. POST /v1/lotes acepta hasta 30 MB en JSON y hojas de cálculo de hasta 20 MB.