On the wire · 04:47:47 UTC Live 550 · Prematch 14,364 · Markets 57,048 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Respuesta · Frontend · Seguridad

Cuotas Pinnacle en JavaScript del navegador

Actualizado el · PinnFeed · 1 min de lectura

Respuesta: las respuestas REST /v1/* incluyen Access-Control-Allow-Origin: *, así que fetch() desde una página no da error CORS. El problema es la clave: todo en el front es visible. En sitios públicos, llame a PinnFeed desde un servidor (o función serverless) que guarda PINNFEED_KEY y solo devuelve lo necesario. Los navegadores no pueden poner cabeceras en un WebSocket, así que un socket en el browser necesitaría ?key= en la URL y la expondría igual.

Vale para una prueba privada#

<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>

Sitio público: patrón 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);

Una caché corta evita que muchos visitantes gasten su rate limit (Free 1 req/s, Hobby 2, Builder 10, Pro 30). Proxies listos: FastAPI, Cloudflare Worker, Supabase Edge.

Actualizaciones live en la página#

Mantenga el WebSocket en el servidor (Builder) y reenvíe solo los cambios al browser por su propio WS o SSE. Reconnect Node.

CTA#

Builder (€99/mes). Prueba de 3 días; tarjeta requerida. REST gratis: signup. ¿Clave filtrada? Rótel a.

Preguntas frecuentes#

¿Puedo restringir una clave a mi dominio?#

No hay restricción por dominio; por eso el proxy es el patrón seguro.

¿El WebSocket envía cabeceras CORS?#

CORS no aplica a WebSockets; el problema es que la clave iría en la URL desde el browser.

¿Contenido educativo para adultos?#

Sí (18+).

Contenido educativo para mayores de 18 años. Sin pronósticos ni ganancias garantizadas. En España, apuesta solo con operadores con licencia de la DGOJ.

El plan WebSocket: Builder, 99 €/mes.

Cuotas de Pinnacle en tiempo real por un único WebSocket: los 13 deportes, todos los mercados, cuotas justas sin margen y cuotas de cierre. 3 días gratis y cancelas con un clic.

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.