Streaming bruto

O complemento da API WebSocket da Pinnacle precisa de um plano de recuperação.

Escolha frames brutos da API de odds da Pinnacle quando sua aplicação precisar manter o próprio estado de mercado. Escolha SSE quando quiser alertas processados de queda de odds. São produtos diferentes.

Atualizado em · Orientação baseada em fontes

Padrão de integração

Trecho de uso
const gate = new BaselineGate({
  onBaseline: records => startNewBaseline(records),
  onLive: frame => consumeRawFrame(frame),
});
// On every disconnect, the gate invalidates the old baseline.
// A reconnect subscribes again and waits for final snapshot chunks.
await runRecovery({ key: process.env.ODDS_API_KEY, gate });
// Application-specific functions above must implement raw market semantics.

Linhas longas rolam horizontalmente. Foque o código e use as setas do teclado.

Este trecho mostra apenas a interface. Seu código fornece o tratamento de frames, os limites de erro e o encerramento ao redor dele.

Confirme o plano base e o complemento

A Pinnacle data documenta o WebSocket bruto como um complemento cobrado separadamente para Snapshots REST, REST + SSE e REST de alto volume. O plano Alertas de queda SSE e os planos de teste não são planos base elegíveis para esse complemento. O streaming bruto não fornece automaticamente o produto de alertas SSE processados. Confira os direitos atuais da conta antes de abrir a conexão. A página de preços calcula as combinações elegíveis a partir da tabela de preços publicada. Conferido contra a documentação atual, 26 de setembro de 2026.

O endpoint documentado é uma URL de feed wss:, com a chave na query string da conexão. Mantenha essa conexão em um servidor confiável e omita a URL inteira dos logs. Este site nunca pede sua chave nem abre uma conexão no seu navegador.

Inscreva-se, estabeleça uma baseline e depois consuma

O serviço exige uma mensagem de inscrição logo após a abertura do socket; a documentação especifica cinco segundos. Envie imediatamente os streams solicitados e os filtros suportados. Use os IDs de esporte documentados: por exemplo, 1 é futebol, 2 tênis, 3 basquete e 4 hóquei. Um rótulo copiado de um trecho de marketing não é um contrato de esquema. Conferido contra a documentação atual, 26 de setembro de 2026.

Comece com um esporte ao vivo. Colete os blocos de snapshot usando seus marcadores seq e final antes de expor uma baseline completa, e responda a cada ping da aplicação com o pong documentado. Adicione um watchdog de inatividade, um prazo para o snapshot, um limite de tentativas de conexão e um orçamento total de execução, para que uma conexão silenciosa ou que falha repetidamente não possa rodar para sempre.

Não mostre um feed como pronto só porque a conexão TCP está aberta. Sua aplicação precisa tanto do transporte quanto de uma baseline utilizável. O trecho acima deixa o tratamento de frames específico da sua aplicação indefinido de propósito.

Uma reconexão invalida as suposições antigas

Em uma desconexão, marque a baseline local como inválida. Feche o socket antigo, reconecte dentro de um orçamento limitado, reinscreva-se e espere o novo snapshot ser concluído. Não continue apresentando estado obsoleto como atual enquanto isso acontece. Se não conseguir confirmar que o socket antigo fechou, pare de reconectar em vez de abrir um segundo: o serviço permite uma conexão WebSocket por conta, e uma nova conexão derruba a antiga.

Isso é recuperação por reconstrução de uma baseline. Não é replay garantido dos frames perdidos durante a interrupção. Não encontramos base para prometer replay durável ou entrega exatamente uma vez. Registre as lacunas no seu próprio sistema e decida se o trabalho a jusante deve pausar.

Encaminhar frames brutos não é reconstruir um mercado

Os registros ao vivo do feed usam rec.id; isso difere do event_id do REST. As atualizações de mercado podem ser parciais e incluir suas próprias chaves e versões. Um consumidor precisa interpretar a semântica de atualização e exclusão, mesclar na fronteira de mercado adequada e evitar substituir um evento inteiro por uma atualização parcial. Algumas descrições de canal na documentação conflitam; esclareça-as com o serviço antes de tratar o stream como um livro de trading. Conferido contra a documentação atual, 26 de setembro de 2026.

Encaminhar envelopes brutos validados depois do portão de baseline é só a primeira camada. Um motor completo de estado de mercado, a reconstrução pré-jogo, o tratamento de backpressure e a medição de desempenho ao vivo continuam sendo trabalho seu. Defina o tamanho máximo de mensagem do cliente deliberadamente: a documentação recomenda 8 MB, e o WebSocket nativo do Node não tem teto configurável de tamanho de frame, então limite as mensagens após o recebimento.

Teste as falhas que você pretende sobreviver

Antes do uso ao vivo, exercite um snapshot incompleto, um bloco duplicado, uma conexão derrubada, um socket travado, uma mensagem inválida e uma resposta de remoção da conta. Confirme que o encerramento interrompe novas tentativas. Depois rode a validação ao vivo autorizada pelo dono da conta contra a conta real. Se essas responsabilidades excederem suas necessidades, Snapshots REST ou alertas SSE podem ser um ponto de partida mais simples.

Seu próximo passo

Confira o encaixe. Depois obtenha acesso.

Confirme os mercados, o transporte e os termos de conta de que você precisa antes de escolher um plano.