> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Leer eventos con un cursor

> Lee tus eventos de Streaming Hub página por página desde una suscripción pull, en la que cada lectura confirma la página que devuelve.

Lee tus eventos a tu propio ritmo, sin exponer un endpoint.

## Participantes

***

* **Tu institución.** Tu sistema llama a la API de Streaming Hub con un token de Access Manager.
* **Streaming Hub.** El servicio de plataforma de Lerian que guarda tus eventos en orden de llegada y los devuelve página por página. Lerian lo configura para tu institución.
* **Producto Lerian.** El producto que publica el evento de negocio, por ejemplo Midaz.

## Diagrama

***

![Leer eventos con un cursor](https://mintcdn.com/lerian-49cb71fc/MbifquGny5fsdtVy/images/es/d2/id-pull-events-with-a-cursor.svg?fit=max\&auto=format\&n=MbifquGny5fsdtVy\&q=85\&s=b38c2e7381b36d0067487c988ff697e7)

## Pasos

***

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | Tu institución | Streaming Hub | API de Lerian | [`POST /v1/subscriptions`](https://docs.lerian.studio/es/reference/platform/streaming-hub/create-subscription) | Crea la suscripción con un `name`, `sink_kind` `pull` y los `event_types` que quieres. No envíes endpoint. Envía un header `X-Idempotency` único. |
| 2 | Streaming Hub | Tu institución | Respuesta | | La suscripción queda `active` de inmediato. Una suscripción pull no necesita ping y no tiene secreto de firma. |
| 3 | Producto Lerian | Streaming Hub | Evento | | El producto publica un evento de negocio. |
| 4 | Streaming Hub | Streaming Hub | Paso interno | | Streaming Hub guarda el evento y le da un número de secuencia, `seq`, en orden de llegada. |
| 5 | Tu institución | Streaming Hub | API de Lerian | [`GET /v1/events`](https://docs.lerian.studio/es/reference/platform/streaming-hub/pull-events) | Lee una página con `subscription_id`. El `limit` opcional va de 1 a 500, y el predeterminado es 100. |
| 6 | Streaming Hub | Streaming Hub | Paso interno | | Streaming Hub mueve el cursor de la suscripción al mayor `seq` de la página. La lectura es la confirmación. |
| 7 | Streaming Hub | Tu institución | Respuesta | | La página trae los eventos en orden de `seq`, cada uno con su `ceId`, y el `next_cursor`. |
| 8 | Tu institución | Tu institución | Paso interno | | Procesa los eventos. Ignora un `ceId` que ya procesaste. |
| 9 | Tu institución | Streaming Hub | API de Lerian | [`GET /v1/events`](https://docs.lerian.studio/es/reference/platform/streaming-hub/pull-events) | Lee la página siguiente. Envía el `next_cursor` como `after`, o no envíes `after` para seguir desde el cursor. |
| 10 | Streaming Hub | Tu institución | Respuesta | | Cuando la página tiene menos eventos que el `limit`, el `next_cursor` es `null`. |

## Cómo saber que terminó

***

Una lectura devuelve `next_cursor` `null`.

* **Tu sistema se detiene después de una lectura.** El cursor ya pasó esa página. Lee de nuevo con `after` igual al último `seq` que procesaste. Esa lectura no mueve el cursor hacia atrás.
* **La lectura se rechaza por rate limit.** La lectura responde `429` `rate_limited`. Espera los segundos de `Retry-After` y lee de nuevo.

## Relacionados

***

* [Recibir eventos en un webhook](https://docs.lerian.studio/es/diagrams/platform-services/receive-events-on-a-webhook.md)
* [Consumo de eventos](https://docs.lerian.studio/es/platform/streaming-hub/consuming-events.md)
* [Gestión de suscripciones](https://docs.lerian.studio/es/platform/streaming-hub/managing-subscriptions.md)
* [Errores de Streaming Hub](https://docs.lerian.studio/es/reference/platform/streaming-hub/streaming-hub-error-list.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.