Delta de Cuotas
Obtén solo las cuotas que han cambiado desde una marca de tiempo dada. Este endpoint devuelve el mismo formato de cuotas que /odds pero filtrado a los elementos actualizados después de tu valor since, lo que lo hace ideal para clientes de polling que desean actualizaciones incrementales sin volver a obtener la instantánea completa.
GET /api/v1/odds/deltaAutenticación
Requiere API key. Disponible para todos los planes.
Utiliza el server_time de cada respuesta como valor since para tu siguiente solicitud. Esto garantiza que nunca pierdas actualizaciones ni recibas duplicados.
Parámetros de Consulta
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
since | string | obligatorio | Marca de tiempo ISO 8601. Devuelve solo cuotas actualizadas después de este momento (p. ej., 2026-02-11T12:00:00Z) |
sportsbook | string | todos | IDs de casas de apuestas separados por comas (p. ej., draftkings,fanduel) |
sport | string | todos | Filtrar por deporte (p. ej., basketball, football) |
league | string | todas | Filtrar por liga (p. ej., nba, nfl) |
market | string | todos | Filtrar por tipo de mercado (p. ej., moneyline, spread, total). Admite alias de categoría — consulta Cuotas: Alias de Categoría de Mercado. |
event | string | - | Filtrar por ID de evento |
live | boolean | false | Devolver solo eventos en vivo/in-play |
sort | string | - | Campo de ordenación con prefijo - opcional para descendente (p. ej., -odds_american, odds_probability) |
fields | string | todos | Nombres de campos separados por comas a incluir (p. ej., id,sportsbook,odds_american) |
min_odds | number | - | Filtro de cuotas americanas mínimas (p. ej., -110) |
max_odds | number | - | Filtro de cuotas americanas máximas (p. ej., +200) |
state | string | — | Código de estado de EE. UU. para enlaces directos (deep links) de casas de apuestas (p. ej., nj, ny, il). Cuando se establece, las URLs deep_link incluyen ?state=XX para que la redirección apunte al dominio específico de la casa de apuestas para ese estado. |
limit | integer | 50 | Máximo de resultados por página (máx. 500) |
offset | integer | 0 | Desplazamiento de paginación. Debe ser ≤ 500. Para cambios anteriores, avanza since al server_time de la respuesta previa en lugar de usar offset. |
El parámetro since es obligatorio. Omitirlo devuelve un error 400 validation_error.
since tiene una ventana de retención de 10 minutos para eliminaciones. Las eliminaciones de cuotas con más de 10 minutos de antigüedad se eliminan de la memoria. Si envías un since anterior a eso, el array data aún respeta tu marca de tiempo, pero la lista removed solo puede contener cuotas eliminadas en los últimos 10 minutos — y se establecerá since_clamped: true en la respuesta. Avanza since con la cadencia indicada en la sección Patrón de Polling más abajo para evitar esto.
Ejemplos de Solicitudes
cURL
# Obtener todos los cambios de cuotas en los últimos 30 segundos
curl -X GET "https://api.sharpapi.io/api/v1/odds/delta?since=2026-02-11T12:00:00Z&league=nba" \
-H "X-API-Key: YOUR_API_KEY"Respuesta
Éxito (200)
{
"success": true,
"data": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"event_id": "33483153",
"sport": "basketball",
"league": "nba",
"home_team": "PHI 76ers",
"away_team": "PHO Suns",
"market_type": "moneyline",
"selection": "PHO Suns",
"selection_type": "away",
"odds_american": -150,
"odds_decimal": 1.667,
"odds_probability": 0.60,
"line": null,
"event_start_time": "2026-02-11T19:00:00Z",
"last_seen_at": "2026-02-11T12:00:15.125Z",
"is_live": false,
"status": "upcoming"
}
],
"meta": {
"count": 1,
"total": 1,
"server_time": "2026-02-11T12:00:20.000Z",
"books_changed": ["draftkings"],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false,
"next_offset": null
},
"filters": {
"since": "2026-02-11T12:00:00Z",
"league": "nba"
}
}
}Cabeceras de Respuesta
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1737853200
X-Data-Delay: 0
X-Request-Id: req_delta_abc123Respuestas de Error
400 Falta el parámetro since
{
"error": {
"code": "validation_error",
"message": "The 'since' parameter is required for the delta endpoint",
"docs": "https://docs.sharpapi.io/en/api-reference/odds-delta"
}
}400 Offset demasiado grande
{
"error": {
"code": "offset_too_large",
"message": "offset must be <= 500; advance `since` to the previous response's `updated_at` to retrieve older changes",
"max_offset": 500
}
}401 No autorizado
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key",
"docs": "https://docs.sharpapi.io/en/authentication"
}
}Esquema de Respuesta del Delta
El array data contiene los mismos objetos de cuotas que el endpoint /odds. Solo se incluyen las cuotas actualizadas después de la marca de tiempo since.
El objeto meta incluye dos campos adicionales:
| Campo | Tipo | Descripción |
|---|---|---|
meta.server_time | string | Marca de tiempo del servidor en ISO 8601. Úsala como valor since para tu siguiente solicitud |
meta.books_changed | array | Lista de IDs de casas de apuestas que tuvieron actualizaciones en este delta |
Indicadores de Truncado y Acotación
Aparecen dos indicadores booleanos opcionales de nivel superior solo cuando el servidor ha tenido que aplicar un límite de seguridad a la respuesta. Los clientes que se comportan correctamente y hacen polling a la cadencia recomendada nunca los ven.
| Campo | Tipo | Descripción |
|---|---|---|
removed_truncated | boolean | Presente y true cuando el array removed ha alcanzado el tope de 1000 entradas del servidor. Hay más cuotas eliminadas que el servidor no ha incluido. Normalmente significa que tu since es demasiado antiguo o tus filtros son demasiado amplios — reduce la ventana o el conjunto de filtros y vuelve a hacer polling. |
since_clamped | boolean | Presente y true cuando since era anterior a la retención de eliminaciones de 10 minutos del servidor. El array data aún respeta tu since original, pero removed queda restringido a las eliminaciones de los últimos 10 minutos. Avanza since a meta.server_time en cada llamada para evitarlo. |
Patrón de Polling
El patrón de polling recomendado utiliza server_time para encadenar solicitudes:
- Realiza una solicitud inicial con
sinceestablecido a una marca de tiempo reciente - Lee
meta.server_timede la respuesta - Usa ese
server_timecomo valorsinceen tu siguiente solicitud - Repite en el intervalo deseado (p. ej., cada 5 segundos)
Esto garantiza:
- Sin huecos -
server_timees el reloj del servidor, por lo que no perderás actualizaciones debido a desfases de reloj - Sin duplicados - cada ventana de delta no se solapa con las demás
- Carga útil mínima - solo se devuelven las cuotas que han cambiado
Si ninguna cuota ha cambiado desde tu marca de tiempo since, la respuesta tendrá un array data vacío y count: 0. Esto es normal y esperado durante períodos de poca actividad.
Endpoints Relacionados
- Instantánea de Cuotas - Obtén la instantánea completa actual de cuotas
- SSE Stream - Actualizaciones push en tiempo real mediante Server-Sent Events
- WebSocket Stream - Actualizaciones push en tiempo real mediante WebSocket