On the wire · 04:50:14 UTC Live 550 · Prematch 14,382 · Markets 56,987 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Resposta · Frontend · Segurança

Odds Pinnacle em JavaScript no browser

Atualizado em · PinnFeed · 1 min de leitura

Resposta: as respostas REST /v1/* incluem Access-Control-Allow-Origin: *, por isso fetch() numa página não dá erro CORS. O problema é a chave: tudo no front é visível. Em sites públicos, chame o PinnFeed a partir de um servidor (ou função serverless) que guarda PINNFEED_KEY e devolve só o necessário. Browsers não definem headers num WebSocket, logo um socket no browser precisaria de ?key= na URL e exporia a chave da mesma forma.

Ok para um teste privado#

<script>
fetch('https://pinnfeed.io/v1/odds?sport=tennis&market=moneyline&main=true&limit=5', {
  headers: { 'x-api-key': 'ps_live_your_key' }   // visible to anyone who opens this page
}).then(r => r.json()).then(d => console.log(d.events));
</script>

Site público: padrão proxy#

// server.js (Node 18+), run with PINNFEED_KEY in the environment
import http from 'node:http';
http.createServer(async (req, res) => {
  if (!req.url.startsWith('/odds')) { res.writeHead(404).end(); return; }
  const r = await fetch('https://pinnfeed.io/v1/odds?sport=tennis&market=moneyline&main=true&limit=20', {
    headers: { 'x-api-key': process.env.PINNFEED_KEY },
  });
  res.writeHead(r.status, { 'content-type': 'application/json', 'cache-control': 'max-age=5' });
  res.end(await r.text());
}).listen(3000);

Uma cache curta evita que muitos visitantes gastem o rate limit (Free 1 req/s, Hobby 2, Builder 10, Pro 30). Proxies prontos: FastAPI, Cloudflare Worker, Supabase Edge.

Updates live na página#

Mantenha o WebSocket no servidor (Builder) e reencaminhe só as mudanças ao browser pelo seu WS ou SSE. Reconnect Node.

CTA#

Builder (€99/mês). Teste de 3 dias; cartão obrigatório. REST gratis: signup. Chave exposta? Rode-a.

Perguntas frequentes#

Posso restringir uma chave ao meu domínio?#

Não há restrição por domínio; por isso o proxy é o padrão seguro.

O WebSocket envia headers CORS?#

CORS não se aplica a WebSockets; o problema é a chave na URL a partir do browser.

Conteúdo educativo para adultos?#

Sim (18+).

Conteúdo educativo para maiores de 18 anos. Sem palpites nem lucro garantido. No Brasil, aposte apenas em operadores autorizados pela SPA/MF.

O plano WebSocket: Builder, €99/mês.

Odds da Pinnacle em tempo real por um único WebSocket: os 13 esportes, todos os mercados, odds justas sem margem e odds de fechamento. 3 dias grátis, cancele com um clique.

Form K-1 · Free API key

Get your free API key.

One field. No password, no card: enter your email, click the link we send, and your key is on screen.

By continuing you agree to the Terms and Privacy Policy.

One free key per email. Link valid for 20 minutes.