On the wire · 05:07:18 UTC Live 585 · Prematch 14,345 · Markets 57,130 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Answer · WebSocket · Errors

Why does /v1/stream return 403?

Updated · PinnFeed · 1 min read

Answer: HTTP 403 with "error": "plan_lacks_ws" means that key is on Free or Hobby. Those plans have no WebSocket. Upgrade to Builder (€99/mo, VAT incl. where applicable, 3 connections) or Pro (10 connections), then connect to wss://pinnfeed.io/v1/stream with header x-api-key and send a subscribe frame within 30 seconds. If you only need snapshots, keep polling GET /v1/odds — Hobby is real-time REST; Free is delayed by about 30 seconds.

Working upgrade path#

# This fails on a Free or Hobby key:
curl -i -N -H "x-api-key: $PINNFEED_KEY" \
  "https://pinnfeed.io/v1/stream"
# Look for 403 and plan_lacks_ws, then start a Builder trial and retry on wss://
const ws = new WebSocket("wss://pinnfeed.io/v1/stream?key=" + process.env.PINNFEED_KEY);
ws.onopen = () => ws.send(JSON.stringify({
  type: "subscribe",
  sports: ["soccer"],
  live: true
}));

Prefer the x-api-key header from a server. Do not paste a paid key into a public page. Full client: Python WebSocket example. Other codes: error catalogue.

Do not confuse this with other closes#

What you seeMeaning
HTTP 403 plan_lacks_wsPlan has no WebSocket — upgrade
HTTP 401 invalid_key / missing_keyWrong or missing ps_live_ key
429 connection_limitBuilder already has 3 sockets open (Pro: 10)
Close code 4002You connected but did not subscribe within 30 s

Plans#

Builder trial: card required, charged after day 3 unless you cancel. Free REST: signup.

Educational content for adults (18+).

Questions people ask#

Does Hobby include the socket if I poll very fast?#

No. Hobby is real-time REST only. The stream stays 403 until the key is on Builder or Pro.

Is this educational content for adults?#

Yes (18+).

The WebSocket plan: Builder, €99/mo.

Real-time Pinnacle odds pushed over one WebSocket, all 13 sports, every market, no-vig fair odds and closing lines. 3 days free, cancel in one click.

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.