Obtenir une clé →

API Platform

Analyses algorithmiques temps réel pour LuckyJet et RocketQueen. Analysez le marché, récupérez les signaux et intégrez dans votre application en quelques lignes.

Developer quickstart

Obtenez votre première analyse en moins de 2 minutes. Créez votre compte, générez une clé et faites votre premier appel.

Commencer →
javascript
const market = await fetch(
  'https://allpredictor.com/api/v1/luckyjet/market',
  { headers: { 'X-API-Key': process.env.ALLPREDICTOR_KEY } }
).then(r => r.json());

if (market.level !== 'danger') {
  const pred = await fetch(
    'https://allpredictor.com/api/v1/luckyjet/predict',
    { headers: { 'X-API-Key': process.env.ALLPREDICTOR_KEY } }
  ).then(r => r.json());
  console.log(`✅ Cible : ${pred.predicted_coef}x`);
}
Base URL https://allpredictor.com/api/v1 Production
⚠️
Système probabiliste. Les analyses sont fondées sur des analyses statistiques et ne garantissent pas le résultat. +18 ans uniquement.
Démarrage

Démarrage rapide

Trois étapes pour votre première analyse.

1
Créer un compte
Rendez-vous sur allpredictor.com/auth et créez votre compte développeur gratuitement.
2
Générer une clé API
Dashboard → Mes clés API → Nouvelle clé. La clé ne s'affiche qu'une fois — copiez-la immédiatement.
3
Faire votre première requête
Passez la clé dans le header X-API-Key. Commencez par /market pour vérifier les conditions avant /predict.
# 1. Vérifier le marché
curl https://allpredictor.com/api/v1/luckyjet/market \
  -H "X-API-Key: ap_votre_clé"

# 2. Récupérer la analyse si marché safe/warn
curl https://allpredictor.com/api/v1/luckyjet/predict \
  -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HEADERS = { 'X-API-Key': process.env.ALLPREDICTOR_KEY };

const market = await fetch(`${BASE}/luckyjet/market`,
  { headers: HEADERS }).then(r => r.json());

if (market.level !== 'danger') {
  const pred = await fetch(`${BASE}/luckyjet/predict`,
    { headers: HEADERS }).then(r => r.json());
  console.log(`✅ Cible : ${pred.predicted_coef}x à ${pred.bet_time}`);
}
import axios from 'axios';

const api = axios.create({
  baseURL: 'https://allpredictor.com/api/v1',
  headers: { 'X-API-Key': process.env.ALLPREDICTOR_KEY },
  timeout: 5000,
});

const { data: market } = await api.get('/luckyjet/market');
if (market.level !== 'danger') {
  const { data: pred } = await api.get('/luckyjet/predict');
  console.log(pred.predicted_coef, pred.signal);
}
function apGet($path) {
  $ch = curl_init();
  curl_setopt_array($ch, [
    CURLOPT_URL            => "https://allpredictor.com/api/v1{$path}",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['X-API-Key: ap_votre_clé'],
    CURLOPT_TIMEOUT        => 5,
  ]);
  $data = json_decode(curl_exec($ch), true);
  curl_close($ch);
  return $data;
}

$market = apGet('/luckyjet/market');
if ($market['level'] !== 'danger') {
  $pred = apGet('/luckyjet/predict');
  echo "Cible : {$pred['predicted_coef']}x\n";
}
import requests

BASE = "https://allpredictor.com/api/v1"
HDR  = {"X-API-Key": "ap_votre_clé"}

market = requests.get(f"{BASE}/luckyjet/market",
    headers=HDR, timeout=5).json()

if market["level"] != "danger":
    pred = requests.get(f"{BASE}/luckyjet/predict",
        headers=HDR, timeout=5).json()
    print(f"Cible : {pred['predicted_coef']}x")
import 'package:dio/dio.dart';

final dio = Dio(BaseOptions(
  baseUrl: 'https://allpredictor.com/api/v1',
  headers: {'X-API-Key': 'ap_votre_clé'},
  connectTimeout: const Duration(seconds: 5),
));

final market = (await dio.get('/luckyjet/market')).data;
if (market['level'] != 'danger') {
  final pred = (await dio.get('/luckyjet/predict')).data;
  print('Cible : \${pred["predicted_coef"]}x');
}
import 'dart:convert';
import 'package:http/http.dart' as http;

final headers = {'X-API-Key': 'ap_votre_clé'};
final base = 'https://allpredictor.com/api/v1';

final mRes = await http.get(Uri.parse('$base/luckyjet/market'), headers: headers);
final market = jsonDecode(mRes.body);

