Paginación
Disponible enProResearch
Las rutas que pueden devolver muchos datos los devuelven en páginas. La API usa tres tipos de
paginación y cada ruta usa uno. El tipo es el mismo en todas partes donde aparece y la respuesta
siempre te dice si hay más. La búsqueda no se pagina: devuelve los mejores limit resultados.
Paginación por desplazamiento: el texto de un documento
GET /documents/:id devuelve el texto de un documento en trozos de hasta maxChars caracteres
(por defecto 12 000, como máximo 20 000). Pasa nextOffset de una respuesta como offset en la
siguiente, hasta que nextOffset sea null.
async function readDocument(id) {
let offset = 0;
let text = '';
while (offset !== null) {
const res = await fetch(
`https://api.readsira.com/rest/v2/documents/${id}?offset=${offset}&maxChars=20000`,
{ headers: { Authorization: `Bearer ${process.env.READSIRA_KEY}` } },
);
const { data } = await res.json();
text += data.text;
offset = data.nextOffset;
}
return text;
}
También vienen en la respuesta totalChars (la longitud completa) y truncated, que es true
mientras queda más texto.
Paginación por cursor: fragmentos, transcripciones, proyectos
Un cursor es un marcador que te da la API. No lo construyas tú. Devuélvelo sin cambios.
| Ruta | Cursor que envías | De dónde sale el siguiente | Límite |
|---|---|---|---|
GET /documents/:id/chunks | cursor (un número) | nextCursor | limit, como máximo 100 |
GET /documents/:id/transcript | cursor (una cadena) | nextCursor | limit, como máximo 500 |
GET /projects | cursor (una cadena) | nextCursor | limit, como máximo 50 |
La primera llamada no lleva cursor. Sigue llamando con el último nextCursor hasta que sea null o
falte.
curl -G "https://api.readsira.com/rest/v2/projects" \
-H "Authorization: Bearer $READSIRA_KEY" \
--data-urlencode "limit=20"
La respuesta trae la página de proyectos y, cuando hay más, nextCursor (abreviado aquí):
{
"success": true,
"data": {
"projects": ["..."],
"nextCursor": "VALUE_FROM_THE_ANSWER"
}
}
La página siguiente devuelve ese valor como cursor:
curl -G "https://api.readsira.com/rest/v2/projects" \
-H "Authorization: Bearer $READSIRA_KEY" \
--data-urlencode "limit=20" \
--data-urlencode "cursor=$NEXT_CURSOR"
Números de página: marcadores y colecciones
Las rutas más antiguas /api/v1/bookmarks y /api/v1/collections usan page (desde 1) y limit
(como máximo 100, por defecto 20). La lista de marcadores responde con bookmarks, total, page,
limit y hasMore. Pide la siguiente page mientras hasMore sea true.
curl -G "https://api.readsira.com/api/v1/bookmarks" \
-H "Authorization: Bearer $READSIRA_KEY" \
-d page=2 -d limit=100
Consejos
- Cada página es una solicitud y cuenta para tus límites. Usa el
limitmás grande que permita la ruta cuando necesites todo. - Las páginas se leen una tras otra. No las envíes en paralelo con el mismo cursor.
- Detente cuando el cursor o
nextOffsetseanull, o cuandohasMoreseafalse.