---
title: Paginación
description: Parámetros de orden y límite, el envelope { data, next_cursor } y cómo iterar listados grandes sin sorpresas.
url: https://notta.cl/docs/pagination
related:
  - https://notta.cl/docs/api/dtes
  - https://notta.cl/docs/rate-limits
  - https://notta.cl/docs/errors
---

> Documentación de Notta en markdown. Índice completo: https://notta.cl/llms.txt — corpus entero: https://notta.cl/llms-full.txt

# Paginación

Los endpoints de listado (`GET /api/v1/dtes`, `GET /api/v1/bhe`) devuelven un envelope consistente con los resultados y un cursor de continuación:

```json
{
  "data": [
    {
      "id": "01957a91-0b50-7000-8000-000000000001",
      "folio": 1234,
      "tipo_dte": 33,
      "rut_emisor": "76123456-0",
      "rut_receptor": "11111111-1",
      "monto_total": 297500,
      "sii_status": "EPR",
      "fecha_emision": "2026-05-13",
      "created_at": "2026-05-13T14:32:48.000Z",
      "links": { "self": "/api/v1/dtes/01957a91-..." }
    }
  ],
  "next_cursor": null
}
```

## Parámetros

| Query param | Default | Rango | Descripción |
|---|---|---|---|
| `limit` | `20` | `1`–`100` | Cantidad máxima de resultados por página |
| `sort` | `created_at` | `folio` · `monto_total` · `fecha_emision` · `sii_status` · `created_at` | Columna de orden |
| `dir` | `desc` | `asc` · `desc` | Dirección del orden |

Valores fuera de rango no fallan: `limit` se ajusta al rango y un `sort`/`dir` no reconocido cae al default.

```bash
curl "https://app.notta.cl/api/v1/dtes?limit=50&sort=folio&dir=asc" \
  -H "Authorization: Bearer ntt_cert_..."
```

## Cursor (`next_cursor`)

La paginación está **diseñada como cursor-based**: el envelope incluye siempre el campo `next_cursor`. Cuando el cursoring esté activo, una respuesta que no agote el listado va a traer el token de continuación en `next_cursor`, que pasas en la siguiente request como `?cursor=<token>`.

> **Estado actual:**
El listado devuelve hasta `limit` resultados con `next_cursor: null`; el cursoring incremental sobre datasets grandes se está habilitando. El shape (`{ data, next_cursor }`) ya es estable, así que puedes programar contra él desde ahora: itera mientras `next_cursor` no sea `null`.

## Próximos pasos

- **[Referencia API de DTEs](/docs/api/dtes)** — el detalle de cada endpoint de consulta, PDF y XML.
- [Límites de tasa](/docs/rate-limits) — cuánto puedes iterar antes de toparte con el `429`.
- [Catálogo de errores](/docs/errors) — los códigos que pueden devolver los listados.
