SPORTSLUX

Docs

Getting started

Create an account, confirm your email, and tell us where you are. Every bet starts on paper: real prices, no money at stake. Set your own loss limits under Limits & location; the engine refuses any bet past them.

The bet finder

The finder (Pro) lists what our models price above the market right now, and arbitrage across venues. Each row shows the price, our fair price, the expected return per dollar and our confidence; rows are ranked by the two multiplied. Add rows to your slip to bet them on paper, or price two or more as a parlay: the builder warns when legs are on the same game, because they win and lose together and the parlay is worth less than its price suggests.

Paper and live

Live trading is opt-in. On the Live plan, with two-factor sign-in on, your limits set and a venue allowed where you are, you can ask to trade live; we review every request. Even then each order must pass every live check, including your own live caps, and you can go back to paper at any time.

The API

Create a key under Keys & sessions and send it as Authorization: Bearer slx_u_…. Read keys see your own data; trade keys can place paper bets through POST /api/v1/orders. Send an Idempotency-Key header on every write so a retry never places a bet twice.

Webhooks

Pro accounts can add webhooks under Notification settings. Each delivery is a JSON POST signed with your webhook's secret in X-Sportslux-Signature. Verify it before you trust the body:

import hashlib, hmac

def verify(secret: str, body: bytes, header: str) -> bool:
    expected = "sha256=" + hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header)

# verify(os.environ["SPORTSLUX_WEBHOOK_SECRET"], request.body,
#        request.headers["X-Sportslux-Signature"])

Answer with any 2xx within five seconds. We retry failures with backoff and switch a webhook off after ten failures in a row; sending a test turns it back on.

Docs · Sportslux