Paginación
Todos los endpoints que devuelven listas usan la misma paginación por limit y
offset, y responden con la misma forma.
Parámetros
Sección titulada «Parámetros»| Parámetro | Tipo | Default | Rango |
|---|---|---|---|
limit |
entero | 50 |
de 1 a 100 |
offset |
entero | 0 |
0 o mayor |
curl "https://api.afippi.com/v1/cuits?limit=25&offset=50" \ -H "Authorization: Bearer $AFIPPI_API_TOKEN"Forma de la respuesta
Sección titulada «Forma de la respuesta»Los listados devuelven los registros en data y los metadatos en pagination:
{ "data": [], "pagination": { "limit": 25, "offset": 50, "total": 137 }}total es la cantidad completa de registros que matchean la consulta, no la
cantidad devuelta en esta página. Es el número que necesitás para saber cuántas
páginas faltan. Si filtrás GET /v1/cuits por etiqueta o condición fiscal,
total es el recuento de esa coincidencia, no de todos los CUITs de la cuenta.
Recorrer todas las páginas
Sección titulada «Recorrer todas las páginas»async function* traerTodosLosCuits(token) { const limit = 100 let offset = 0
while (true) { const respuesta = await fetch( `https://api.afippi.com/v1/cuits?limit=${limit}&offset=${offset}`, { headers: { Authorization: `Bearer ${token}` } }, ) const { data, pagination } = await respuesta.json()
yield* data
offset += limit if (offset >= pagination.total) { return } }}Acordate de que cada página consume una request de tu cuota mensual. Con limit=100
gastás la menor cantidad posible de pedidos.
El orden es estable dentro de cada recurso, así que paginar no te va a saltear ni duplicar registros:
- CUITs — por nombre, y a igualdad de nombre por identificador interno. El desempate existe porque el nombre no es único.
- Etiquetas — por nombre.
- Comprobantes — por fecha.
- Notificaciones del DFE — de la más reciente a la más antigua.
- Movimientos de CCMA — por período, del más reciente al más antiguo, y
dentro de cada período por
orden. Es el único listado dondelimit,offsetytotalcuentan períodos y no registros: cada página trae todos los movimientos de los períodos que le tocaron.
Errores
Sección titulada «Errores»Un limit o un offset fuera de rango responden 400 con el detalle en español:
{ "error": "'limit' debe ser un entero entre 1 y 100." }Si mandás los dos mal, la respuesta junta ambos mensajes:
{ "error": "'limit' debe ser un entero entre 1 y 100. 'offset' debe ser un entero mayor o igual a 0." }