Skip to Content
Referência da APIOdds em Lote

Odds em Lote

Busca odds para múltiplos eventos em uma única requisição. Isso evita fazer chamadas de API separadas para cada evento, reduzindo a latência e o consumo de rate limit.

POST /api/v1/odds/batch

AutenticaçãoPermalink for this section

Requer API key. Disponível para todos os tiers.

Corpo da RequisiçãoPermalink for this section

Envie um corpo JSON com os seguintes campos:

CampoTipoObrigatórioDescrição
event_idsstring[]SimArray de IDs de eventos para buscar odds
sportsbookstringNãoFiltro de uma única casa de apostas (padrão: todas disponíveis para seu tier)
marketstringNãoFiltro de um único tipo de mercado (padrão: todos)

Limites de Lote por TierPermalink for this section

O número máximo de eventos por requisição em lote depende do seu tier:

TierMáx. de Eventos por Lote
Free10
Hobby10
Pro50
Sharp50
Enterprise100

Exceder o limite de lote para o seu tier retornará um erro 400 validation_error. Divida requisições grandes em múltiplos lotes, se necessário.

Exemplos de RequisiçõesPermalink for this section

curl -X POST "https://api.sharpapi.io/api/v1/odds/batch" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "event_ids": ["evt_nba_lal_bos_20260126", "evt_nba_gsw_mia_20260126"], "sportsbook": "draftkings", "market": "moneyline" }'

RespostaPermalink for this section

Sucesso (200)Permalink for this section

{ "success": true, "data": { "events": [ { "event_id": "evt_nba_lal_bos_20260126", "event_name": "Los Angeles Lakers @ Boston Celtics", "sport": "basketball", "league": "nba", "start_time": "2026-01-26T19:30:00Z", "is_live": false, "odds": [ { "sportsbook": "draftkings", "market_type": "moneyline", "selection": "Boston Celtics", "selection_type": "home", "odds_american": -210, "odds_decimal": 1.476, "line": null, "timestamp": "2026-01-26T10:15:00.000Z" }, { "sportsbook": "draftkings", "market_type": "moneyline", "selection": "Los Angeles Lakers", "selection_type": "away", "odds_american": 175, "odds_decimal": 2.75, "line": null, "timestamp": "2026-01-26T10:15:00.000Z" } ] }, { "event_id": "evt_nba_gsw_mia_20260126", "event_name": "Golden State Warriors @ Miami Heat", "sport": "basketball", "league": "nba", "start_time": "2026-01-26T20:00:00Z", "is_live": false, "odds": [ { "sportsbook": "draftkings", "market_type": "moneyline", "selection": "Miami Heat", "selection_type": "home", "odds_american": -130, "odds_decimal": 1.769, "line": null, "timestamp": "2026-01-26T10:15:05.000Z" } ] } ], "missing_events": [] }, "meta": { "requested": 2, "found": 2, "missing": 0, "max_batch": 50, "filters": { "sportsbook": "draftkings", "market": "moneyline" }, "updated_at": "2026-01-26T10:15:05.000Z" } }

Cabeçalhos de RespostaPermalink for this section

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 296 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_batch_abc123

Respostas de ErroPermalink for this section

400 Limite de Lote Excedido

{ "error": { "code": "validation_error", "message": "Batch limit exceeded. Your tier (hobby) allows 10 events per batch, but 25 were requested.", "docs": "https://docs.sharpapi.io/en/api-reference/odds-batch" } }

400 Campo de Eventos Ausente

{ "error": { "code": "validation_error", "message": "The 'event_ids' field is required and must be a non-empty array of event IDs.", "docs": "https://docs.sharpapi.io/en/api-reference/odds-batch" } }

401 Não Autorizado

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key", "docs": "https://docs.sharpapi.io/en/authentication" } }

Estrutura da RespostaPermalink for this section

A resposta em lote aninha eventos e IDs ausentes em data, com contagens em meta:

Objeto DataPermalink for this section

CampoTipoDescrição
data.eventsEventOdds[]Array de objetos de evento com odds aninhadas
data.missing_eventsstring[]IDs de eventos que não foram encontrados ou não tinham odds

Objeto MetaPermalink for this section

CampoTipoDescrição
meta.requestedintegerNúmero de IDs de eventos na sua requisição
meta.foundintegerNúmero de eventos que tinham dados de odds
meta.missingintegerNúmero de eventos não encontrados
meta.max_batchintegerTamanho máximo de lote para seu tier
meta.filtersobjectFiltros aplicados (sportsbook, market)

Se um ID de evento na sua requisição não tiver odds (ex.: o evento já terminou ou não existe), ele aparecerá em data.missing_events em vez de causar um erro. A resposta ainda incluirá odds para todos os eventos válidos.

Schema de RespostaPermalink for this section

Cada item no array data.events é um objeto de evento com odds aninhadas:

Objeto EventPermalink for this section

CampoTipoDescrição
event_idstringIdentificador do evento
event_namestringNome legível do evento
sportstringSlug do esporte
leaguestringSlug da liga
start_timestringHorário de início do evento em ISO 8601
is_livebooleanSe o evento está ao vivo
game_stateobject | undefinedEstado do jogo ao vivo (apenas para eventos ao vivo com placar)
oddsarrayArray de odds para este evento

Objeto Odds (aninhado no evento)Permalink for this section

CampoTipoDescrição
sportsbookstringID da casa de apostas
market_typestringTipo de mercado
selectionstringNome da seleção
selection_typestringhome, away, over, under
odds_americannumberOdds americanas
odds_decimalnumberOdds decimais
linenumber | nullValor da linha
timestampstringHorário ISO 8601 em que a SharpAPI atualizou esta odd pela última vez através do seu pipeline — avança a cada ciclo de ingestão. É um sinal de frescor / liveness do feed (corresponde ao timestamp da OpticOdds); não é quando o preço mudou pela última vez. Veja Entendendo o campo timestamp.

Casos de UsoPermalink for this section

Carregamento de Odds Pré-JogoPermalink for this section

Carregue odds para a programação inteira de um dia em uma única chamada, em vez de fazer dezenas de requisições individuais:

# Get all NBA event IDs from the events endpoint events_response = requests.get( 'https://api.sharpapi.io/api/v1/events', params={'league': 'nba', 'limit': 50}, headers={'X-API-Key': 'YOUR_API_KEY'} ) event_ids = [e['id'] for e in events_response.json()['data']] # Batch fetch all odds at once odds_response = requests.post( 'https://api.sharpapi.io/api/v1/odds/batch', headers={'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json'}, json={'event_ids': event_ids} )

Atualização de DashboardPermalink for this section

Atualize periodicamente as odds dos eventos que um usuário está acompanhando:

async function refreshWatchlist(eventIds) { const response = await fetch('https://api.sharpapi.io/api/v1/odds/batch', { method: 'POST', headers: { 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ event_ids: eventIds }) }); const { data, meta } = await response.json(); if (data.missing_events.length > 0) { console.warn('Missing events:', data.missing_events); } return data.events; }

Endpoints RelacionadosPermalink for this section

  • Snapshot de Odds - Obtenha odds com filtros de consulta flexíveis
  • Melhores Odds - Obtenha as melhores odds entre casas por seleção
  • Eventos - Liste eventos para obter IDs de eventos para requisições em lote
Last updated on