Notell API Docs
English

Возможности

API отчётов

Три метода POST https://notell-api.com/gameActions.do только для чтения отчитываются по вашему проекту: история раундов, валовый игровой доход и сверка по игрокам с вашим учётом.

  • Они аутентифицируются, как и любой метод оператора: partner, api_key и разрешённый IP. Они ничего не меняют.
  • У них своя, меньшая квота частоты (отчёты считаются отдельно от остальных действий), заголовок Idempotency-Key они игнорируют.
  • Неизвестные поля отклоняются с INVALID_REQUEST. Общие ошибки (UNAUTHORIZED, IP_NOT_ALLOWED, RATE_LIMITED) перечислены в Ошибках и ниже не повторяются.
  • Основа отчётов — список операций кошелька, которые платформа отправила вам (bet, win, refund). Деньги двигают только операции, которые ваш кошелёк подтвердил; остальные показываются как ожидающие. Суммы — десятичные строки в валюте раунда; время — UTC, ISO 8601.
  • Даты: from и to принимают дату ISO (2027-02-01, полночь UTC) или дату-время с часовым поясом (2027-02-01T08:00:00Z или +02:00). Дата-время без пояса отклоняется. from включительно, to не включительно.
  • Раунды демо-режима в отчёты никогда не попадают.

report_rounds#

POST/gameActions.domethodreport_rounds

История раундов, сначала новые, с состоянием каждой операции кошелька.

Запрос#

curl
curl -s -X POST https://notell-api.com/gameActions.do \
  -H 'Content-Type: application/json' \
  -d '{
    "method": "report_rounds",
    "partner": "demo-casino",
    "api_key": "YOUR_API_KEY",
    "player_id": "player-1024",
    "from": "2027-02-01",
    "to": "2027-02-16",
    "limit": 100
  }'
JSON
{
  "method": "report_rounds",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "player_id": "player-1024",
  "from": "2027-02-01",
  "to": "2027-02-16",
  "limit": 100
}
ПолеТипОбязательноОписание
player_idstringнетТолько этот игрок. До 128 символов.
symbolstringнетТолько этот id игры.
currencystringнетТолько эта валюта ISO 4217.
round_idstringнетТолько этот раунд (UUID). Любое другое значение даёт пустой список.
stateenumнетsettled, pending, cancelled или rejected.
from, tostringнетПериод по началу раунда. from должен быть раньше to.
limitintegerнетРазмер страницы, 1–500. По умолчанию: 100.
cursorstringнетnext_cursor предыдущей страницы.

Ответ#

json
{
  "status": "ok",
  "rounds": [
    {
      "round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12",
      "player_id": "player-1024",
      "symbol": "gates-of-olympus",
      "currency": "EUR",
      "mode": "spin",
      "state": "settled",
      "free_spin": false,
      "bet": {"amount": "1.50", "status": "confirmed"},
      "win": {"amount": "12.75", "status": "confirmed"},
      "refund": {"amount": null, "status": null},
      "cancel_reason": null,
      "created_at": "2027-02-15T12:00:00.000Z",
      "settled_at": "2027-02-15T12:00:03.000Z"
    }
  ],
  "next_cursor": null
}
ПолеТипОписание
roundsarray<object>Раунды, сначала новые.
rounds[].round_idstringId раунда (UUID).
rounds[].player_id, rounds[].symbol, rounds[].currencystringИгрок, id игры, валюта раунда.
rounds[].modestringРежим ставки раунда (например, spin, либо режим покупки бонуса или анте).
rounds[].stateenumsettled, debit_pending, in_progress, credit_pending, rejected (кошелёк отклонил ставку), cancelled (отмена и возврат) или reconciliation_required.
rounds[].free_spinbooleantrue для раунда фриспина; его bet.amount равен 0.00.
rounds[].bet, .win, .refundobject{amount, status}. amount — null, если такой операции нет. status — planned, sent, unknown, confirmed или rejected (null, если операции нет).
rounds[].cancel_reasonstring or nullwallet_unconfirmed или operator_cancel для отменённого раунда.
rounds[].created_at, rounds[].settled_atstringISO 8601, UTC; settled_at — null, пока раунд не рассчитан.
next_cursorstring or nullПередайте как cursor для следующей страницы; null на последней.

Выигрыши выдачи фриспинов зачисляются один раз в конце выдачи, поэтому суммы win по отдельным раундам фриспинов не совпадают с кошельком один в один; для сравнения итогов используйте report_reconciliation.

Ошибки#

КодHTTPКогда
INVALID_REQUEST400Неизвестное поле или неверный тип.
INVALID_PLAYER_ID400player_id — не строка до 128 символов без управляющих символов.
INVALID_SYMBOL400symbol некорректен.
INVALID_CURRENCY400currency — не поддерживаемая валюта.
INVALID_ROUND_ID400round_id — не строка до 64 символов.
INVALID_STATE400state — не одно из четырёх значений.
INVALID_FROM400from — не дата ISO и не дата-время с поясом.
INVALID_TO400to — не дата ISO и не дата-время с поясом.
INVALID_PERIOD400from не раньше to.
INVALID_LIMIT400limit — не целое число от 1 до 500.
INVALID_CURSOR400cursor — не значение, выданное этим методом.

report_ggr#

POST/gameActions.domethodreport_ggr

Валовый игровой доход по подтверждённым операциям кошелька: ggr = ставки − возвраты − выигрыши.

Запрос#

curl
curl -s -X POST https://notell-api.com/gameActions.do \
  -H 'Content-Type: application/json' \
  -d '{
    "method": "report_ggr",
    "partner": "demo-casino",
    "api_key": "YOUR_API_KEY",
    "from": "2027-02-01",
    "to": "2027-03-01",
    "group_by": ["day", "symbol", "currency"]
  }'