if (market['level'] != 'danger') {
  final pRes = await http.get(Uri.parse('$base/luckyjet/predict'), headers: headers);
  final pred = jsonDecode(pRes.body);
  print('Cible : \${pred["predicted_coef"]}x');
}
require 'net/http'
require 'json'

def ap_get(path)
  uri = URI("https://allpredictor.com/api/v1#{path}")
  req = Net::HTTP::Get.new(uri)
  req['X-API-Key'] = 'ap_votre_clé'
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
  JSON.parse(res.body)
end

market = ap_get('/luckyjet/market')
if market['level'] != 'danger'
  pred = ap_get('/luckyjet/predict')
  puts "Cible : #{pred['predicted_coef']}x"
end
package main

import (
  "encoding/json"; "fmt"; "io"; "net/http"; "time"
)

var client = &http.Client{Timeout: 5 * time.Second}

func apGet(path string) map[string]any {
  req, _ := http.NewRequest("GET",
    "https://allpredictor.com/api/v1"+path, nil)
  req.Header.Set("X-API-Key", "ap_votre_clé")
  res, _ := client.Do(req)
  defer res.Body.Close()
  b, _ := io.ReadAll(res.Body)
  var d map[string]any
  json.Unmarshal(b, &d)
  return d
}

func main() {
  m := apGet("/luckyjet/market")
  if m["level"] != "danger" {
    p := apGet("/luckyjet/predict")
    fmt.Println("Cible :", p["predicted_coef"])
  }
}
import okhttp3.*
import org.json.JSONObject

val client = OkHttpClient.Builder()
  .callTimeout(5, java.util.concurrent.TimeUnit.SECONDS).build()

fun apGet(path: String): JSONObject {
  val req = Request.Builder()
    .url("https://allpredictor.com/api/v1$path")
    .addHeader("X-API-Key", "ap_votre_clé").build()
  return JSONObject(client.newCall(req).execute().body?.string()!!)
}

fun main() {
  val market = apGet("/luckyjet/market")
  if (market.getString("level") != "danger") {
    val pred = apGet("/luckyjet/predict")
    println("Cible : ${pred.getDouble("predicted_coef")}x")
  }
}
import Foundation

func apGet(_ path: String) async throws -> [String: Any] {
  var req = URLRequest(url: URL(string:
    "https://allpredictor.com/api/v1\(path)")!)
  req.setValue("ap_votre_clé", forHTTPHeaderField: "X-API-Key")
  req.timeoutInterval = 5
  let (data, _) = try await URLSession.shared.data(for: req)
  return try JSONSerialization.jsonObject(with: data) as! [String: Any]
}

let market = try await apGet("/luckyjet/market")
if market["level"] as? String != "danger" {
  let pred = try await apGet("/luckyjet/predict")
  print("Cible : \(pred["predicted_coef"]!)x")
}
const https = require('https');

function apGet(path) {
  return new Promise((resolve, reject) => {
    const req = https.request({
      hostname: 'allpredictor.com',
      path: `/api/v1${path}`,
      headers: { 'X-API-Key': process.env.ALLPREDICTOR_KEY },
    }, res => {
      let body = '';
      res.on('data', d => body += d);
      res.on('end', () => resolve(JSON.parse(body)));
    });
    req.on('error', reject);
    req.end();
  });
}

const market = await apGet('/luckyjet/market');
if (market.level !== 'danger') {
  const pred = await apGet('/luckyjet/predict');
  console.log(`Cible : ${pred.predicted_coef}x`);
}
Authentification

Clé API — X-API-Key

Toutes les requêtes nécessitent votre clé API dans le header HTTP X-API-Key. Sans clé valide, l'API retourne immédiatement un 401 Unauthorized.

Propriété Valeur
Header X-API-Key
Préfixe ap_
Longueur 50 caractères
Exemple ap_a3f8b2c1d4e5f607891a2b3c4d5e6f7a8b9c0d1
🔒
Sécurité : ne codez jamais la clé en dur. Utilisez des variables d'environnement (process.env.ALLPREDICTOR_KEY). Une clé par environnement (dev/staging/prod) pour permettre la révocation ciblée.
curl https://allpredictor.com/api/v1/luckyjet/predict \
  -H "X-API-Key: ap_votre_clé"
const headers = { 'X-API-Key': process.env.ALLPREDICTOR_KEY };
const res = await fetch(url, { headers });
if (res.status === 401)
  throw new Error('Clé invalide — vérifiez votre dashboard');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: ap_votre_clé']);
