Odds Pinnacle em JavaScript no browser
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.