JSON
{
  "method": "report_ggr",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "from": "2027-02-01",
  "to": "2027-03-01",
  "group_by": ["day", "symbol", "currency"]
}
ПолеТипОбязательноОписание
from, tostringнетПериод по началу раунда (UTC). По умолчанию: to — ближайшая следующая полночь UTC, from — за 31 день до to. Не более 366 дней.
group_byarray<enum>нетЛюбые из day, symbol, currency. По умолчанию: все три. Меньше ключей — более крупные итоги.
symbol, currencystringнетФильтры.

Ответ#

json
{
  "status": "ok",
  "period": {"from": "2027-02-01T00:00:00.000Z", "to": "2027-03-01T00:00:00.000Z"},
  "group_by": ["day", "symbol", "currency"],
  "rows": [
    {
      "day": "2027-02-15",
      "symbol": "gates-of-olympus",
      "currency": "EUR",
      "rounds": 120,
      "cancelled_rounds": 1,
      "free_spin_rounds": 4,
      "bets": "180.00",
      "wins": "171.30",
      "refunds": "1.50",
      "ggr": "7.20",
      "pending_operations": 0
    }
  ],
  "note": "ggr = bets - refunds - wins, confirmed wallet operations only; amounts per row currency (do not add across currencies)."
}
ПолеТипОписание
periodobjectФактические from и to.
group_byarray<string>Применённые ключи группировки.
rowsarray<object>Одна строка на группу, не более 20 000 (лишние строки отбрасываются без сообщения; сузьте период или фильтры).
rows[].day, .symbol, .currencystringТолько ключи, названные в group_by.
rows[].roundsintegerРаундов в группе.
rows[].cancelled_roundsintegerИз них отменённых.
rows[].free_spin_roundsintegerИз них раундов фриспинов.
rows[].bets, .wins, .refunds, .ggrmoneyПодтверждённые суммы в валюте строки. Суммы разных валют не складывайте.
rows[].pending_operationsintegerРаундов группы, у которых ещё есть неподтверждённая операция; их деньги пока не в итогах.
notestringФиксированное пояснение формулы.

Ошибки#

КодHTTPКогда
INVALID_REQUEST400Неизвестное поле или неверный тип.
INVALID_FROM400from — не дата ISO и не дата-время с поясом.
INVALID_TO400to — не дата ISO и не дата-время с поясом.
INVALID_PERIOD400from не раньше to либо период длиннее 366 дней.
INVALID_GROUP_BY400group_by — не массив из day, symbol, currency.
INVALID_SYMBOL400symbol некорректен.
INVALID_CURRENCY400currency — не поддерживаемая валюта.

report_reconciliation#

POST/gameActions.domethodreport_reconciliation

Итоги по игрокам и валютам для сверки с вашим учётом. Период применяется ко времени операции кошелька, а не раунда.

Запрос#

curl
curl -s -X POST https://notell-api.com/gameActions.do \
  -H 'Content-Type: application/json' \
  -d '{
    "method": "report_reconciliation",
    "partner": "demo-casino",
    "api_key": "YOUR_API_KEY",
    "from": "2027-02-15",
    "to": "2027-02-16",
    "limit": 200
  }'
JSON
{
  "method": "report_reconciliation",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "from": "2027-02-15",
  "to": "2027-02-16",
  "limit": 200
}
ПолеТипОбязательноОписание
player_idstringнетТолько этот игрок.
currencystringнетТолько эта валюта.
from, tostringнетПериод операций кошелька. from должен быть раньше to.
limitintegerнетРазмер страницы, 1–1000. По умолчанию: 200.
cursorstringнетnext_cursor предыдущей страницы.

Ответ#

json
{
  "status": "ok",
  "players": [
    {
      "player_id": "player-1024",
      "currency": "EUR",
      "bets": "7.00",
      "wins": "3.50",
      "refunds": "5.00",
      "net_wallet_change": "1.50",
      "bet_count": 2,
      "win_count": 1,
      "refund_count": 1,
      "pending": {"operations": 0, "refunds": "0.00", "wins": "0.00"}
    }
  ],
  "next_cursor": null,
  "note": "net_wallet_change = wins + refunds - bets (confirmed operations): the change your wallet must show for the period; compare it with your own ledger per player and currency."
}
ПолеТипОписание
players[].player_id, players[].currencystringОдна строка на игрока и валюту.
players[].bets, .wins, .refundsmoneyПодтверждённые итоги.
players[].net_wallet_changemoneyвыигрыши + возвраты − ставки: изменение вашего кошелька от операций платформы. Если оно расходится с вашим учётом по тому же игроку, валюте и периоду, смотрите pending и report_rounds.
players[].bet_count, .win_count, .refund_countintegerЧисло подтверждённых операций.
players[].pendingobjectНеподтверждённые операции: их число operations и суммы refunds и wins.
next_cursorstring or nullПередайте как cursor для следующей страницы; null на последней.
notestringФиксированное пояснение формулы.

Ошибки#

КодHTTPКогда
INVALID_REQUEST400Неизвестное поле или неверный тип.
INVALID_PLAYER_ID400player_id некорректен.
INVALID_CURRENCY400currency — не поддерживаемая валюта.
INVALID_FROM400from — не дата ISO и не дата-время с поясом.
INVALID_TO400to — не дата ISO и не дата-время с поясом.
INVALID_PERIOD400from не раньше to.
INVALID_LIMIT400limit — не целое число от 1 до 1000.
INVALID_CURSOR400cursor — не значение, выданное этим методом.

См. также#

Документация для операторов и интеграторов.Платформа TEST_ONLY: невыводимые единицы, реальные платежи не используются.