headers = {"X-API-Key": "ap_votre_clé"}
response = requests.get(url, headers=headers, timeout=5)
response.raise_for_status()
Options(headers: {'X-API-Key': 'ap_votre_clé'})
req.Header.Set("X-API-Key", "ap_votre_clé")
LuckyJet

Analyse en temps réel

GEThttps://allpredictor.com/api/v1/luckyjet/predict

Retourne la analyse courante générée par le moteur algorithmique. Mettez en cache 30–60 s côté client via generated_at.

Champs de la réponse

Champ Type Plage Description
predicted_coef float ≥ 1.01 Encaissez avant que le jeu atteigne ce multiplicateur.
confidence integer 0–100 Score de confiance. <60 = peu fiable.
signal enum safe / warn / danger
bet_time string HH:MM Heure locale optimale.
market_score integer 0–100 Score synthétique du marché.
avg_recent_coef float Moyenne des 8 derniers rounds.
generated_at datetime ISO 8601 UTC Timestamp de génération — base du cache.

Signaux de marché

safe
market_score ≥ 70
Conditions favorables.
warn
30 ≤ score < 70
Réduire la mise.
danger
score < 30
Ne pas miser.
curl -X GET "https://allpredictor.com/api/v1/luckyjet/predict" \
  -H "X-API-Key: ap_votre_clé"
const res = await fetch('https://allpredictor.com/api/v1/luckyjet/predict',
  { headers: { 'X-API-Key': process.env.ALLPREDICTOR_KEY } });
const data = await res.json();
if (data.signal === 'safe' && data.confidence >= 70)
  console.log(`✅ Cible : ${data.predicted_coef}x à ${data.bet_time}`);
const { data } = await axios.get('/luckyjet/predict');
console.log(data.predicted_coef, data.signal);
$data = apGet('/luckyjet/predict');
echo "Signal: {$data['signal']} | Cible: {$data['predicted_coef']}x\n";
data = requests.get(
    "https://allpredictor.com/api/v1/luckyjet/predict",
    headers={"X-API-Key": "ap_votre_clé"}, timeout=5
).json()
print(f"Signal: {data['signal']} | Cible: {data['predicted_coef']}x")
final res = (await dio.get('/luckyjet/predict')).data;
print('Cible : \${res["predicted_coef"]}x');
final res = await http.get(
  Uri.parse('https://allpredictor.com/api/v1/luckyjet/predict'),
  headers: {'X-API-Key': 'ap_votre_clé'},
);
final data = jsonDecode(res.body);
data = ap_get('/luckyjet/predict')
puts "Cible : #{data['predicted_coef']}x"
p := apGet("/luckyjet/predict")
fmt.Println(p["predicted_coef"], p["signal"])
val pred = apGet("/luckyjet/predict")
println(pred.getString("signal"))
let pred = try await apGet("/luckyjet/predict")
print(pred["predicted_coef"]!, pred["signal"]!)
const pred = await apGet('/luckyjet/predict');
console.log(pred.predicted_coef, pred.signal);
Réponse 200 — OK
200 OKSignal safe
{
  "success": true,
  "predicted_coef": 2.45,
  "confidence": 87,
  "bet_time": "14:32",
  "market_score": 82,
  "signal": "safe",
  "avg_recent_coef": 2.31,
  "generated_at": "2025-03-15T14:30:00.000Z"
}
LuckyJet

Analyse du marché

GET…/api/v1/luckyjet/market

État courant du marché. À appeler avant /predict.

Champ Type Description
score integer 0–100 Score synthétique. Hausse sur tendance positive, chute sur pertes consécutives.
level enum safe ≥70 · warn 30–69 · danger <30
reason string Explication naturelle affichable à l'utilisateur.
consecutive_losses integer Pertes consécutives. ≥2 = pause recommandée.
avg_coef float Coefficient moyen des derniers rounds.
trend float Tendance : positif = haussier, négatif = baissier.
curl https://allpredictor.com/api/v1/luckyjet/market -H "X-API-Key: ap_votre_clé"
const m = await fetch('https://allpredictor.com/api/v1/luckyjet/market',{headers:{'X-API-Key':process.env.ALLPREDICTOR_KEY}}).then(r=>r.json());
$m = apGet('/luckyjet/market');
m = requests.get("https://allpredictor.com/api/v1/luckyjet/market",headers={"X-API-Key":"ap_votre_clé"}).json()
final m = (await dio.get('/luckyjet/market')).data;
m := apGet("/luckyjet/market")
Réponse 200
200 OKMarché favorable
{ "success":true, "score":82, "level":"safe", "reason":"Tendance haussière sur les 5 derniers rounds", "consecutive_losses":0, "avg_coef":2.87, "trend":0.42 }
LuckyJet

