trackersino
stale
18+Solo dati · Nessuna previsione · Gioca responsabilmenteCome funziona questo sito
BetaBeta pubblica · possibili interruzioni temporanee dei feed.
Documentazione

TrackerSino Data API — riferimento

JSON su HTTPS. Autenticazione tramite API key. Stessa forma di risposta per ogni gioco. Esempi cURL / JavaScript / Python per ogni endpoint.

Per iniziare

Ogni richiesta va a https://api.trackersino.com. L'autenticazione è un singolo header HTTP (Authorization: Bearer <tua-chiave>). Le risposte sono application/json. Tutti i timestamp sono UTC ISO 8601. I valori Decimal (moltiplicatori, payout) sono restituiti come stringhe JSON per preservare la precisione.

bash
curl -H "Authorization: Bearer YOUR_KEY" \
  https://api.trackersino.com/v1-beta/games

La prima chiamata di solito restituisce il catalogo di ogni gioco che tracciamo, con last-observed-at e rounds-total. Da lì, chiama /v1-beta/games/{slug}/rounds per lo storico o sottoscrivi /v1-beta/stream per push live.

Giochi e slug

Lo {slug} in ogni path è l'identificatore di un gioco — è il campo `id` restituito da /v1-beta/games e non cambia mai. Ovunque vedi {slug} qui sotto, sostituisci uno dei valori della prima colonna.

Per lo stream WebSocket selezioni più giochi insieme con una lista separata da virgole: ?games=stake-crash,crazytime,lightningstorm. La variabile query `games` accetta qualsiasi slug di questa tabella.

slug (id)giocoproviderkind
stake-crashCrashStakecrash
duel-crashCrashDuelcrash
shuffle-crashCrashShufflecrash
crashCrashRoobetcrash
stake-slideSlideStakecrash
slideSlideRoobetwheel
crazytimeCrazy TimeEvolutionwheel-show
crazytimeaCrazy Time AEvolutionwheel-show
monopolyliveMonopoly LiveEvolutionwheel-show
monopolybigballerMONOPOLY Big BallerEvolutionwheel-show
dreamcatcherDream CatcherEvolutionwheel-show
lightningstormLightning StormEvolutionwheel-show
icefishingIce FishingEvolutionwheel-show
lightningdiceLightning DiceEvolutiondice-show
lightningrouletteLightning RouletteEvolutionroulette-show

Il campo `kind` indica quali dati extra aspettarti nel payload raw di ogni round: crash / wheel (Slide) → solo multiplier; wheel-show (Crazy Time, Monopoly Live, Lightning Storm, Dream Catcher, Ice Fishing, Big Baller) → segment + sector + dettagli bonus; dice-show (Lightning Dice) → facce dei dadi + moltiplicatori lightning; roulette-show (Lightning Roulette) → numero vincente + moltiplicatori lucky-number.

Questa tabella è uno snapshot — chiama GET /v1-beta/games in qualsiasi momento per la lista autorevole e sempre aggiornata con i contatori live rounds_total e last_finalized_multiplier.

Autenticazione

Ogni cliente riceve una o più API key in onboarding via Telegram. Le chiavi sono scoped per ambiente (sandbox / produzione) e ruotabili su richiesta. Hai perso una chiave? Scrivici su Telegram — la revochiamo e ne emettiamo una nuova.

Chiave errata / mancante → 401. Chiave valida ma tier insufficiente per l'endpoint → 403. Rate limit superato → 429 con Retry-After.

http
GET /v1-beta/games HTTP/1.1
Host: api.trackersino.com
Authorization: Bearer ts_live_abcd1234efgh5678
Accept: application/json

Endpoint REST

Tutti gli endpoint restituiscono JSON. Dove c'è paginazione, usa ?limit e ?since (timestamp ISO) — niente cursori opachi; puoi riprendere su `finalized_at`.

GET/v1-beta/games

