Reference

API reference

Results of every roulette table and crash game in your plan as JSON, over HTTPS. Base URL: https://api.gamedata365.com. Five endpoints, all GET.

Your key

Send your key in the X-API-Key header on every call (Authorization: Bearer works too). It is in your account under API, with a request ready to paste. No key yet? Build a plan, or get a free key for up to 3 games.

curl

curl -H "X-API-Key: YOUR_KEY" \
  "https://api.gamedata365.com/v1/live"

JavaScript (Node 18+, browser)

fetch("https://api.gamedata365.com/v1/live", {
  headers: { "X-API-Key": "YOUR_KEY" },
})
  .then((r) => r.json())
  .then(console.log);

Python (requests)

import requests

r = requests.get(
    "https://api.gamedata365.com/v1/live",
    headers={"X-API-Key": "YOUR_KEY"},
)
print(r.json())

Subscribed through RapidAPI? Send X-RapidAPI-Key through the RapidAPI gateway instead. Everything else on this page is the same.

Requests and history

GET /v1/live

The newest round, per table.

The newest round of every roulette table in your plan, in one call. Add ?table= with a table_id for one table. Each table has a latest block: round_id, number, color, parity, dozen, column, half, timestamp (UTC), backfilled. A new round_id means a new round.

GETapi.gamedata365.com/v1/live
{
  "status": "ok",
  "provider": "custom",
  "tables_count": 1,
  "server_time": "2026-10-26T15:51:30Z",
  "tables": [
    {
      "table_id": "lightning_roulette",
      "table_name": "Lightning Roulette",
      "provider": "evolution",
      "latest": {
        "round_id": "1793029849685535",
        "number": 23,
        "color": "red",
        "parity": "odd",
        "dozen": 2,
        "column": 2,
        "half": "high",
        "timestamp": "2026-10-26T15:50:49Z",
        "backfilled": false
      }
    }
  ]
}

Zero comes as color "green" with parity, dozen, column and half all null: they do not exist on zero.

GET /v1/history

Past rounds, newest first.

Params: table (required), limit (rounds per page), cursor (the previous page's next_cursor), from (optional, ISO time: only rounds at or after it).

GETapi.gamedata365.com/v1/history?table=lightning_roulette&limit=2
{
  "status": "ok",
  "table_id": "lightning_roulette",
  "limit": 2,
  "count": 2,
  "next_cursor": "eyJ0cyI6ICIyMDI2LTEwLTI2IDE1OjUz…",
  "rounds": [
    { "type": "round", "round_id": "1793030043142588", "number": 3, "color": "red",
      "parity": "odd", "dozen": 1, "column": 3, "half": "low",
      "timestamp": "2026-10-26T15:54:03Z", "backfilled": false },
    { "type": "gap", "from": "2026-10-26T15:52:20Z", "to": "2026-10-26T15:53:16Z",
      "estimated_missing": 1, "recovered": false, "closure": false },
    { "type": "round", "round_id": "1793029996403575", "number": 0, "color": "green",
      "parity": null, "dozen": null, "column": null, "half": null,
      "timestamp": "2026-10-26T15:52:20Z", "backfilled": false }
  ],
  "history_spins": 500
}

count counts rounds, not array entries: gap markers do not count.

GET /v1/crash/live

The newest round, per crash game.

The newest round of every crash game in your plan. multiplier is where the round crashed. stale: true means the game has not produced a round lately (age_seconds says how long ago).

GETapi.gamedata365.com/v1/crash/live
{
  "status": "ok",
  "games_count": 1,
  "server_time": "2026-10-26T15:51:30Z",
  "games": [
    {
      "game_id": "lucky_jet",
      "game_name": "Lucky Jet",
      "provider": "1win_games",
      "stale": false,
      "age_seconds": 70.2,
      "latest": {
        "round_id": "luckyjet-1793029820-7070",
        "multiplier": 1.67,
        "timestamp": "2026-10-26T15:50:20Z"
      }
    }
  ]
}

GET /v1/crash/history

A crash game's past rounds, newest first.

Params: game (a game_id; may be left out when your plan has one crash game), limit, cursor. Paging works as in /v1/history.

GETapi.gamedata365.com/v1/crash/history?game=lucky_jet&limit=2
{
  "status": "ok",
  "game_id": "lucky_jet",
  "limit": 2,
  "count": 2,
  "next_cursor": "eyJ0cyI6ICIyMDI2LTEwLTI2IDE1OjUw…",
  "rounds": [
    { "round_id": "luckyjet-1793029820-7070", "multiplier": 1.67, "timestamp": "2026-10-26T15:50:20Z" },
    { "round_id": "luckyjet-1793029804-7069", "multiplier": 33.45, "timestamp": "2026-10-26T15:50:04Z" }
  ],
  "history_spins": 500
}

GET /v1/meta

Your plan, your usage, your tables.

Your plan's requests and history, when it ends, how many requests you have used this period, and each of your tables with how many days of history we hold.

GETapi.gamedata365.com/v1/meta
{
  "status": "ok",
  "plan": {
    "name": "CUSTOM",
    "requests_per_month": 10000,
    "history_spins": 500,
    "ends_at": "2026-11-25T15:51:30Z"
  },
  "usage": { "requests": 1284, "period": "p:2026-10-26T15:51:30.049Z" },
  "tables": [
    { "table_id": "lightning_roulette", "table_name": "Lightning Roulette",
      "provider": "evolution", "history_days": 98 }
  ]
}

Errors

Every refusal says why and what to do.

An error comes as {"status": "error", "error": …, "message": …}. The message names the fix, with a link to your account where one helps. Refused calls are not counted.

403 invalid_keyNo key, or not one we know. Send the whole key in X-API-Key; copy it again from your account if in doubt.
403 key_replacedYou made a new key, and this call still sends the old one. Copy the new key from your account into your app: the message says when the key was replaced.
403 table_not_entitled · game_not_entitledThat table or game is not in your plan. The message lists the ones that are. Add games in your account.
403 history_not_includedYour plan is live results only. Add spin history in your account.
403 plan_endedYour plan's 30 days are over. Renew in your account: the same key starts working again.
402 window_exceededYou asked for rounds older than your plan's history. Ask for newer ones, or take more history in your account.
429 quota_exceededThis period's requests are used up. Renew or change the plan in your account (the response carries the link in renew).
503 data_staleOur feed has not had a fresh round for a while. We never serve an old number as current; try again in a minute.

Plans

Pick your games and see the price.

Choose the games, the requests a month and how much history. Plans from $5 a month, paid in USDT, or a free key for up to 3 games.