Historique des analyses

GET…/api/v1/luckyjet/history

Analyses passées avec coefficient réel constaté et taux de précision global.

Paramètre Type Requis Défaut Max
limit integer optionnel 50 200
curl "https://allpredictor.com/api/v1/luckyjet/history?limit=20" -H "X-API-Key: ap_votre_clé"
const { data, accuracy_percent } = await fetch('https://allpredictor.com/api/v1/luckyjet/history?limit=20',{headers:{'X-API-Key':process.env.ALLPREDICTOR_KEY}}).then(r=>r.json());
console.log(`Précision: ${accuracy_percent}%`);
$h=apGet('/luckyjet/history?limit=20'); echo "Précision: {$h['accuracy_percent']}%\n";
h = requests.get("https://allpredictor.com/api/v1/luckyjet/history",params={"limit":20},headers={"X-API-Key":"ap_votre_clé"}).json()
final h = (await dio.get('/luckyjet/history',queryParameters:{'limit':20})).data;
Réponse 200
200 OK
{ "success":true, "total":10, "accuracy_percent":87, "data":[{ "predicted_coef":3.20, "real_coef":3.86, "status":"ok", "timestamp":"2025-03-15T14:32:00Z" }] }
LuckyJet

Coefficients en temps réel

GET…/api/v1/luckyjet/coefficients

Flux des vrais coefficients des derniers rounds avec statistiques agrégées. Paramètre limit (défaut 20, max 100).

curl "https://allpredictor.com/api/v1/luckyjet/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const{stats,data}=await fetch('https://allpredictor.com/api/v1/luckyjet/coefficients?limit=20',{headers:{'X-API-Key':process.env.ALLPREDICTOR_KEY}}).then(r=>r.json());
c=requests.get("https://allpredictor.com/api/v1/luckyjet/coefficients",params={"limit":20},headers={"X-API-Key":"ap_votre_clé"}).json()
$c=apGet('/luckyjet/coefficients?limit=20');
final c=(await dio.get('/luckyjet/coefficients',queryParameters:{'limit':20})).data;
RocketQueen

RocketQueen — 4 endpoints

🔁
Structure identique à LuckyJet. Remplacez simplement luckyjet par rocketqueen dans toutes les URLs. Schémas, paramètres et codes d'erreur strictement identiques.
GET…/api/v1/rocketqueen/predict
GET…/api/v1/rocketqueen/market
GET…/api/v1/rocketqueen/history ?limit=50
GET…/api/v1/rocketqueen/coefficients ?limit=20
curl https://allpredictor.com/api/v1/rocketqueen/predict -H "X-API-Key: ap_votre_clé"
curl https://allpredictor.com/api/v1/rocketqueen/market -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/rocketqueen/history?limit=50" -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/rocketqueen/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HDR  = {'X-API-Key': process.env.ALLPREDICTOR_KEY};
const pred = await fetch(`${BASE}/rocketqueen/predict`,{headers:HDR}).then(r=>r.json());
$pred=apGet('/rocketqueen/predict');
$market=apGet('/rocketqueen/market');
pred=requests.get("https://allpredictor.com/api/v1/rocketqueen/predict",headers={"X-API-Key":"ap_votre_clé"}).json()
final pred=(await dio.get('/rocketqueen/predict')).data;
pred := apGet("/rocketqueen/predict")
Crash

Crash — 4 endpoints

🔁
Structure identique à LuckyJet. Remplacez simplement luckyjet par crash dans toutes les URLs. Schémas, paramètres et codes d'erreur strictement identiques.
GET…/api/v1/crash/predict
GET…/api/v1/crash/market
GET…/api/v1/crash/history ?limit=50
GET…/api/v1/crash/coefficients ?limit=20
curl https://allpredictor.com/api/v1/crash/predict -H "X-API-Key: ap_votre_clé"
curl https://allpredictor.com/api/v1/crash/market -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/crash/history?limit=50" -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/crash/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HDR  = {'X-API-Key': process.env.ALLPREDICTOR_KEY};
const pred = await fetch(`${BASE}/crash/predict`,{headers:HDR}).then(r=>r.json());
$pred=apGet('/crash/predict');
$market=apGet('/crash/market');
pred=requests.get("https://allpredictor.com/api/v1/crash/predict",headers={"X-API-Key":"ap_votre_clé"}).json()
final pred=(await dio.get('/crash/predict')).data;
pred := apGet("/crash/predict")
Astronaut

Astronaut — 4 endpoints

