Growing Discord community — direct access to the developer, live coverage & picks. Join the Discord Join now →
Leagues Matches Predictions Stats Coverage
Docs / Getting Started

Authentication#

Every BSD API uses the same token. You get it once, and it works across the football API, all sport APIs, the Odds API, the MCP servers and the live WebSockets. Registration is free.

Get your token#

  1. Register at sports.bzzoiro.com/register/.
  2. Click the verification link we email you — your account is inactive until you do, and the token is created at this step.
  3. Open your dashboard and copy the API key. The dashboard also shows your add-on expiry dates and 30-day usage.

You can invalidate a leaked key and mint a new one at any time from the dashboard (Regenerate token). The old key stops working immediately.

Send the token#

Put the key in the Authorization header of every request:

curl -H "Authorization: Token YOUR_API_KEY" \
     "https://sports.bzzoiro.com/api/v2/events/?date_from=2026-08-02"
import requests

headers = {"Authorization": "Token YOUR_API_KEY"}
r = requests.get("https://sports.bzzoiro.com/api/v2/events/", headers=headers)
print(r.json())

Also accepted, in order of preference:

Method Example Notes
Authorization: Token <key> Authorization: Token abc123 Recommended
Authorization: Bearer <key> Authorization: Bearer abc123 For OAuth-style clients
?token=<key> query param /tennis/api/v2/matches/?token=abc123 Avoid — tokens end up in logs

WebSockets use the same key — see Connect to live WebSockets for the two transports (query param or WebSocket subprotocol).

What is free, what is paid#

Product Price What it unlocks
Free account $0 Football REST API (v1 + v2), football MCP, Image API, Signals API
Sports Addon $5/mo Tennis, CS2, darts, hockey, basketball and horse racing REST APIs + MCP servers
WebSocket addon $3/mo Live WebSocket channels (football + tennis)
Odds API $5/mo Multi-bookmaker odds feed at /odds/api/ — free for everyone until 2026-08-17

All add-ons are bought at /addons/. Payments stack: buying a month while you still have time left adds 30 days to your expiry.

Error responses#

401 — missing or invalid token

{
  "error": "authentication required",
  "code": "authentication_required",
  "detail": "Send Authorization: Token <YOUR_TOKEN> on every request.",
  "register": "https://sports.bzzoiro.com/register/"
}

402 — valid token, but the endpoint needs the Sports Addon

{
  "error": "Sports Addon required",
  "code": "addon_required",
  "detail": "Tennis, CS:GO, darts, hockey, basketball and horse racing APIs require the Sports Addon ($5/mo).",
  "pricing_url": "https://sports.bzzoiro.com/pricing/"
}

Note: the paid gate is 402 Payment Required, not 403. If your client special-cases 403, add 402 handling too.

Other errors follow one uniform shape — see Conventions & limits.

View this page as Markdown · Found a mistake? Tell us