Catalogo. Restituisce ogni gioco tracciato: id, name, provider, kind (crash / slide / wheel-show / dice-show / roulette-show), enabled, rounds_total, last_observed_at, last_finalized_index, last_finalized_multiplier.

GET/v1-beta/games/{slug}/rounds?limit=N&window=5m&since=ISO&only_finalized=true

Storico round, più recenti per primi. Filtra per solo finalizzati, per timestamp assoluto (since=ISO) o per finestra relativa — window=5m|15m|30m|1h|3h|6h|12h|24h|72h|7d|30d, oppure since_minutes=N per un conteggio esatto in minuti. Ogni riga porta round_index, round_id, multiplier, random_number, state, finalized_at e payload raw completo.

GET/v1-beta/games/{slug}/rounds/latest

Il singolo round più recente. only_finalized=true (default) ritorna l'ultimo round finalizzato; only_finalized=false ritorna la riga più nuova in assoluto, che può essere ancora in corso. Stessa forma di una riga /rounds incluso il payload raw completo.

GET/v1-beta/games/{slug}/summary

Panoramica in un colpo solo — tutto quello che mostra l'header gioco di trackersino in una sola chiamata: identità (name/provider/kind), rounds_total, l'ultimo round completo, conteggi rolling (last_5m / last_15m / last_1h / last_24h), forma dei moltiplicatori 24h (mean / median / p95 / max) e la tabella delay principale (round dall'ultimo ≥2x / 10x / 50x / 100x).

GET/v1-beta/games/{slug}/spins?limit=N&window=24h

Endpoint comodo per wheel-show — ogni riga porta segment, sector e multiplier_text già decodificati. Usalo per UI Crazy Time / Lightning Storm / Monopoly Live senza parsare raw da solo.

GET/v1-beta/games/{slug}/round/{round_id}

Dettaglio singolo round. Stessa forma delle righe di /rounds ma con payload bonus completo (griglia Cash Hunt, drop Pachinko, arms Crazy Time, batterie / reels / offers di Lightning Storm).

GET/v1-beta/games/{slug}/stats/biggest-wins?window=24h&limit=10

Top payout in una finestra. Ordinato per total_amount × multiplier se disponibile, altrimenti solo multiplier. Ritorna round_id, multiplier, finalized_at, segment, total_amount, total_winners.

GET/v1-beta/games/{slug}/stats/multiplier-distribution?window=1h

Istogramma dei moltiplicatori (giochi crash) o hit-rate dei segmenti (wheel show) sulla finestra richiesta. Usalo per grafici di fairness / convergenza RTP.

GET/v1-beta/games/{slug}/stats/delays

Round-da-ultimo-≥X per ogni soglia (1.5x … 1000x). Stessa metrica del temperature panel pubblico, più lifetime_hits e lifetime_rounds. Refresh-friendly: i numeri scendono ad ogni round.

GET/v1-beta/games/{slug}/stats/frequency?window=24h

Hit-rate osservato vs teorico per soglia, con il delta in punti percentuali rispetto al baseline fair-game (house edge configurabile). La tabella di fairness dietro la pagina stats pubblica.

GET/v1-beta/games/{slug}/stats/streaks?window=24h

Run consecutive correnti e più lunghe sotto ogni soglia (2x … 100x) — current_under_count, longest_under_in_window e dove è iniziata la run più lunga.

GET/v1-beta/games/{slug}/stats/hourly?window=24h

Bucket orari: count, mean, max, p95 più conteggi hit per 2x / 10x / 50x. Usalo per heatmap e analisi per fascia oraria.

GET/v1-beta/games/{slug}/stats/multiplier-distribution?window=1h

Istogramma dei moltiplicatori (giochi crash) più mean / median / p95 / p99 / max sulla finestra. Usalo per grafici di fairness / convergenza RTP.

GET/v1-beta/games/{slug}/stats/rtp-empirical?window=24h

RTP empirico direzionale dagli snapshot di puntate osservate (volume, payout, rapporto). Biased da snapshot — vedi il campo note nella risposta.

GET/v1-beta/games/{slug}/stats/rtp-detailed?window=24h

Stesso RTP scomposto per target-multiplier: bets_count, volume, payout, win_rate e rtp per ogni target di cash-out.

GET/v1-beta/games/{slug}/stats/currency-volume?window=24h

Volume puntate e payout raggruppati per tipo di saldo (valuta), più i totali su tutte le valute.

GET/v1-beta/games/{slug}/stats/recent-bets?limit=N

Ultime puntate osservate con l'esito del round risolto — bet_amount, balance_type, target_multiplier, round_multiplier e flag won.

GET/v1-beta/games/{slug}/crazytime/segments?window=24h

Breakdown segmenti wheel-show (Crazy Time / Monopoly Live / Lightning Storm / Dream Catcher): hit per segmento, % osservata vs teorica, spins_since, multiplier medio e ultimo hit.

Forma delle risposte (esempi reali)

Ogni esempio qui sotto è una risposta reale, non modificata, catturata dall'API live. I numeri che richiedono precisione (multiplier, payout) tornano come stringhe JSON.

GET /v1-beta/games catalogo
json
[
  {
    "id": "stake-crash",
    "name": "Crash",
    "provider": "Stake",
    "kind": "crash",
    "enabled": true,
    "rounds_total": 108457,
    "last_observed_at": "2026-06-01T12:20:48.669425Z",
    "last_finalized_index": 7393228772258146753,
    "last_finalized_multiplier": "4.7100"
  },
  {
    "id": "crazytime",
    "name": "Crazy Time",
    "provider": "Evolution",
    "kind": "wheel-show",
    "enabled": true,
    "rounds_total": 53413,
    "last_observed_at": "2026-06-01T12:19:00.573935Z",
    "last_finalized_index": 46639897866258233,
    "last_finalized_multiplier": "1.0000"
  }
]
GET /v1-beta/games/stake-crash/rounds?limit=1 round crash
json
[
  {
    "round_index": 7393228772258146753,
    "round_id": "cc0706c3f891d301fcec3855",
    "multiplier": "4.7100",
    "random_number": null,
    "state": "finalized",
    "time_spin_stop": "2026-06-01T12:20:27Z",
    "finalized_at": "2026-06-01T12:20:27Z",
    "observed_at": "2026-06-01T12:20:28.580645Z",
    "raw": {
      "result": { "rtp": 196.23, "maxMultiplier": 4.71, "roundDuration": 25825.0 },
      "source": "casino.org",
      "round_id": "cc0706c3f891d301fcec3855",
      "settledAt": "2026-06-01T12:20:27Z",
      "startedAt": "2026-06-01T12:20:01Z",
      "totalAmount": 13609.24,
      "bettorsCount": 320,
      "totalWinners": 270,
      "totalBetAmount": 6935.21
    }
  }
]
GET /v1-beta/games/crazytime/rounds?limit=1 round wheel-show (nota segment / slot_result)
json
[
  {
    "round_index": 68099814944532018,
    "round_id": "cdHphY2_tby8",
    "multiplier": "4.0000",
    "random_number": 2,
    "state": "finalized",
    "time_spin_stop": "2026-06-01T12:19:36Z",
    "finalized_at": "2026-06-01T12:19:36Z",
    "observed_at": "2026-06-01T12:20:23.015118Z",
    "raw": {
      "result": 2,
      "source": "tracksino",
      "segment": "n2",
      "slot_result": 2,
      "slot_multiplier": 2,
      "total_payout": 19461,
      "total_winners": 3381,
      "is_top_slot_matched": true,
      "bonus_data": null
    }
  }
]
GET /v1-beta/games/lightningstorm/rounds/latest ultimo round + payload bonus
json
{
  "round_index": 6823731385927563902,
  "round_id": "18b4f444d3876dca4aeac5ff",
  "multiplier": "1.0000",
  "state": "finalized",
  "finalized_at": "2026-06-01T12:19:52.013Z",
  "observed_at": "2026-06-01T12:19:57.175784Z",
  "raw": {
    "outcome": "EvoLeaf",
    "segment": "leaf",
    "source": "casino.org",
    "multiplier_text": "1x",
    "multiplier_low": "1.00",
    "multiplier_high": "1.00",
    "wheel_result": { "wheelSector": { "type": "EvoLeaf" }, "maxMultiplier": 1 },
    "totalWinners": 451,
    "bettorsCount": 2275
  }
}
GET /v1-beta/games/stake-crash/summary panoramica in un colpo
json
{
  "game_id": "stake-crash",
  "name": "Crash",
  "provider": "Stake",
  "kind": "crash",
  "rounds_total": 108457,
  "last_round": { "...": "full round object, same shape as /rounds" },
  "last_finalized_index": 7393228772258146753,
  "last_finalized_multiplier": "4.7100",
  "last_finalized_at": "2026-06-01T12:20:42Z",
  "last_observed_at": "2026-06-01T12:20:28.580645Z",
  "counts": { "last_5m": 13, "last_15m": 39, "last_1h": 175, "last_24h": 3964 },
  "multiplier_24h": {
    "window": "24h",
    "mean": "9.3272619828456105",
    "median": "2.1597",
    "p95": "22.52",
    "max": "3986.5790"
  },
  "delays": [
    { "threshold": "2",   "rounds_since": 1,   "last_multiplier": "4.7100",   "last_finalized_at": "2026-06-01T12:20:27Z" },
    { "threshold": "10",  "rounds_since": 3,   "last_multiplier": "33.2000",  "last_finalized_at": "2026-06-01T12:19:36Z" },
    { "threshold": "50",  "rounds_since": 116, "last_multiplier": "368.6026", "last_finalized_at": "2026-06-01T11:38:57Z" },
    { "threshold": "100", "rounds_since": 116, "last_multiplier": "368.6026", "last_finalized_at": "2026-06-01T11:38:57Z" }
  ],
  "generated_at": "2026-06-01T12:20:57.684532Z"
}
GET /v1-beta/games/stake-crash/stats/delays round dall'ultimo ≥X
json
[
  {
    "threshold": "1.5",
    "rounds_since": 1,
    "last_round_index": 7393228772258146753,
    "last_multiplier": "4.7100",
    "last_finalized_at": "2026-06-01T12:20:27Z",
    "lifetime_hits": 73847,
    "lifetime_rounds": 108458
  },
  {
    "threshold": "2",
    "rounds_since": 1,
    "last_multiplier": "4.7100",
    "lifetime_hits": 55412,
    "lifetime_rounds": 108458
  }
]

Stream WebSocket

I tier Pro ed Enterprise possono sottoscrivere un canale push: ogni round finalizzato viene emesso come frame JSON appena lo scraper lo scrive su storage. Stessa forma di /rounds. Sottoscrivi tutti i giochi o filtra per slug alla connessione.

javascript
const ws = new WebSocket(
  'wss://api.trackersino.com/v1-beta/stream?games=stake-crash,roobet-crash',
  ['Authorization', 'Bearer YOUR_KEY']
);
ws.onmessage = (ev) => {
  const round = JSON.parse(ev.data);
  console.log(round.game_id, round.multiplier, round.finalized_at);
};

Riconnetti alla chiusura. Mandiamo un heartbeat ping ogni 25s; se ne perdi due consecutivi, droppa e riconnetti — il tuo ultimo `finalized_at` osservato è il punto di ripresa per un backfill via /rounds.

Esempi di codice

cURL — storico di più giochi
bash
# Last 5 minutes of Stake Crash — relative window, no timestamp math
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.trackersino.com/v1-beta/games/stake-crash/rounds?window=5m"

# Same call for a different game — just swap the {slug}
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.trackersino.com/v1-beta/games/crazytime/rounds?window=5m"

# Exact minute count instead of a preset window
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.trackersino.com/v1-beta/games/lightningstorm/rounds?since_minutes=30&limit=500"

# The single most recent settled round
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.trackersino.com/v1-beta/games/duel-crash/rounds/latest"

# Everything at a glance (last round + counts + 24h shape + delays)
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.trackersino.com/v1-beta/games/stake-crash/summary"
JavaScript — storico per una lista di giochi
javascript
const KEY = 'Bearer YOUR_KEY';
const BASE = 'https://api.trackersino.com/v1-beta';

// The 'games' you care about — any slug from the Games & slugs table.
const games = ['stake-crash', 'crazytime', 'lightningstorm'];

// Fetch the last 5 minutes of history for each, in parallel.
const histories = await Promise.all(
  games.map(async (slug) => {
    const res = await fetch(
      `${BASE}/games/${slug}/rounds?window=5m&limit=1000`,
      { headers: { Authorization: KEY } },
    );
    return { slug, rounds: await res.json() };
  }),
);

for (const { slug, rounds } of histories) {
  console.log(slug, '→', rounds.length, 'rounds');
  console.log('  newest:', rounds[0]?.multiplier, 'at', rounds[0]?.finalized_at);
}
Python — pagina lo storico completo con since
python
import requests

BASE = "https://api.trackersino.com/v1-beta"
HEADERS = {"Authorization": "Bearer YOUR_KEY"}

def fetch_window(slug: str, minutes: int = 5):
    """Last N minutes of rounds for a game."""
    r = requests.get(
        f"{BASE}/games/{slug}/rounds",
        params={"since_minutes": minutes, "limit": 1000},
        headers=HEADERS, timeout=10,
    )
    r.raise_for_status()
    return r.json()

def backfill(slug: str, pages: int = 5, page_size: int = 1000):
    """Walk older history with before_index (keyset pagination)."""
    out, cursor = [], None
    for _ in range(pages):
        params = {"limit": page_size, "only_finalized": "true"}
        if cursor is not None:
            params["before_index"] = cursor
        rows = requests.get(f"{BASE}/games/{slug}/rounds",
                            params=params, headers=HEADERS, timeout=10).json()
        if not rows:
            break
        out += rows
        cursor = rows[-1]["round_index"]   # resume point for the next page
    return out

for slug in ("stake-crash", "crazytime", "lightningstorm"):
    last5 = fetch_window(slug, 5)
    print(slug, "→", len(last5), "rounds in last 5m,",
          "newest:", last5[0]["multiplier"] if last5 else None)

Rate limit

Budget richieste per chiave. Starter è solo REST a 5 req/s, burst 10. Pro è 50 req/s + frame WebSocket illimitati. Enterprise è custom (default 200 req/s + WS dedicato).

Su 429 mandiamo Retry-After (in secondi). Ritarda e riprova. Non auto-throttliamo in silenzio — sai sempre quando hai raggiunto il limite.

Risposte di errore

json
{
  "error": "rate_limited",
  "message": "Exceeded 50 req/s on tier=pro",
  "retry_after_s": 3
}

Sempre JSON, sempre porta `error` (codice machine-readable) e `message` (umano). Semantica HTTP standard — 400 errore client, 401/403 auth, 404 gioco/round non trovato, 429 rate limit, 5xx problema upstream (raro, gestiamo failover internamente).

Changelog e versioning

Versionato via URL (/v1-beta è la superficie pubblica attuale). Le breaking change passano a /v1 una volta stabili, con almeno 90 giorni di overlap prima del ritiro di /v1-beta. Aggiunte non-breaking (campi nuovi, endpoint nuovi) escono in /v1-beta senza bump.

Iscriviti al canale Telegram @TrackerSinoStatus per essere avvisato di cambiamenti e incidenti.

Hai bisogno di aiuto nell'integrazione?

Scrivici su Telegram con il linguaggio che usi — ti mandiamo un sample minimale funzionante per il tuo stack.

Apri Telegram