Notell API Docs
English

Интеграция

Каталог и возможности

Публичные 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#

GET/games/catalog

Список игр для вашего лобби.

Request#

curl
curl -s https://notell-api.com/games/catalog
Node.js
const res = await fetch('https://notell-api.com/games/catalog');
const data = await res.json();

Параметров нет.

Response#

json
{
  "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}
    }
  ]
}
ПолеТипОписание
releaseIdstringИдентификатор релиза платформы; информационное.
games[].game_idstringИдентификатор для symbol в /playGame.do и /gameActions.do.
games[].namestringОтображаемое название.
games[].providerenumendorphina, pragmatic or nolimitcity.
games[].languagesarray<string>Стандартные коды языков, которые игра принимает при запуске (Языки).
games[].free_spinsbooleanДля игры доступны фриспины оператора.
games[].target_outcomesbooleanДля игры доступны целевые исходы оператора.
games[].imagestringАбсолютный URL карточки игры (портрет 3:4, WebP) на origin API; null, если карточки у игры ещё нет. Часть ?v= меняется при смене картинки: кэшируйте по полному URL.
games[].categoryenumОдно из video-slot, classic, megaways, cluster-tumble, hold-and-win, dice, fishing.
games[].tagsarray<string>Все подходящие признаки (категория и, например, book, buy-feature, ante-bet).
games[].rtp.defaultnumberЕстественный RTP игры в процентах, если оператор не задал свой; null, если у игры нет калибровки.
games[].rtp.min, rtp.maxnumberДиапазон, который оператор может задать для проекта и игрока: от 60 до 100 процентов (Управление RTP); null, если у игры нет калибровки (configurable: false).
games[].rtp.by_modeobjectЕстественный RTP каждого откалиброванного режима (базовый спин, покупка бонуса, анте …).
games[].volatilityenumlow, medium, high или very-high (правило ниже); null без калибровки.
games[].volatility_basisenumwin_sd или observed_max_win.
games[].hit_frequencynumberДоля базовых спинов с выигрышем (если известна).
games[].max_winnumberМаксимально возможный выигрыш в кратных общей ставки; null, если неизвестен.
games[].featuresobjectБулевы buy_feature, ante_bet, free_spins, target_outcomes.

Errors#

КодHTTPКогда
none200У 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#

GET/games/health

Опубликованные игры с полями каталога и диагностическими идентификаторами сборки.

Request#

curl
curl -s https://notell-api.com/games/health
Node.js
const res = await fetch('https://notell-api.com/games/health');
const data = await res.json();

Параметров нет.

Response#

json
{
  "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_hashstringИдентификаторы сборки для диагностики; не полагайтесь на них.
releaseId, databasePurposestringИнформационные.

Errors#

КодHTTPКогда
none200У endpoint нет собственных ответов с ошибкой.

GET /capabilities#

GET/capabilities

Стабильный контракт для казино: что поддерживает каждая игра, а также лимиты запросов и IP-адреса колбэков окружения.

Request#

curl
curl -s https://notell-api.com/capabilities
Node.js
const res = await fetch('https://notell-api.com/capabilities');
const data = await res.json();

Параметров нет.

Response#

Массивы currencies здесь сокращены; настоящие содержат все 157 кодов (Валюты).

json
{
  "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}
    }
  ]
}
ПолеТипОписание
modestring"TEST_ONLY".
currencies[]array<object>code и precision (всегда 2) каждой принимаемой валюты.
callbackSourceIpsarray<string>Адреса, с которых приходят колбэки кошелька (IP колбэков). В песочнице пусто.
rateLimitsobjectКвоты в минуту launchPerMinute, actionsPerMinute, reportsPerMinute (Соглашения).
games[].gameIdstringИдентификатор игры (здесь camelCase, в других местах game_id).
games[].providerenumendorphina, pragmatic or nolimitcity.
games[].currenciesarray<string>Валюты, которые принимает игра.
games[].languagesarray<string>Только языки казино ru, en, uk, и только те, что поддерживает игра (у некоторых игр только ru и en): фиксированный контракт для фронтендов казино. Полный список по игре — в /games/catalog.
games[].modesarray<string>Информационные названия режимов игры (например, spin, ante, purchase, gamble).
games[].promoSupportedbooleanОставлено для совместимости с контрактом казино; для фриспинов оператора используйте free_spins в каталоге.

Каждая игра также содержит поля каталога (image, category, tags, rtp, volatility, max_win, features). У некоторых игр есть дополнительные информационные поля (например, configurableRtp); они необязательны.

Errors#

КодHTTPКогда
none200У endpoint нет собственных ответов с ошибкой.

GET /health#

GET/health

Проверка доступности только для мониторинга; не вызывайте её на каждое действие игрока.

Request#

curl
curl -s https://notell-api.com/health
Node.js
const res = await fetch('https://notell-api.com/health');
const data = await res.json();

Параметров нет.

Response#

json
{
  "status": "ok",
  "mode": "TEST_ONLY",
  "backend": "experimental",
  "client": "LOCAL_BUILD_TESTING",
  "mathVersion": "gates-test-v4",
  "runtime": "slots-ui-rgs",
  "releaseId": "batch04-wave2-release177"
}
ПолеТипОписание
statusstring"ok".
modestring"TEST_ONLY".
backend, client, mathVersion, runtime, releaseIdstringДиагностические идентификаторы; информационные.

Errors#

КодHTTPКогда
DATABASE_UNAVAILABLE503Платформа не может обратиться к своему хранилищу.

Использование каталога в интеграции#

  • Стройте лобби по GET /games/catalog; /capabilities — стабильный контракт для казино.
  • Прежде чем предлагать фриспины или целевые исходы в бэк-офисе, проверьте флаги; иначе API ответит FREE_SPINS_UNSUPPORTED / FORCED_OUTCOMES_UNSUPPORTED.
  • Какие необязательные режимы (покупка бонуса, анте, гэмбл) доступны проекту, задаётся в админ-панели, Projects → Providers.
Документация для операторов и интеграторов.Платформа TEST_ONLY: невыводимые единицы, реальные платежи не используются.