Resumo de Middles
Obtenha estatísticas agregadas de oportunidades atuais de middles sem a lista completa. Usa os mesmos dados subjacentes do endpoint Middles.
GET /api/v1/opportunities/middles/summaryAutenticação
Requer API key. Tier Pro ou superior obrigatório.
Parâmetros de Consulta
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sport | string | all | Filtrar por esporte (ex.: basketball, football) |
league | string | all | Filtrar por liga (ex.: nba, nfl, nhl) |
Exemplos de Requisições
cURL
curl -X GET "https://api.sharpapi.io/api/v1/opportunities/middles/summary?league=nfl" \
-H "X-API-Key: YOUR_API_KEY"Resposta
Sucesso (200)
{
"success": true,
"data": {
"total": 47,
"positive_ev_count": 38,
"guaranteed_profit_count": 2,
"player_prop_count": 12,
"by_sport": {
"football": 18,
"basketball": 15,
"hockey": 8,
"baseball": 6
},
"by_market": {
"point_spread": 22,
"total_points": 13,
"player_points": 7,
"player_rebounds": 5
},
"by_sportsbook": {
"draftkings": 34,
"fanduel": 31,
"betmgm": 22,
"caesars": 18,
"bet365": 15
},
"avg_middle_size": 1.8,
"avg_probability": 0.1245,
"avg_ev": 4.72,
"best_ev": {
"ev": 31.52,
"sport": "football",
"market": "point_spread"
},
"has_key_numbers_count": 14
},
"meta": {
"source": "cache",
"filters": {
"sport": null,
"league": ["nfl"]
},
"updated_at": "2026-02-17T19:45:30Z"
}
}Cabeçalhos da Resposta
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 296
X-RateLimit-Reset: 1707401000
X-Data-Delay: 0
X-Request-Id: req_msum789defRespostas de Erro
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key",
"docs": "https://docs.sharpapi.io/en/authentication"
}
}403 Tier Required
{
"error": {
"code": "tier_restricted",
"message": "Middles detection requires Pro tier or higher",
"docs": "https://docs.sharpapi.io/en/pricing"
}
}Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
total | integer | Número total de middles atuais |
positive_ev_count | integer | Middles com valor esperado positivo |
guaranteed_profit_count | integer | Middles que também são oportunidades de arbitragem |
player_prop_count | integer | Middles em mercados de player props |
by_sport | object | Contagem de middles por esporte |
by_market | object | Contagem de middles por tipo de mercado |
by_sportsbook | object | Contagem de middles por sportsbook (cada book em um middle é contado) |
avg_middle_size | number | Tamanho médio do gap do middle em pontos |
avg_probability | number | Probabilidade média de os middles acertarem |
avg_ev | number | Valor esperado médio por $100 apostados |
best_ev | object|null | Resumo da oportunidade com maior EV |
best_ev.ev | number | EV em dólares por $100 apostados |
best_ev.sport | string | Esporte do middle com maior EV |
best_ev.market | string | Tipo de mercado do middle com maior EV |
has_key_numbers_count | integer | Middles contendo números-chave específicos do esporte |
Casos de Uso
Visão Geral do Dashboard
Use o endpoint de resumo para alimentar widgets de dashboard mostrando contagens de oportunidades de middles, divisões e médias sem buscar a lista completa.
Polling vs Busca Completa
Faça polling no endpoint de resumo em intervalos mais curtos para detectar quando novas oportunidades aparecem, depois busque o endpoint completo de Middles somente quando a contagem mudar.
// Poll summary every 10 seconds
let lastCount = 0;
setInterval(async () => {
const summary = await fetchMiddlesSummary();
if (summary.data.total !== lastCount) {
lastCount = summary.data.total;
const middles = await fetchMiddles(); // Full fetch
updateUI(middles);
}
}, 10000);O endpoint de resumo é armazenado em cache por 10 segundos e conta para o seu rate limit da mesma forma que o endpoint completo de middles.
Endpoints Relacionados
- Middles — Lista completa de oportunidades de middles
- Oportunidades +EV — Apostas com valor esperado positivo
- Oportunidades de Arbitragem — Oportunidades de lucro garantido
- Stream SSE — Eventos
middles:detectedemiddles:expiredem tempo real
Last updated on