🔁
Structure identique à LuckyJet. Remplacez simplement luckyjet par astronaut dans toutes les URLs. Schémas, paramètres et codes d'erreur strictement identiques.
GET…/api/v1/astronaut/predict
GET…/api/v1/astronaut/market
GET…/api/v1/astronaut/history ?limit=50
GET…/api/v1/astronaut/coefficients ?limit=20
curl https://allpredictor.com/api/v1/astronaut/predict -H "X-API-Key: ap_votre_clé"
curl https://allpredictor.com/api/v1/astronaut/market -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/astronaut/history?limit=50" -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/astronaut/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HDR  = {'X-API-Key': process.env.ALLPREDICTOR_KEY};
const pred = await fetch(`${BASE}/astronaut/predict`,{headers:HDR}).then(r=>r.json());
$pred=apGet('/astronaut/predict');
$market=apGet('/astronaut/market');
pred=requests.get("https://allpredictor.com/api/v1/astronaut/predict",headers={"X-API-Key":"ap_votre_clé"}).json()
final pred=(await dio.get('/astronaut/predict')).data;
pred := apGet("/astronaut/predict")
Meta Crash

Meta Crash — 4 endpoints

🔁
Structure identique à LuckyJet. Remplacez simplement luckyjet par meta dans toutes les URLs. Schémas, paramètres et codes d'erreur strictement identiques.
GET…/api/v1/meta/predict
GET…/api/v1/meta/market
GET…/api/v1/meta/history ?limit=50
GET…/api/v1/meta/coefficients ?limit=20
curl https://allpredictor.com/api/v1/meta/predict -H "X-API-Key: ap_votre_clé"
curl https://allpredictor.com/api/v1/meta/market -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/meta/history?limit=50" -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/meta/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HDR  = {'X-API-Key': process.env.ALLPREDICTOR_KEY};
const pred = await fetch(`${BASE}/meta/predict`,{headers:HDR}).then(r=>r.json());
$pred=apGet('/meta/predict');
$market=apGet('/meta/market');
pred=requests.get("https://allpredictor.com/api/v1/meta/predict",headers={"X-API-Key":"ap_votre_clé"}).json()
final pred=(await dio.get('/meta/predict')).data;
pred := apGet("/meta/predict")
Tropicana

Tropicana — 4 endpoints

🔁
Structure identique à LuckyJet. Remplacez simplement luckyjet par tropicana dans toutes les URLs. Schémas, paramètres et codes d'erreur strictement identiques.
GET…/api/v1/tropicana/predict
GET…/api/v1/tropicana/market
GET…/api/v1/tropicana/history ?limit=50
GET…/api/v1/tropicana/coefficients ?limit=20
curl https://allpredictor.com/api/v1/tropicana/predict -H "X-API-Key: ap_votre_clé"
curl https://allpredictor.com/api/v1/tropicana/market -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/tropicana/history?limit=50" -H "X-API-Key: ap_votre_clé"
curl "https://allpredictor.com/api/v1/tropicana/coefficients?limit=20" -H "X-API-Key: ap_votre_clé"
const BASE = 'https://allpredictor.com/api/v1';
const HDR  = {'X-API-Key': process.env.ALLPREDICTOR_KEY};
const pred = await fetch(`${BASE}/tropicana/predict`,{headers:HDR}).then(r=>r.json());
$pred=apGet('/tropicana/predict');
$market=apGet('/tropicana/market');
pred=requests.get("https://allpredictor.com/api/v1/tropicana/predict",headers={"X-API-Key":"ap_votre_clé"}).json()
final pred=(await dio.get('/tropicana/predict')).data;
pred := apGet("/tropicana/predict")
Utilitaires

Valider une clé API

POST…/api/v1/validate-key

Vérifie si une clé est active et retourne plan et quota restant. À appeler au démarrage de votre bot.

