Интеграция
Каталог и возможности
Публичные read-only endpoints описывают, что доступно. Им не нужны partner и api_key, лимиты запросов на них не действуют, ответы идут с Cache-Control: no-store: кэшируйте данные у себя, они меняются только при публикации игр.
| Endpoint | Назначение |
|---|---|
GET /games/catalog | Каталог для вашего лобби: название, провайдер, картинка, категория, теги, RTP, волатильность, максимальный выигрыш, функции |
GET /games/health | Те же поля игр плюс диагностика сборки |
GET /capabilities | Стабильный контракт для казино: игры с провайдером, валютами, режимами и тремя языками казино, а также лимиты запросов и IP колбэков |
GET /health | Проверка доступности |
GET /docs/openapi.json | Этот API как документ OpenAPI 3.1 (см. справочник API) |
Сейчас фриспины поддерживают 1009 из 1010 игр, целевые исходы — 974. Таблица всех игр с поиском — в списке игр.
GET /games/catalog#
/games/catalogСписок игр для вашего лобби.
Request#
curl -s https://notell-api.com/games/catalogconst res = await fetch('https://notell-api.com/games/catalog');
const data = await res.json();Параметров нет.
Response#
{
"status": "ok",
"releaseId": "batch04-wave2-release177",
"games": [
{
"game_id": "gates-of-olympus",
"name": "Gates of Olympus",
"provider": "pragmatic",
"languages": ["en", "ar", "bg", "bn", "cs", "da", "de", "el", "es", "et", "fa", "fi", "fr", "hr", "hu", "hy", "id", "it", "ja", "ka", "ko", "lt", "lv", "ms", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh-Hans", "zh-Hant"],
"free_spins": true,
"target_outcomes": true,
"image": "https://notell-api.com/cards/gates-of-olympus.webp?v=b6bcc3025a29",
"category": "cluster-tumble",
"tags": ["cluster-tumble", "buy-feature", "ante-bet"],
"rtp": {"default": 96.65, "min": 60, "max": 100, "configurable": true, "by_mode": {"base": 96.65, "ante": 96.72, "buy": 96.14}, "note": "default = the game's natural RTP (percent) when the operator has not set one; the operator may set any RTP from 60 to 100 percent per project (admin: RTP settings). Percent of total bet."},
"volatility": "high",
"volatility_basis": "win_sd",
"hit_frequency": 0.3559,
"max_win": 5000,
"features": {"buy_feature": true, "ante_bet": true, "free_spins": true, "target_outcomes": true}
}
]
}| Поле | Тип | Описание |
|---|---|---|
releaseId | string | Идентификатор релиза платформы; информационное. |
games[].game_id | string | Идентификатор для symbol в /playGame.do и /gameActions.do. |
games[].name | string | Отображаемое название. |
games[].provider | enum | endorphina, pragmatic or nolimitcity. |
games[].languages | array<string> | Стандартные коды языков, которые игра принимает при запуске (Языки). |
games[].free_spins | boolean | Для игры доступны фриспины оператора. |
games[].target_outcomes | boolean | Для игры доступны целевые исходы оператора. |
games[].image | string | Абсолютный URL карточки игры (портрет 3:4, WebP) на origin API; null, если карточки у игры ещё нет. Часть ?v= меняется при смене картинки: кэшируйте по полному URL. |
games[].category | enum | Одно из video-slot, classic, megaways, cluster-tumble, hold-and-win, dice, fishing. |
games[].tags | array<string> | Все подходящие признаки (категория и, например, book, buy-feature, ante-bet). |
games[].rtp.default | number | Естественный RTP игры в процентах, если оператор не задал свой; null, если у игры нет калибровки. |
games[].rtp.min, rtp.max | number | Диапазон, который оператор может задать для проекта и игрока: от 60 до 100 процентов (Управление RTP); null, если у игры нет калибровки (configurable: false). |
games[].rtp.by_mode | object | Естественный RTP каждого откалиброванного режима (базовый спин, покупка бонуса, анте …). |
games[].volatility | enum | low, medium, high или very-high (правило ниже); null без калибровки. |
games[].volatility_basis | enum | win_sd или observed_max_win. |
games[].hit_frequency | number | Доля базовых спинов с выигрышем (если известна). |
games[].max_win | number | Максимально возможный выигрыш в кратных общей ставки; null, если неизвестен. |
games[].features | object | Булевы buy_feature, ante_bet, free_spins, target_outcomes. |
Errors#
| Код | HTTP | Когда |
|---|---|---|
| none | 200 | У endpoint нет собственных ответов с ошибкой. |
Как определяется волатильность#
Правило механическое и воспроизводится по статистике калибровки каждой игры (базовый спин, миллионы смоделированных раундов):
volatility_basis: "win_sd": стандартное отклонение sd выигрыша в ставках: low ниже 3.5, medium от 3.5 до 7, high от 7 до 14, very-high от 14.volatility_basis: "observed_max_win": для игр, у которых калибровка хранит только экстремумы, — наибольший выигрыш в симуляции, в ставках: low ниже 300, medium ниже 1500, high ниже 3000, very-high от 3000.
Категория и теги определяются по семейству и названию игры (megaways, кластерные выплаты с тумблами, hold-and-win, кости, рыбалка, классические фрукты, книга); это описательные метки для фильтрации в лобби.
GET /games/health#
/games/healthОпубликованные игры с полями каталога и диагностическими идентификаторами сборки.
Request#
curl -s https://notell-api.com/games/healthconst res = await fetch('https://notell-api.com/games/health');
const data = await res.json();Параметров нет.
Response#
{
"status": "ok",
"releaseId": "batch04-wave2-release177",
"databasePurpose": "one working nonwithdrawable TEST_ONLY RGS database",
"games": [
{
"game_id": "gates-of-olympus",
"client_profile": "442883-desktop-local-v1",
"adapter_version": "gates-pragmatic-v1",
"math_version": "gates-test-v4",
"math_config_hash": "17f1cf2e6593f0b807dc0ffd4939365d96992ae663f39d4f2bd8f767f4656b4d",
"languages": ["en", "ar", "bg", "bn", "cs", "da", "de", "el", "es", "et", "fa", "fi", "fr", "hr", "hu", "hy", "id", "it", "ja", "ka", "ko", "lt", "lv", "ms", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh-Hans", "zh-Hant"],
"free_spins": true,
"target_outcomes": true,
"image": "https://notell-api.com/cards/gates-of-olympus.webp?v=b6bcc3025a29",
"category": "cluster-tumble",
"tags": ["cluster-tumble", "buy-feature", "ante-bet"],
"rtp": {"default": 96.65, "min": 60, "max": 100, "configurable": true, "by_mode": {"base": 96.65, "ante": 96.72, "buy": 96.14}, "note": "default = the game's natural RTP (percent) when the operator has not set one; the operator may set any RTP from 60 to 100 percent per project (admin: RTP settings). Percent of total bet."},
"volatility": "high",
"volatility_basis": "win_sd",
"hit_frequency": 0.3559,
"max_win": 5000,
"features": {"buy_feature": true, "ante_bet": true, "free_spins": true, "target_outcomes": true}
}
]
}| Поле | Тип | Описание |
|---|---|---|
games[] | array<object> | Те же поля, что в /games/catalog, кроме name и provider. |
games[].client_profile, adapter_version, math_version, math_config_hash | string | Идентификаторы сборки для диагностики; не полагайтесь на них. |
releaseId, databasePurpose | string | Информационные. |
Errors#
| Код | HTTP | Когда |
|---|---|---|
| none | 200 | У endpoint нет собственных ответов с ошибкой. |
GET /capabilities#
/capabilitiesСтабильный контракт для казино: что поддерживает каждая игра, а также лимиты запросов и IP-адреса колбэков окружения.
Request#
curl -s https://notell-api.com/capabilitiesconst res = await fetch('https://notell-api.com/capabilities');
const data = await res.json();Параметров нет.
Response#
Массивы currencies здесь сокращены; настоящие содержат все 157 кодов (Валюты).
{
"status": "ok",
"mode": "TEST_ONLY",
"currencies": [{"code": "EUR", "precision": 2}, {"code": "UAH", "precision": 2}, {"code": "USD", "precision": 2}],
"callbackSourceIps": ["212.192.5.4"],
"rateLimits": {"launchPerMinute": 1200, "actionsPerMinute": 600, "reportsPerMinute": 120},
"games": [
{
"gameId": "gates-of-olympus",
"name": "Gates of Olympus",
"provider": "pragmatic",
"currencies": ["EUR", "UAH", "USD"],
"languages": ["ru", "en", "uk"],
"defaultCurrency": "UAH",
"defaultLanguage": "uk",
"promoSupported": true,
"modes": ["spin", "ante", "purchase", "promo"],
"image": "https://notell-api.com/cards/gates-of-olympus.webp?v=b6bcc3025a29",
"category": "cluster-tumble",
"tags": ["cluster-tumble", "buy-feature", "ante-bet"],
"rtp": {"default": 96.65, "min": 60, "max": 100, "configurable": true, "by_mode": {"base": 96.65, "ante": 96.72, "buy": 96.14}, "note": "default = the game's natural RTP (percent) when the operator has not set one; the operator may set any RTP from 60 to 100 percent per project (admin: RTP settings). Percent of total bet."},
"volatility": "high",
"volatility_basis": "win_sd",
"hit_frequency": 0.3559,
"max_win": 5000,
"features": {"buy_feature": true, "ante_bet": true, "free_spins": true, "target_outcomes": true}
}
]
}| Поле | Тип | Описание |
|---|---|---|
mode | string | "TEST_ONLY". |
currencies[] | array<object> | code и precision (всегда 2) каждой принимаемой валюты. |
callbackSourceIps | array<string> | Адреса, с которых приходят колбэки кошелька (IP колбэков). В песочнице пусто. |
rateLimits | object | Квоты в минуту launchPerMinute, actionsPerMinute, reportsPerMinute (Соглашения). |
games[].gameId | string | Идентификатор игры (здесь camelCase, в других местах game_id). |
games[].provider | enum | endorphina, pragmatic or nolimitcity. |
games[].currencies | array<string> | Валюты, которые принимает игра. |
games[].languages | array<string> | Только языки казино ru, en, uk, и только те, что поддерживает игра (у некоторых игр только ru и en): фиксированный контракт для фронтендов казино. Полный список по игре — в /games/catalog. |
games[].modes | array<string> | Информационные названия режимов игры (например, spin, ante, purchase, gamble). |
games[].promoSupported | boolean | Оставлено для совместимости с контрактом казино; для фриспинов оператора используйте free_spins в каталоге. |
Каждая игра также содержит поля каталога (image, category, tags, rtp, volatility, max_win, features). У некоторых игр есть дополнительные информационные поля (например, configurableRtp); они необязательны.
Errors#
| Код | HTTP | Когда |
|---|---|---|
| none | 200 | У endpoint нет собственных ответов с ошибкой. |
GET /health#
/healthПроверка доступности только для мониторинга; не вызывайте её на каждое действие игрока.
Request#
curl -s https://notell-api.com/healthconst res = await fetch('https://notell-api.com/health');
const data = await res.json();Параметров нет.
Response#
{
"status": "ok",
"mode": "TEST_ONLY",
"backend": "experimental",
"client": "LOCAL_BUILD_TESTING",
"mathVersion": "gates-test-v4",
"runtime": "slots-ui-rgs",
"releaseId": "batch04-wave2-release177"
}| Поле | Тип | Описание |
|---|---|---|
status | string | "ok". |
mode | string | "TEST_ONLY". |
backend, client, mathVersion, runtime, releaseId | string | Диагностические идентификаторы; информационные. |
Errors#
| Код | HTTP | Когда |
|---|---|---|
DATABASE_UNAVAILABLE | 503 | Платформа не может обратиться к своему хранилищу. |
Использование каталога в интеграции#
- Стройте лобби по
GET /games/catalog;/capabilities— стабильный контракт для казино. - Прежде чем предлагать фриспины или целевые исходы в бэк-офисе, проверьте флаги; иначе API ответит
FREE_SPINS_UNSUPPORTED/FORCED_OUTCOMES_UNSUPPORTED. - Какие необязательные режимы (покупка бонуса, анте, гэмбл) доступны проекту, задаётся в админ-панели, Projects → Providers.