On the wire · 04:48:05 UTC Live 550 · Prematch 14,373 · Markets 57,036 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Réponse · Frontend · Sécurité

Cotes Pinnacle en JavaScript navigateur

Mis à jour le · PinnFeed · 2 min de lecture

Réponse : les réponses REST /v1/* incluent Access-Control-Allow-Origin: *, donc fetch() depuis une page ne déclenche pas d'erreur CORS. Le problème est la clé : tout le front est visible. Pour un site public, appelez PinnFeed depuis un petit serveur (ou serverless) qui détient PINNFEED_KEY et ne renvoie que le nécessaire. Les navigateurs ne peuvent pas poser d'en-têtes sur un WebSocket ; un socket navigateur aurait besoin de ?key= dans l'URL et exposerait la clé de la même façon.

OK pour un test privé#

<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 public : motif 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);

Un cache court évite que de nombreux visiteurs consomment votre rate limit (Free 1 req/s, Hobby 2, Builder 10, Pro 30). Proxies prêts : FastAPI, Cloudflare Worker, Supabase Edge.

Mises à jour live dans la page#

Gardez le WebSocket sur le serveur (Builder) et renvoyez seulement les changements au navigateur via votre WS ou SSE. Reconnect Node.

CTA#

Builder (99 €/mois). Essai 3 jours ; carte requise. REST gratuit : inscription. Clé fuite ? Faites-la tourner.

Questions fréquentes#

Puis-je restreindre une clé à mon domaine ?#

Pas de restriction par domaine — d'où le proxy comme motif sûr.

Le WebSocket envoie-t-il des en-têtes CORS ?#

CORS ne s'applique pas aux WebSockets ; le problème est la clé dans l'URL depuis le navigateur.

Contenu éducatif pour adultes ?#

Oui (18+).

Contenu éducatif pour adultes (18+) : ni pronostics ni promesse de gain. En France, seuls les opérateurs agréés par l'ANJ peuvent proposer des paris en ligne.

Le plan WebSocket : Builder, 99 €/mois.

Les cotes Pinnacle en temps réel sur un seul WebSocket : les 13 sports, tous les marchés, cotes justes sans marge et cotes de clôture. 3 jours gratuits, résiliable en 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.