curl -X POST https://allpredictor.com/api/v1/validate-key -H "X-API-Key: ap_votre_clé"
const{valid,plan,requests_remaining}=await fetch('https://allpredictor.com/api/v1/validate-key',{method:'POST',headers:{'X-API-Key':process.env.ALLPREDICTOR_KEY}}).then(r=>r.json());
if(!valid)throw new Error('Clé invalide');
console.log(`Plan ${plan} — ${requests_remaining??'∞'} req`);
$ch=curl_init();curl_setopt_array($ch,[CURLOPT_URL=>"https://allpredictor.com/api/v1/validate-key",CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_HTTPHEADER=>["X-API-Key: ap_votre_clé"]]);
$r=json_decode(curl_exec($ch),true);curl_close($ch);
if(!$r['valid'])die("Clé invalide\n");echo"Plan {$r['plan']}\n";
r=requests.post("https://allpredictor.com/api/v1/validate-key",headers={"X-API-Key":"ap_votre_clé"}).json()
if not r["valid"]:raise ValueError("Clé invalide")
print(f"Plan {r['plan']}")
final r=(await dio.post('/validate-key')).data;
if(!r['valid'])throw Exception('Clé invalide');
uri=URI('https://allpredictor.com/api/v1/validate-key');req=Net::HTTP::Post.new(uri);req['X-API-Key']='ap_votre_clé'
r=JSON.parse(Net::HTTP.start(uri.hostname,uri.port,use_ssl:true){|h|h.request(req)}.body)
raise "Clé invalide" unless r['valid']
req,_:=http.NewRequest("POST","https://allpredictor.com/api/v1/validate-key",nil);req.Header.Set("X-API-Key","ap_votre_clé")
val r=JSONObject(OkHttpClient().newCall(Request.Builder().url("https://allpredictor.com/api/v1/validate-key").post(RequestBody.create(null,ByteArray(0))).addHeader("X-API-Key","ap_votre_clé").build()).execute().body?.string()?:"")
var req=URLRequest(url:URL(string:"https://allpredictor.com/api/v1/validate-key")!);req.httpMethod="POST";req.setValue("ap_votre_clé",forHTTPHeaderField:"X-API-Key")
Réponse 200 — Plan Free
200 OK
{ "valid":true, "plan":"free", "requests_used":153, "requests_remaining":47, "key_name":"Mon Bot Telegram" }
Réponse 200 — Plan Pro
200 OK
{ "valid":true, "plan":"pro", "requests_used":4821, "requests_remaining":null, "key_name":"Production API" }
Référence

Codes d'erreur

Erreurs HTTP standards avec corps JSON structuré.

400
Bad Request
Paramètre invalide (ex. limit hors plage). Vérifiez les types et plages.
401
Unauthorized
X-API-Key absent, mal formé ou clé révoquée. Régénérez depuis le dashboard.
403
Forbidden
Plan insuffisant pour cet endpoint. Passez au Plan Pro.
429
Too Many Requests
Quota Free (200 req/mois) épuisé. Réinitialisation le 1er du mois à minuit UTC.
500
Internal Server Error
Réessayez avec backoff exponentiel (1s → 2s → 4s). Signalez les 500 persistants au support.
Exemple d'erreur
401 Unauthorized
{ "success":false, "error":"Clé API invalide ou expirée." }
Référence

Rate limiting & quotas

Quotas mensuels par clé API, remis à zéro le 1er de chaque mois à minuit UTC.

Free
Gratuit · réinitialisation mensuelle
200 requêtes / mois
1 clé API
1 bot Telegram
Requêtes illimitées
Pro
Plan payant · sans limite
Requêtes illimitées
Clés API illimitées
Bots Telegram illimités
Support prioritaire
⚠️
Pas de header rate-limit dans les réponses. Utilisez POST /validate-keyrequests_remaining pour connaître votre solde.
Outils Développeur

Spécification OpenAPI

La spécification complète de l'API est disponible au format OpenAPI 3.0. Importez-la directement dans Postman, Insomnia, Swagger UI ou tout autre client REST compatible.

Télécharger openapi.yaml Run in Postman Swagger UI
Format URL Usage
OpenAPI 3.0 YAML /openapi-enriched.yaml Postman, Insomnia, génération de SDK
OpenAPI 3.0 JSON /openapi.json Intégrations programmatiques
Swagger UI /api/v1/docs Exploration interactive en navigateur
Outils Développeur

Sandbox & clés de test

Testez votre intégration sans consommer votre quota mensuel. L'environnement sandbox retourne des données simulées réalistes avec les mêmes schémas de réponse que la production.

🧪
Clé sandbox : utilisez le préfixe ap_test_ pour générer une clé sandbox depuis votre dashboard. Les requêtes sandbox ne sont jamais comptabilisées dans votre quota.
Environnement Base URL Quota
Production https://allpredictor.com/api/v1 Selon votre plan
Sandbox https://sandbox.allpredictor.com/api/v1 Illimité — données simulées
# Sandbox — utiliser la base URL sandbox avec votre clé test
curl https://sandbox.allpredictor.com/api/v1/luckyjet/predict   -H "X-API-Key: ap_test_votre_clé_sandbox"
const BASE = process.env.NODE_ENV === 'production'
  ? 'https://allpredictor.com/api/v1'
  : 'https://sandbox.allpredictor.com/api/v1';

