Línea de Cierre
Devuelve la instantánea de la línea de cierre para un evento — las cuotas por casa de apuestas capturadas en el momento exacto en que cada sportsbook cambió el evento de pre-partido a en vivo. El endpoint es la fuente canónica para el análisis del valor de la línea de cierre (CLV) en apuestas realizadas antes del inicio del evento.
GET /api/v1/odds/closingCada sportsbook se captura de forma independiente la primera vez que cambia un evento dado a is_live=true. Las instantáneas capturadas permanecen en Valkey durante 48 horas después del inicio del evento. Más allá de esa ventana, utiliza /api/v1/historical/odds/closing (Enterprise, respaldado por ClickHouse).
Autenticación
Requiere API key. Disponible para los planes Pro, Sharp y Enterprise (función closing_line).
Parámetros de Consulta
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
event_id | string | obligatorio | Identificador del evento. Mismos IDs que /api/v1/events. |
sportsbook | string | todos | Filtro de casas de apuestas separado por comas (p. ej., draftkings,fanduel). Se acepta books= como alias heredado. |
event_id es obligatorio. Omitirlo devuelve 400 validation_error. Los caracteres no válidos en el valor también devuelven 400 validation_error.
Ejemplos de Solicitudes
cURL
curl -X GET "https://api.sharpapi.io/api/v1/odds/closing?event_id=mlb_athletics_mariners_2026-04-22" \
-H "X-API-Key: YOUR_API_KEY"Respuesta
{
"success": true,
"data": {
"event_id": "mlb_athletics_mariners_2026-04-22",
"sport": "baseball",
"league": "mlb",
"home_team": "Seattle Mariners",
"away_team": "Athletics",
"event_start_time": "2026-04-22T22:10:00Z",
"captured_at": "2026-04-22T22:09:58.412Z",
"books": {
"draftkings": [
{
"sportsbook": "draftkings",
"market_type": "moneyline",
"selection": "Seattle Mariners",
"selection_type": "home",
"odds_american": -165,
"odds_decimal": 1.606
},
{
"sportsbook": "draftkings",
"market_type": "spread",
"selection": "Seattle Mariners",
"selection_type": "home",
"line": -1.5,
"odds_american": 130,
"odds_decimal": 2.30
}
],
"pinnacle": [
{
"sportsbook": "pinnacle",
"market_type": "moneyline",
"selection": "Seattle Mariners",
"selection_type": "home",
"odds_american": -158,
"odds_decimal": 1.633
}
]
}
},
"meta": {
"source": "valkey",
"updated_at": "2026-04-22T17:34:54.692Z"
}
}Respuesta Vacía
Si no se ha capturado ninguna instantánea de cierre (el evento aún no ha comenzado, o el ID del evento no tiene capturas dentro de la ventana de 48h), la respuesta devuelve un objeto books vacío:
{
"success": true,
"data": {
"event_id": "mlb_athletics_mariners_2026-04-22",
"books": {}
},
"meta": {
"source": "valkey",
"updated_at": "2026-04-22T17:34:54.692Z"
}
}Campos de Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
data.event_id | string | Identificador del evento devuelto desde la solicitud. |
data.sport | string | Deporte (p. ej., baseball). Vacío cuando no existen capturas. |
data.league | string | Liga (p. ej., mlb). Vacío cuando no existen capturas. |
data.home_team, data.away_team | string | Nombres de los equipos. Vacíos cuando no existen capturas. |
data.event_start_time | string | Hora de inicio programada en formato ISO 8601. |
data.captured_at | string | Marca de tiempo ISO 8601 de la primera captura (la primera casa de apuestas en cambiar el evento a en vivo). |
data.books | object | Mapa de book_id → ClosingOdd[]. {} vacío si no se ha capturado nada. |
Estructura de ClosingOdd
| Campo | Tipo | Descripción |
|---|---|---|
sportsbook | string | Identificador de la casa de apuestas (en minúsculas). |
market_type | string | P. ej., moneyline, spread, total, player_prop. |
selection | string | Etiqueta de la selección (p. ej., nombre del equipo, nombre del jugador, over, under). |
selection_type | string | home, away, over, under, etc. |
line | number? | Línea de spread o total, cuando corresponda. Se omite en moneylines. |
odds_american | integer | Cuotas en formato americano en el momento de la captura. |
odds_decimal | number | Cuotas en formato decimal (3 decimales). |
player_name | string? | Presente para player props. |
stat_category | string? | Categoría estadística (points, rebounds, etc.) para player props. |
Caché
Las respuestas se almacenan en caché en el edge durante 30s (s-maxage=30) y en el cliente durante 10s (max-age=10). Las instantáneas de cierre no cambian después de la captura, por lo que esto es seguro.
Códigos de Error
| Estado | Código | Significado |
|---|---|---|
| 400 | validation_error | event_id faltante o mal formado. |
| 401 | missing_api_key / invalid_api_key | Consulta Autenticación. |
| 403 | tier_restricted | Plan inferior a Pro. |
| 503 | not_ready | La captura de la línea de cierre no está disponible actualmente (p. ej., el almacén de respaldo es inalcanzable). Reintenta. |
Relacionado
/api/v1/historical/odds/closing— Enterprise; historial a largo plazo en ClickHouse más allá de la ventana de 48h./api/v1/historical/clv— Análisis CLV agregados entre oportunidades.