Una pantalla de sportsbook parece estática: una lista de partidos y una columna de cuotas. Por debajo, un feed de cuotas es un flujo de miles de pequeños cambios, y el trabajo del operador es aplicarlos todos en el orden correcto. Esta guía recorre ese flujo desde la primera petición hasta la apuesta liquidada.
1. El modelo de datos
Casi todos los feeds usan la misma jerarquía:
- Deporte: fútbol, tenis, esports.
- Torneo o liga: Premier League, ATP Tokio, Worlds de League of Legends.
- Evento: un partido, con hora de inicio y participantes.
- Mercado: una pregunta sobre el evento, como 1X2, más/menos de 2,5 goles o hándicap por mapa.
- Resultado: una respuesta, con cuota y estado (activo, suspendido, liquidado).
Cada elemento tiene un identificador estable. La mayoría de errores de integración vienen de tratar los nombres como identificadores: los nombres de los equipos cambian de grafía, los ID no.
2. Primero el snapshot, luego los deltas
Al arrancar, el cliente pide un snapshot: el estado completo del momento. A partir de ahí recibe deltas, mensajes pequeños que dicen «esta cuota se ha movido», «este mercado está suspendido», «este evento ha empezado».
Los buenos feeds numeran sus deltas. Nocturn Sport, por ejemplo, describe su feed como un snapshot completo más deltas con versión. Si el cliente tiene la versión N y recibe la N+2, sabe que se perdió un mensaje y recarga en lugar de mostrar una cuota caducada. Los feeds sin versión obligan al cliente a adivinar, y adivinando es como una casa de apuestas acaba ofreciendo las cuotas de ayer.
3. Push y pull
En fútbol en vivo una cuota puede cambiar varias veces por minuto, así que los feeds en vivo suelen enviar (push) los mensajes por una conexión persistente. Las cuotas prepartido se mueven tan despacio que consultarlas (pull) por HTTP cada pocos segundos suele bastar. Muchos operadores usan ambos: pull para el catálogo prepartido y push para el directo.
4. Suspensiones
Una suspensión es el feed diciendo «no aceptes apuestas en esto ahora». Los desencadenantes incluyen un gol, un penalti, una rotura de servicio, el final de un mapa o que el proveedor pierda su propia fuente de datos. El cliente debe aplicar las suspensiones más rápido que cualquier otra cosa; aceptar una cuota en los segundos posteriores a un gol es la forma clásica de perder dinero.
Los mercados prepartido también cierran antes del inicio. Nocturn Sport, por ejemplo, los cierra un minuto antes de que empiece el evento.
5. Colocar la apuesta
Si la API va más allá de publicar cuotas, la colocación de apuestas sigue un patrón:
- El cliente envía la selección, la cuota que mostró y el importe, con un ID de petición único.
- El servidor comprueba que la cuota sigue siendo válida y el mercado está abierto.
- Acepta, rechaza u ofrece una cuota nueva.
- Si falla la red, el cliente reenvía con el mismo ID de petición y el servidor devuelve la respuesta original en lugar de crear una segunda apuesta.
Ese último paso, la idempotencia, protege tanto el saldo del jugador como las cuentas del operador.
6. Liquidación
Cuando termina el evento, el feed publica los resultados de cada opción: ganada, perdida, nula, o mitad ganada y mitad perdida en líneas divididas como los hándicaps asiáticos. La plataforma liquida cada apuesta con esos datos. Hay correcciones: un resultado puede modificarse tras una revisión, así que el proceso de liquidación debe poder volver a liquidar limpiamente.
7. Qué probar antes de salir en vivo
- Cortar la conexión a mitad de partido y comprobar la recuperación.
- Reenviar un delta fuera de orden y comprobar que el cliente lo detecta.
- Colocar la misma apuesta dos veces con un mismo ID de petición.
- Liquidar una combinada con una selección anulada.
Un feed que supera esas cuatro pruebas está listo para un sábado por la tarde.
Preguntas frecuentes
¿Qué diferencia hay entre un snapshot y un delta?
Un snapshot es el estado completo y actual de cada evento, mercado y cuota. Un delta contiene solo lo que ha cambiado desde una versión concreta. El cliente carga un snapshot una vez y después aplica los deltas en orden.
¿Por qué los deltas llevan versión?
Para que el cliente detecte huecos. Si tiene la versión 1.204 y recibe la 1.206, sabe que falta la 1.205 y debe recargar en lugar de mostrar una cuota errónea.
¿Por qué se suspenden los mercados?
Porque la cuota ya no es segura: un gol, una tarjeta roja, una rotura de servicio o una conexión perdida con la fuente de datos. Un mercado suspendido rechaza apuestas hasta que reabre con una cuota nueva.
¿Un feed de cuotas gestiona la colocación de apuestas?
Algunos sí y otros no. Un feed puro solo publica cuotas. Una API de sportsbook añade colocación de apuestas, historial y liquidación, normalmente con un ID de petición único por apuesta para que un reintento no duplique la apuesta.
Push o pull: ¿qué entrega es mejor?
El push (un flujo de mensajes o un socket) encaja con las apuestas en vivo, donde las cuotas cambian cada segundo. El pull (consultas HTTP) es más sencillo y suele bastar para el prepartido.