const KEY = process.env.NODE_ENV === 'production'
  ? process.env.ALLPREDICTOR_KEY
  : process.env.ALLPREDICTOR_TEST_KEY;

const data = await fetch(`${BASE}/luckyjet/predict`,
  { headers: { 'X-API-Key': KEY } }).then(r => r.json());
import os, requests

BASE = ("https://allpredictor.com/api/v1"
        if os.getenv("ENV") == "production"
        else "https://sandbox.allpredictor.com/api/v1")

KEY = (os.getenv("ALLPREDICTOR_KEY")
       if os.getenv("ENV") == "production"
       else os.getenv("ALLPREDICTOR_TEST_KEY"))

data = requests.get(f"{BASE}/luckyjet/predict",
    headers={"X-API-Key": KEY}).json()
Outils Développeur

SDKs officiels

Des packages officiels sont disponibles pour les principales plateformes. Ils gèrent automatiquement l'authentification, les retries et la désérialisation des réponses.

📦
JavaScript / Node.js
npm · allpredictor-js
TypeScript natif
Retry automatique
Support ESM & CJS
🐍
Python
pip · allpredictor-python
Async/await (aiohttp)
Dataclasses typées
Python 3.8+
💙
Flutter / Dart
pub.dev · allpredictor_dart
Null-safety
Modèles générés
Dart 3+
🐘
PHP
composer · allpredictor/php-sdk
PHP 8.1+
PSR-18 compatible
Laravel ready
npm install allpredictor-js

# Utilisation
import { AllPredictor } from 'allpredictor-js';
const client = new AllPredictor({ apiKey: process.env.ALLPREDICTOR_KEY });
const pred = await client.luckyjet.predict();
console.log(pred.predicted_coef, pred.signal);
pip install allpredictor-python

# Utilisation
from allpredictor import AllPredictor
client = AllPredictor(api_key="ap_votre_clé")
pred = client.luckyjet.predict()
print(pred.predicted_coef, pred.signal)
flutter pub add allpredictor_dart

// Utilisation
import 'package:allpredictor_dart/allpredictor_dart.dart';
final client = AllPredictor(apiKey: 'ap_votre_clé');
final pred = await client.luckyjet.predict();
print(pred.predictedCoef);
composer require allpredictor/php-sdk

// Utilisation
use AllPredictor\Client;
$client = new Client('ap_votre_clé');
$pred   = $client->luckyjet()->predict();
echo $pred->predictedCoef;
Temps réel

WebSocket & Server-Sent Events

Pour éviter le polling HTTP intensif, l'API propose deux modes de connexion persistante : WebSocket (bidirectionnel) et SSE (flux unidirectionnel, compatible navigateur).

Protocole URL Usage recommandé
WebSocket wss://allpredictor.com/ws/v1 Bots, apps mobiles, intégrations serveur
SSE https://allpredictor.com/api/v1/stream Navigateur, dashboards React/Vue
const ws = new WebSocket(
  `wss://allpredictor.com/ws/v1?api_key=${process.env.ALLPREDICTOR_KEY}`
);

ws.addEventListener('open', () => {
  // S'abonner aux signaux LuckyJet
  ws.send(JSON.stringify({ subscribe: ['luckyjet.signal'] }));
});

ws.addEventListener('message', (event) => {
  const { type, data } = JSON.parse(event.data);
  if (type === 'luckyjet.signal') {
    console.log(`Signal: ${data.signal} | Cible: ${data.predicted_coef}x`);
  }
});
// Server-Sent Events — compatible navigateur sans lib
const url = `https://allpredictor.com/api/v1/stream/luckyjet`
          + `?api_key=${API_KEY}`;

const es = new EventSource(url);

es.addEventListener('signal', (e) => {
  const data = JSON.parse(e.data);
  console.log(data.signal, data.predicted_coef);
});

es.addEventListener('error', () => es.close());
import asyncio, websockets, json, os

async def listen():
    uri = (f"wss://allpredictor.com/ws/v1"
           f"?api_key={os.getenv('ALLPREDICTOR_KEY')}")
    async with websockets.connect(uri) as ws:
        await ws.send(json.dumps({"subscribe": ["luckyjet.signal"]}))
        async for msg in ws:
            data = json.loads(msg)
            print(data["data"]["signal"], data["data"]["predicted_coef"])

asyncio.run(listen())
import 'dart:convert';
import 'package:web_socket_channel/web_socket_channel.dart';

final channel = WebSocketChannel.connect(
  Uri.parse('wss://allpredictor.com/ws/v1?api_key=ap_votre_clé'),
);

channel.sink.add(jsonEncode({'subscribe': ['luckyjet.signal']}));

