Plan Sharp · REST · JSON
Documentation de l'API
Les données de votre tableau de bord, en JSON, avec les mêmes filtres (vos bookmakers, sinon ceux de votre pays et les internationaux) : opportunités du dernier scan (un scan par minute), surebets, combinés, et probabilités justes de chaque match (mises à jour toutes les 5 minutes). URL de base : https://proba.bet.
Authentification
Créez une clé dans Paramètres → API (plan Sharp, 3 clés actives maximum). Envoyez-la dans l'en-tête Authorization: Bearer. Le paramètre ?api_key= est accepté pour les tableurs, mais déconseillé : la clé finit alors dans les journaux et l'historique. La clé n'est affichée qu'une fois ; nous ne conservons que son empreinte SHA-256.
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/me"{ "plan": "sharp", "daily_limit": 20000, "remaining_today": 19999 }Quota
20 000 requêtes par clé et par jour (UTC), remises à zéro à 00:00 UTC. Chaque réponse réussie porte X-RateLimit-Limit et X-RateLimit-Remaining (une 429 aussi, avec Retry-After). Les opportunités changent au plus une fois par minute (cotes des bookmakers britanniques : toutes les 1 à 2 minutes), les probabilités des matchs toutes les 5 minutes : interroger plus vite ne sert à rien.
Points d'accès
| Endpoint | Paramètres | Renvoie |
|---|---|---|
GET /api/v1/me | — | plan, daily_limit, remaining_today |
GET /api/v1/opportunities | kind=value|surebet|combo (défaut value) · min_ev (fraction ; avantage pour value, défaut 0,02 ; profit pour surebet, défaut 0,005 ; ignoré pour combo) · sport (sans effet sur combo) · limit (≤ 1000, défaut 300) | kind, count, generated_at, data[] (event_id, sport_key, home, away, commence_time, market_key, outcome, point, book, book_title, price, link, fair_prob, fair_odds, ev, ev_expected, kelly, grade, flags, alt_books, exchange, first_seen, published_at… ; surebet : profit, legs[] ; combo : legs[]) |
GET /api/v1/matches | sport · hours (1–96, défaut 96 ; vainqueurs de tournoi ou de course jusqu'à 14 jours) · limit (≤ 1000, défaut 600) — ou id=<event_id> : une ligne par issue (market_key, line, outcome, point, fair_prob, fair_odds) | count, generated_at, data[] (event_id, home, away, commence_time, p_home, p_draw, p_away, total_line, p_over, p_under, source, matched, thin, kind, updated_at) |
Exemple : value bets
curl -H "Authorization: Bearer pb_live_xxxxxxxx" \
"https://proba.bet/api/v1/opportunities?kind=value&min_ev=0.02&sport=soccer_epl&limit=50"{
"kind": "value", "count": 12, "generated_at": "2026-09-19T21:03:44.120Z",
"data": [{
"event_id": "0ab3…", "sport_key": "soccer_epl", "home": "Arsenal", "away": "Chelsea", "commence_time": "2026-09-20T15:00:00+00:00",
"market_key": "h2h", "outcome": "Draw", "point": null,
"book": "unibet_fr", "book_title": "Unibet (FR)", "price": 3.60, "link": "https://…",
"fair_prob": 0.2914, "fair_odds": 3.43, "ev": 0.0490, "ev_expected": 0.0294, "kelly": 0.0113, "grade": "A", "flags": [],
"alt_books": [{ "book": "betclic_fr", "price": 3.55, "ev": 0.0344, "ev_expected": 0.0206, "grade": "A" }],
"first_seen": "2026-09-19T21:01:40+00:00", "published_at": "2026-09-19T21:02:41+00:00"
}]
}Seuls les paris jouables chez vos bookmakers (Paramètres) — à défaut, chez ceux de votre pays et les internationaux — sont renvoyés ; pour un surebet, toutes ses jambes. book / price / ev désignent la meilleure offre tous bookmakers confondus : prenez la vôtre dans book ou alt_books. grade A = sélection Babeth (suivie dans le track record public) ; B = publié avec des réserves (flags) ; C = à vérifier avant de parier. ev_expected = part de l'avantage attendue à la clôture (base de la mise) ; kelly = Kelly plein sur ev_expected ; published_at = heure du scan ; first_seen = première apparition. Les dates sont en ISO 8601 UTC.
Exemple : probabilités des matchs
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/matches?sport=soccer_epl&hours=48"
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/matches?id=0ab3c9d1"Erreurs
400— paramètre invalide (kind, id, sport)401 missing_or_invalid_api_key— en-tête Authorization absent ou clé mal formée401 unknown_api_key— clé inconnue ou révoquée403 plan_required:sharp— le compte de la clé n'est pas au plan Sharp429 daily_quota_exceeded— quota journalier atteint — remis à zéro à 00:00 UTC500 internal_error— erreur interne, réessayez503 upstream_unavailable— données momentanément indisponibles (/matches), réessayez dans une minute
Webhooks
Plutôt que d'interroger l'API, laissez Babeth vous appeler : dans Paramètres → Webhook, indiquez une URL HTTPS publique et laissez l'interrupteur Alertes activé. Chaque nouveau pari de la sélection chez vos bookmakers (mêmes filtres que vos alertes, heures calmes comprises) est envoyé avec votre mise. Un appel en échec (délai dépassé, code hors 2xx, redirection) est retenté au scan suivant ; après 5 échecs, l'envoi est suspendu 10 minutes. Un même pari peut exceptionnellement arriver deux fois : dédupliquez sur event_id + market_key + outcome + point.
POST https://example.com/proba (Settings → Webhook)
Content-Type: application/json
X-Proba-Event: picks | test
X-Proba-Signature: sha256=<HMAC-SHA256(secret, body)>
{
"event": "picks", "sent_at": "2026-09-20T09:00:12Z", "user_id": "…",
"picks": [{
"event_id": "0ab3…", "sport_key": "soccer_epl", "home": "Arsenal", "away": "Chelsea", "commence_time": "2026-09-20T15:00:00Z",
"sport_title": "EPL", "market_key": "h2h", "outcome": "Draw", "point": null,
"book": "unibet_fr", "book_title": "Unibet (FR)", "price": 3.60, "link": "https://…", "book_url": "https://…",
"fair_prob": 0.2914, "fair_odds": 3.43, "min_odds": 3.50, "ev": 0.049, "ev_expected": 0.0294, "grade": "A",
"stake": 3, "currency": "EUR", "exchange": null
}]
}Vérifiez la signature avant de faire confiance au message :
# Node.js
const sig = req.headers["x-proba-signature"]; // "sha256=…"
const mac = crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const a = Buffer.from(sig || ""), b = Buffer.from("sha256=" + mac);
const ok = a.length === b.length && crypto.timingSafeEqual(a, b);
# Python
ok = hmac.compare_digest(sig, "sha256=" + hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest())Répondez 2xx en moins de 5 secondes, sans redirection. L'événement `test` vient du bouton « Envoyer un test ».
Conditions
Usage personnel ou vos propres outils. Pas de revente des données ni de redistribution publique. Les clés peuvent être révoquées à tout moment depuis Paramètres. Données d'aide à la décision, aucune garantie de gain.
Besoin de l'API ?
Le plan Sharp inclut l'API, les mouvements de ligne, plusieurs bankrolls et le comparateur complet.