Возможности
Фриспины
Фриспины — спины, которые вы дарите игроку с фиксированной ставкой. Они разыгрываются в собственном клиенте игры и ничего не стоят игроку. Методы ниже позволяют выдавать их из вашей админки или CRM.
- Доступны для игр с
free_spins: trueв/games/health(1009 из 1010 игр). - Все методы —
POST https://notell-api.com/gameActions.doс полемmethod. Нужныpartner,api_keyи разрешённый IP. - Необязательный заголовок
Idempotency-Keyподдерживается всеми методами этой страницы (Соглашения). Общие ошибки (UNAUTHORIZED,IP_NOT_ALLOWED,INVALID_IDEMPOTENCY_KEY,IDEMPOTENCY_CONFLICT,RATE_LIMITED) перечислены в Ошибках и в таблицах ниже не повторяются. - Устаревшие методы
freespins_set,freespins_deleteиfreespins_getбез id отвечаютMETHOD_RETIRED. - В демо-режиме фриспины недоступны.
Как работают фриспины#
active --last spin settled--> used
active --expires_at passed--> expired (unused spins are dropped)
active --freespins_cancel---> cancelled- У игрока может быть несколько выдач на игру. Первой разыгрывается выдача, которая истекает раньше (при равенстве — более старая). Выдача действует только для того же
player_idи той жеcurrency, для которых она создана. - Пока выдача активна, игрок может играть в этой игре только фриспины. Платные спины, анте-ставки и покупки бонуса отклоняются (
FREE_SPINS_ACTIVE), пока выдача не использована, не истекла или не отменена. - Раунд, который уже начался к моменту истечения или отмены выдачи, завершается и оплачивается как обычно; выдача завершается только после него.
- Раунды фриспинов проходят ту же логику RTP, что и платные, и учитываются в адаптивном окне игрока с номинальной ставкой (RTP).
betи лимиты ставок проекта проверяются при создании выдачи и ещё раз при каждом спине.
Колбэки кошелька по выдаче#
Каждый раунд фриспина отправляет bet с суммой 0 и meta.is_freespins: true. Ваш кошелёк должен принимать нулевую ставку (Колбэки кошелька).
Выигрыши выдачи удерживаются и выплачиваются один раз. Выигравшие раунды не отправляются в ваш кошелёк по одному. Когда последний раунд выдачи рассчитан, платформа отправляет один win на всю сумму и только затем итоговый freespins_finished. win отправляется, только если сумма больше нуля. Его transaction одинаков при повторах, и он повторяется, пока вы не ответите ok.
{
"method": "win",
"player_id": "player-1024",
"amount": 23.5,
"meta": {
"symbol": "gates-of-olympus",
"time": 1803295800,
"transaction": "e8a2b6c4-1d3f-4a57-9b0e-6c7d2f1a3e55",
"round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12",
"session_id": "9d0c3f7e-2b1a-4c58-a6d3-7e4f1b0c9a28",
"is_freespins": true,
"freespins": {
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"nominal_bet": 1,
"total_win": 23.5,
"final_credit": true
}
},
"api_key": "YOUR_API_KEY"
}meta.round_id — последний рассчитанный раунд выдачи. Баланс игрока в игре обновляется локально по ходу спинов; ваш кошелёк пополняется этим одним win. После него отправляется итог.
Итоговый колбэк#
Когда выдача завершается (used, expired или cancelled), платформа отправляет на URL вашего кошелька ровно один колбэк freespins_finished и повторяет его, пока вы не ответите ok (задержки 10 с × 2<sup>попытки</sup>, не более 1 часа). Выдача с нерассчитанными раундами сначала ждёт их.
{
"method": "freespins_finished",
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"player_id": "player-1024",
"currency": "EUR",
"game": "gates-of-olympus",
"status": "used",
"total": 10,
"played": 10,
"bet": "1.00",
"total_win": "23.50",
"finished_at": "2027-02-15T12:30:00.000Z",
"api_key": "YOUR_API_KEY"
}Используйте его, чтобы закрыть акцию у себя. Деньги уже зачислены финальным win выше.
freespins_create#
/gameActions.domethodfreespins_createСоздаёт выдачу для одного игрока в одной игре.
Запрос#
curl -s -X POST https://notell-api.com/gameActions.do \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: spring-promo-1-player-1024' \
-d '{
"method": "freespins_create",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"count": 10,
"bet": "1.00",
"external_id": "spring-promo-1",
"meta": {"campaign": "spring"}
}'{
"method": "freespins_create",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"count": 10,
"bet": "1.00",
"external_id": "spring-promo-1",
"meta": {"campaign": "spring"}
}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
method | string | да | "freespins_create". |
partner, api_key | string | да | Идентификатор проекта и API-ключ. |
player_id | string | да | Ваш id игрока, 1–128 печатных ASCII-символов без пробелов. |
currency | string | да | Любой из 157 поддерживаемых кодов ISO 4217 (Валюты). Выдачу можно играть только в этой валюте. |
symbol | string | да | Id игры с free_spins: true. |
count | integer | да | Число спинов, 1–1000. |
bet | money | да | Полная ставка одного спина десятичной строкой. Должна совпадать с одной из ставок игры в базовом режиме и укладываться в лимиты ставок проекта, игры и игрока. |
expires_at | string | нет | Дата-время ISO 8601 с часовым поясом. От 1 часа до 30 дней после вызова. По умолчанию: сейчас + 7 дней. |
external_id | string | нет | Ваш id, уникальный в проекте, 1–128 печатных ASCII-символов без пробелов. Позволяет читать и отменять выдачу, не храня наш id. |
meta | object | нет | Произвольный JSON-объект до 4096 байт. Сохраняется с выдачей, но методами чтения не возвращается. |
Ответ#
{
"status": "ok",
"grant": {
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"provider": "pragmatic",
"total": 10,
"remaining": 10,
"played": 0,
"bet": "1.00",
"total_win": "0.00",
"status": "active",
"created_at": "2027-02-15T10:00:00.000Z",
"expires_at": "2027-02-28T12:00:00.000Z",
"finished_at": null
}
}| Поле | Тип | Описание |
|---|---|---|
grant.grant_id | string | Id выдачи (UUID). |
grant.external_id | string or null | Ваш id, если вы его передали. |
grant.player_id, grant.currency, grant.symbol | string | Кому, в какой валюте, в какой игре. |
grant.provider | string | pragmatic, endorphina или nolimitcity. |
grant.total, grant.remaining, grant.played | integer | Выдано, осталось и уже сыграно спинов. |
grant.bet | money | Ставка на спин. |
grant.total_win | money | Сумма выигрышей рассчитанных раундов выдачи на данный момент. |
grant.status | enum | active, used, expired или cancelled. |
grant.created_at, grant.expires_at | string | ISO 8601, UTC. |
grant.finished_at | string or null | null, пока выдача не завершена. |
Ошибки#
| Код | HTTP | Когда |
|---|---|---|
INVALID_REQUEST | 400 | Поле отсутствует, имеет неверный тип или формат, currency не поддерживается или meta слишком велик. |
GAME_NOT_FOUND | 404 | symbol не игра каталога. |
FREE_SPINS_UNSUPPORTED | 400 | Провайдер игры не поддерживает фриспины оператора. |
INVALID_COUNT | 400 | count — не целое число от 1 до 1000. |
INVALID_FREE_SPIN_BET | 400 | bet не строка или не является ставкой базового режима игры. |
INVALID_EXPIRY | 400 | В expires_at нет часового пояса, либо срок меньше 1 часа или больше 30 дней. |
DUPLICATE_EXTERNAL_ID | 409 | Выдача с таким external_id в проекте уже есть. |
PROJECT_BET_LIMIT | 400 | bet вне лимита проекта, игры или игрока для этой валюты. |
PROJECT_GAME_DISABLED | 400 | Игра или её провайдер выключены для проекта. |
CURRENCY_REQUIRED | 400 | У проекта нет диапазона ставок для этой валюты. |
GAME_MODE_DISABLED | 400 | Базовый режим игры выключен для проекта. |
freespins_get#
/gameActions.domethodfreespins_getВозвращает одну выдачу по grant_id или по вашему external_id.
Запрос#
curl -s -X POST https://notell-api.com/gameActions.do \
-H 'Content-Type: application/json' \
-d '{"method":"freespins_get","partner":"demo-casino","api_key":"YOUR_API_KEY","external_id":"spring-promo-1"}'{
"method": "freespins_get",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"external_id": "spring-promo-1"
}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
grant_id | string | ровно одно из grant_id / external_id | Id выдачи (UUID). |
external_id | string | ровно одно из grant_id / external_id | Ваш id. |
Ответ#
Тот же {"status": "ok", "grant": {…}}, что и у freespins_create, с текущими remaining, played, total_win и status.
{
"status": "ok",
"grant": {
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"provider": "pragmatic",
"total": 10,
"remaining": 6,
"played": 4,
"bet": "1.00",
"total_win": "7.20",
"status": "active",
"created_at": "2027-02-15T10:00:00.000Z",
"expires_at": "2027-02-28T12:00:00.000Z",
"finished_at": null
}
}Ошибки#
| Код | HTTP | Когда |
|---|---|---|
INVALID_REQUEST | 400 | Переданы оба или ни одного из grant_id и external_id, либо значение некорректно. |
GRANT_NOT_FOUND | 404 | В вашем проекте нет такой выдачи. |
METHOD_RETIRED | 400 | Не передан ни grant_id, ни external_id (устаревшая форма без id). |
freespins_list#
/gameActions.domethodfreespins_listВозвращает выдачи проекта, сначала новые, не более 200.
Запрос#
curl -s -X POST https://notell-api.com/gameActions.do \
-H 'Content-Type: application/json' \
-d '{"method":"freespins_list","partner":"demo-casino","api_key":"YOUR_API_KEY","player_id":"player-1024","status":"active"}'{
"method": "freespins_list",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"player_id": "player-1024",
"status": "active"
}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
player_id | string | нет | Только выдачи этого игрока. |
symbol | string | нет | Только выдачи на эту игру. |
currency | string | нет | Только выдачи в этой валюте. |
status | string | нет | active, used, expired или cancelled. Другие значения дают пустой список. |
Ответ#
{
"status": "ok",
"grants": [
{
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"provider": "pragmatic",
"total": 10,
"remaining": 6,
"played": 4,
"bet": "1.00",
"total_win": "7.20",
"status": "active",
"created_at": "2027-02-15T10:00:00.000Z",
"expires_at": "2027-02-28T12:00:00.000Z",
"finished_at": null
}
]
}| Поле | Тип | Описание |
|---|---|---|
grants | array<object> | Объекты выдач, см. freespins_create. Пусто, если ничего не найдено. |
Ошибки#
| Код | HTTP | Когда |
|---|---|---|
INVALID_REQUEST | 400 | У фильтра неверный тип. |
freespins_cancel#
/gameActions.domethodfreespins_cancelОтменяет активную выдачу: неиспользованные спины сгорают. Повтор возвращает ту же выдачу. Выдача, которая не active или без оставшихся спинов, возвращается без изменений.
Запрос#
curl -s -X POST https://notell-api.com/gameActions.do \
-H 'Content-Type: application/json' \
-d '{"method":"freespins_cancel","partner":"demo-casino","api_key":"YOUR_API_KEY","grant_id":"7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4"}'{
"method": "freespins_cancel",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4"
}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
grant_id | string | ровно одно из grant_id / external_id | Id выдачи (UUID). |
external_id | string | ровно одно из grant_id / external_id | Ваш id. |
Ответ#
{
"status": "ok",
"grant": {
"grant_id": "7b1c0e52-4f6a-4d8e-9a31-2c5e8f90b1d4",
"external_id": "spring-promo-1",
"player_id": "player-1024",
"currency": "EUR",
"symbol": "gates-of-olympus",
"provider": "pragmatic",
"total": 10,
"remaining": 6,
"played": 4,
"bet": "1.00",
"total_win": "7.20",
"status": "cancelled",
"created_at": "2027-02-15T10:00:00.000Z",
"expires_at": "2027-02-28T12:00:00.000Z",
"finished_at": "2027-02-17T09:15:00.000Z"
}
}finished_at заполняется, а итог ставится в очередь, как только у выдачи не остаётся нерассчитанных раундов: сразу или после расчёта раунда, который шёл (до этого он null).
Ошибки#
| Код | HTTP | Когда |
|---|---|---|
INVALID_REQUEST | 400 | Переданы оба или ни одного из grant_id и external_id. |
GRANT_NOT_FOUND | 404 | В вашем проекте нет такой выдачи. |
См. также#
- Колбэки кошелька: нулевой
bet, финальныйwinиfreespins_finished. - Лимиты ставок и Валюты.
- Админ-панель: те же выдачи можно вести в админ-панели.