channel.stream.listen((msg) {
  final data = jsonDecode(msg)['data'];
  print('\${data["signal"]} | \${data["predicted_coef"]}x');
});
Temps réel

Webhooks

Configurez une URL de webhook pour être notifié passivement sans maintenir de connexion ouverte. AllPredictor envoie une requête POST vers votre endpoint à chaque changement de signal important.

Événement Déclencheur
signal.changed Le signal passe de safewarn, warndanger, etc.
market.danger Le marché bascule soudainement en danger.
analyse.ready Une nouvelle analyse est disponible après chaque round.
// POST vers votre URL — header X-AllPredictor-Signature inclus
{
  "event": "market.danger",
  "game": "luckyjet",
  "timestamp": "2025-03-15T14:55:00Z",
  "data": {
    "previous_level": "warn",
    "current_level": "danger",
    "score": 18,
    "reason": "3 pertes consécutives"
  }
}
// Express.js — recevoir le webhook
app.post('/webhook/allpredictor', (req, res) => {
  const sig = req.headers['x-allpredictor-signature'];
  // Vérifier la signature HMAC-SHA256
  const expected = crypto
    .createHmac('sha256', process.env.WEBHOOK_SECRET)
    .update(JSON.stringify(req.body))
    .digest('hex');

  if (sig !== expected)
    return res.status(401).send('Invalid signature');

  const { event, data } = req.body;
  if (event === 'market.danger')
    console.log('⛔ Danger détecté !', data.reason);

  res.sendStatus(200);
});
$payload = file_get_contents('php://input');
$sig     = $_SERVER['HTTP_X_ALLPREDICTOR_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $payload,
              getenv('WEBHOOK_SECRET'));

if (!hash_equals($expected, $sig))
  http_response_code(401) and exit('Invalid');

$data = json_decode($payload, true);
echo "Événement: {$data['event']}
";
import hmac, hashlib
from flask import Flask, request, abort

app = Flask(__name__)

@app.route('/webhook/allpredictor', methods=['POST'])
def webhook():
    sig = request.headers.get('X-AllPredictor-Signature', '')
    expected = hmac.new(
        os.getenv('WEBHOOK_SECRET').encode(),
        request.data, hashlib.sha256
    ).hexdigest()
    if not hmac.compare_digest(expected, sig):
        abort(401)
    data = request.json
    print(f"Événement: {data['event']}")
    return '', 200
Spécifications Techniques

Nullabilité & CORS

Champs nullables

Certains champs peuvent retourner null dans des conditions spécifiques. Traitez-les toujours comme null-safe dans votre code.

Champ Endpoint Nullable si…
bet_time /predict Aucune heure optimale calculable (marché instable).
requests_remaining /validate-key Plan Pro — quota illimité.
cursor /history Dernière page — plus de résultats disponibles.
avg_recent_coef /predict Moins de 3 rounds historiques disponibles.

Politique CORS

🌐
CORS activé sur tous les endpoints. Les requêtes JavaScript depuis un navigateur sont autorisées. Les headers Origin sont acceptés depuis n'importe quel domaine. Cependant, pour des raisons de sécurité, il est fortement déconseillé d'exposer votre clé API côté client — utilisez un proxy serveur.
Header CORS Valeur
Access-Control-Allow-Origin *
Access-Control-Allow-Methods GET, POST, OPTIONS
Access-Control-Allow-Headers X-API-Key, Content-Type, Accept
Fiabilité

Statut & Uptime

Consultez la page de statut en temps réel pour connaître l'état de l'API, les incidents en cours et l'historique de disponibilité.

Page de statut →
Composant Statut actuel Uptime 30j
API REST Opérationnel 98.7%
WebSocket Opérationnel 97.9%
Sandbox Opérationnel 99.1%
🔔
Abonnez-vous aux alertes sur status.allpredictor.com pour recevoir des notifications par email ou webhook en cas d'incident.
Fiabilité

Changelog

Historique des mises à jour et évolutions de l'API AllPredictor.

v1.0.0
Mar 2025
Lancement initial de l'API AllPredictor
+ 9 endpoints REST pour LuckyJet et RocketQueen
+ Authentification par clé API (X-API-Key)
+ Plans Free (200 req/mois) et Pro (illimité)
+ Signaux marché (safe / warn / danger)
+ Endpoint /validate-key pour vérification de quota
v1.1.0
À venir
Temps réel & pagination
~ Support WebSocket (wss://)
~ Server-Sent Events (SSE)
~ Pagination par curseur sur /history et /coefficients
~ Webhooks pour changements de signal
~ Environnement sandbox dédié