Notas de quickstart
Prueba el stream de caídas de Pinnacle con curl
Un flag de curl convierte el stream SSE de caídas en líneas en tu terminal. Lo que debes ver, qué significa plan_lacks_sse y cuándo dejar de mirar.
Antes de escribir cualquier código de stream, observa el stream de caídas en crudo. Un comando curl con los flags correctos abre el stream SSE e imprime cada caída al llegar, la forma más rápida de confirmar tu clave, tu plan y la forma del stream antes de construir sobre ellos.
El único comando que importa
SSE es una respuesta HTTP simple que nunca termina, así que los flags importan más que la URL. Necesitas -N para impedir que curl almacene la respuesta en búfer, la cabecera Accept para el event stream, y tu clave en la cabecera, exactamente como el quickstart de curl la envía en las llamadas REST:
curl -N -H "x-portal-apikey: $ODDS_API_KEY" \
-H "Accept: text/event-stream" \
"$ODDS_BASE_URL/odds-drop?min_drop=5"
El flag -N es el que la gente olvida. Sin él, curl acumula el stream en un búfer y no ves nada durante minutos.
Lo que debes ver
La primera línea es un mensaje de control: un objeto JSON, no una lista, empezando con el saludo connected. Después, cada línea data: lleva un array JSON de alertas conforme se detectan las caídas, la misma forma que escucha el quickstart de Python. En un tablero tranquilo no llega nada durante minutos, y eso es normal: sin caídas no hay líneas.
Si el plan de tu clave no tiene stream, el primer objeto de control lo dice: plan_lacks_sse. Es el stream diciendo que la clave funciona y que el plan no incluye SSE, lo que el quickstart señala como el caso de la clave gratuita, verificado el 2026-10-01.
Baja el suelo mientras pruebas
El parámetro min_drop define qué tan grande debe ser una bajada para llegar, y baja hasta 1. Mientras observas, ajústalo a 1 para que una tarde tranquila aún produzca líneas; vuelve a tu umbral real cuando la prueba termine. Una prueba de humo que no muestra nada no prueba nada.
Leer un stream en vivo sin jq
jq quiere documentos JSON completos, y un stream es una serie de líneas, así que canaliza la salida por un lector de líneas. Para ver solo los lotes de alertas y saltar los objetos de control, filtra por las líneas que llevan arrays:
curl -N -H "x-portal-apikey: $ODDS_API_KEY" \
"$ODDS_BASE_URL/odds-drop?min_drop=1" | grep '^data: \['
Para algo más rico, incorpora el manejo de líneas en cinco líneas de Python después. La observación en terminal existe para confirmar el feed, no para ejecutarlo.
Cuándo parar la prueba
Has terminado cuando has visto el saludo y un lote de alertas, o confirmado el mensaje de plan. Termina con Ctrl+C; el servidor cierra su lado cuando tú lo haces. Para cualquier cosa más larga que una observación, los endpoints REST de snapshots y caídas bajo demanda sientan mejor a un shell script que un stream, y el quickstart de curl cubre ambos.
Un flag, un stream, un minuto de observación. Confirma la forma primero, luego escribe el cliente.