Define el trabajo que ejecutará tu planificador
Configura en tu propio planificador un trabajo acotado para recuperar publicaciones o comentarios archivados. Reddit Data Stream es un archivo histórico independiente, sin afiliación a Reddit ni actualizaciones en directo. Programar llamadas periódicas no convierte la API en un flujo de eventos, SSE, WebSocket o canal de cambios. No hay promesa de novedades entre ejecuciones ni de un orden temporal que permita detectar todo lo añadido.
Define el destino de la respuesta original y del archivo JSONL derivado, además de un máximo local de llamadas por ejecución. Guarda ruta, filtros, limit y page con un identificador de lote tuyo. Ese registro es de tu ETL, no un cursor emitido por el archivo. Distingue estados como respuesta conservada, transformación pendiente y archivo local terminado para evitar interpretar un fallo de escritura como un fallo de recuperación.
No uses el último created_utc recibido como marca de ingestión nueva. from y to filtran fechas de creación YYYY-MM-DD UTC e incluyen todo el día final, no la llegada o modificación de un registro en el archivo. Partir fechas puede organizar el trabajo, pero no prueba exhaustividad. Tampoco un número de página persistido garantiza una reanudación estable o una entrega única de registros entre ejecuciones.
Guarda la página antes de escribir JSONL
El ejemplo de la portada es GET https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3. Solicita publicaciones de esa comunidad, hasta tres registros de la página tres; no consulta las últimas publicaciones. Para comentarios utiliza comments, o search con los filtros documentados. Autentica desde servidor con X-API-Key: <clave> o Authorization: Bearer <clave>. La página Obtener clave API explica el acceso antes del pago; excluye secretos de archivos y registros.
Comprueba el estado HTTP y conserva la respuesta recibida antes de normalizar campos. Después valida data y escribe cada registro elegido como un objeto JSON en una línea con tu propio código. Si un texto contiene saltos de línea, serialízalo como JSON para escaparlos dentro del objeto. Guarda pagination y credits como metadatos separados. El endpoint entrega JSON, no un archivo JSONL, una descarga masiva o un destino de almacenamiento administrado.
Campos opcionales pueden faltar y las referencias pueden apuntar a datos no recibidos. parent_id y link_id presentes permiten relaciones locales, sin árboles completos ni filtros por esos identificadores. Define cómo tu transformación tratará los registros que no pueda aceptar y conserva sus motivos de rechazo. Si ya guardaste la respuesta, vuelve a procesar esa copia para reparar el archivo; eso no llama a la API ni restituye el crédito del éxito original.
Detén los lotes y separa sus costes
En las rutas de contenido, limit y page van de 1 a 100 y cada página necesita una solicitud. _doc no ordena por tiempo, relevancia o puntuación; min_score es solo un umbral numérico. Lee total con relation: eq es exacto para la consulta, gte una cota inferior y unknown un total no fiable, posiblemente null. Conserva has_more y window_exhausted, respeta el límite y documenta dónde terminó el trabajo. No prometas cobertura completa o registros únicos.
Una respuesta exitosa vacía no genera líneas para data, pero sí una entrada de lote y un coste. Corrige parámetros con 400, revisa clave y dominio con 401, saldo con 402 y aplica esperas y repeticiones limitadas con 429. /v1/status es público y no se cobra, pero solo declara el alcance y confirma la respuesta HTTP; no comprueba el buscador ni el estado de tus archivos o tareas.
Cada recuperación exitosa cuesta un crédito, incluso vacía o repetida: $1 por 1000 solicitudes. La recarga mínima es $50 por 50000 créditos comprados y los 100 de prueba son condicionales. Las solicitudes inválidas no descuentan y los fallos del origen devuelven la reserva. Una desconexión puede ocultar un éxito cobrado; otra recuperación exitosa cuesta otro crédito. Un fallo local no lo reembolsa. Consulta precios y documentación para presupuestar páginas, pruebas y nuevas consultas por separado del procesamiento local.