/api/v1/slots/
Auth required
List public slots
Cursor-paginated list of published slots. Default order: -created_at. With ?updated_since: order switches to (updated_at, id) ASC for forward-sync. With ?ordering=-release_date|release_date: order switches to release-date mode. With ?ordering=-captured_at|captured_at: order switches to capture-date mode (matches the public listing default order). Use /slots/ids/ for tombstone reconcile (removed slots do not appear in deltas). ETag/304 support via If-None-Match.
Parameters
| Name | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
| If-None-Match | header | string | optional | Opaque ETag value from a previous response to this same endpoint. When it matches the current ETag, the server returns 304 Not Modified with no body instead of re-sending the full payload. | |
| cursor | query | string | optional | Opaque pagination cursor from a previous response's next/previous link. | |
| feature | query | string | optional | Feature slug (exact match). A slot may carry several features. | |
| game_category | query | string | optional |
Game category, exact match. 400 on any value outside the enum. Also filters GET /api/v1/demand/, where it doubles as a cut axis (?by=game_category).
Allowed: crash · instant_win · live · other · scratch · table · unknown · video_slot
|
|
| has_bonus_buy | query | string | optional | 'true' or 'false'. Any other value returns 400. | |
| jackpot_type | query | string | optional |
Jackpot type (none/fixed/progressive/pooled/unknown)
Allowed: fixed · none · pooled · progressive · unknown
|
|
| max_win_max | query | integer | optional | max_win <= this value (multiplier of stake, positive integer). Also filters GET /api/v1/demand/ — same catalogue filter. | |
| max_win_min | query | integer | optional | max_win >= this value (multiplier of stake, positive integer). Also filters GET /api/v1/demand/ — same catalogue filter. | |
| mechanic | query | string | optional |
Bet mechanic (lines/ways/cluster/megaways/scatter_pays)
Allowed: cluster · lines · megaways · scatter_pays · variable_ways · ways
|
|
| ordering | query | string | optional |
Whitelist: '-release_date' (newest first) or 'release_date' (oldest first). Slots with release_date IS NULL sort to the end for '-release_date' and to the start for 'release_date'. '-captured_at' (most recently captured from a live demo first) or 'captured_at' (oldest/never-captured first) — matches the public listing's default order. Any other value → 400. Ignored when ?updated_since is present (sync order wins). Note on backward paging: cursor position is derived from the sort field alone, so walking back with `previous` through the trailing block of items that share the same sort value (those with no release date, or never captured) can skip entries. Forward paging with `next` is always complete, and neither ?updated_since sync nor the /ids/ reconcile is affected. Walk forward when you need the full set.
Allowed: -captured_at · -release_date · captured_at · release_date
|
|
| page_size | query | integer | optional | Number of results per page. Default 20, maximum 100 — same limits as the rest of the public API. An operator-configured limit may lower the maximum. | |
| provider | query | string | optional | Provider slug (exact match). | |
| released_after | query | string(date) | optional | ISO date (YYYY-MM-DD). release_date >= this value. Slots with release_date IS NULL are excluded. 400 on invalid format. | |
| released_before | query | string(date) | optional | ISO date (YYYY-MM-DD). release_date <= this value — INCLUSIVE, the named day is part of the range. Note that ?published_before, ?posted_before and ?established_before on other endpoints are EXCLUSIVE. Slots with release_date IS NULL are excluded. 400 on invalid format. | |
| rtp_max | query | number(double) | optional | rtp_default <= this value (percent, decimal, e.g. 96.5). Also filters GET /api/v1/demand/ — same catalogue filter. | |
| rtp_min | query | number(double) | optional | rtp_default >= this value (percent, decimal, e.g. 96.5). Also filters GET /api/v1/demand/ — same catalogue filter. | |
| search | query | string | optional | Case-insensitive substring search over slot name + aliases. Empty/whitespace-only value is a no-op (does not narrow results). Soft-clipped to 100 characters (not a 400). | |
| series | query | string | optional | Series slug (exact match). A slot belongs to at most one series. | |
| theme | query | string | optional | Theme slug (exact match). A slot may carry several themes. | |
| updated_since | query | string(date-time) | optional | ISO-8601 datetime. Returns only slots whose content changed at or after this moment. When present, results are ordered by (updated_at, id) ASC — forward through time. Without this param the default order (-created_at, -id) is preserved. 400 on invalid format. Known limitation: cross-object renames (provider/studio/series name changes) do NOT appear in this delta — use /slots/ids/ for tombstone reconcile. | |
| volatility | query | string | optional |
Volatility (low/med_low/medium/med_high/high/very_high)
Allowed: high · low · med_high · med_low · medium · very_high
|
curl \
-H "Authorization: Token <YOUR_TOKEN>" \
"https://i-gaming.tools/api/v1/slots/"
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://i-gaming.tools/api/v1/slots/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Token <YOUR_TOKEN>']);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
const response = await fetch("https://i-gaming.tools/api/v1/slots/", {
method: "GET",
headers: {
"Authorization": "Token <YOUR_TOKEN>"
}
});
const data = await response.json();
console.log(data);
import requests
headers = {
"Authorization": "Token <YOUR_TOKEN>"
}
response = requests.get("https://i-gaming.tools/api/v1/slots/", headers=headers)
print(response.json())
Response fields
Example response
{
"next": "https://i-gaming.tools/api/v1/slots/?cursor=cD00ODY%3D",
"previous": "https://i-gaming.tools/api/v1/slots/?cursor=cj0xJnA9NDg3",
"results": [
{
"slug": "example-slot-title",
"name": "Example Slot Title",
"provider": {
"slug": "example-provider",
"name": "Example Provider"
},
"game_category": "video_slot",
"game_subtype": null,
"rtp_default": "96.50",
"volatility": "high",
"max_win": 5000,
"mechanic": "ways",
"mechanic_value": 243,
"release_date": "2026-01-15",
"release_date_precision": "day",
"thumbnail_url": "https://cdn.i-gaming.tools/slots/example-slot-title.webp",
"thumbnail": {
"url": "https://cdn.i-gaming.tools/slots/example-slot-title.webp",
"key": "slots/example-slot-title.webp",
"version": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"volume_12m": 12000,
"trend": "growing",
"demo_url": null,
"updated_at": "2026-08-01T09:30:00Z"
}
]
}