REST API v1 · Разработчикам · Справочник API

Справочник API: Банк

Все 4 эндпоинта раздела «Банк» в REST API BotGG v1: права, параметры, поля, ошибки и готовые примеры на curl, JavaScript и Python.

Документация для разработчиков
На этой странице

Эндпоинты

Пути указаны относительно https://console.botgg.app/api/v1. Передавайте API-ключ в заголовке Authorization: Bearer botgg_…; ID — строки.

Эндпоинты: Банк
ЭндпоинтПравоОписание
GET/guilds/{guildId}/bank/members/{userId}bank:readGet a member’s balance
GET/guilds/{guildId}/bank/members/{userId}/transactionsbank:readList a member’s transactions
POST/guilds/{guildId}/bank/members/{userId}/transactionsbank:writeAdd to or remove from a member’s balance
GET/guilds/{guildId}/bank/leaderboardbank:readTop balances

Кроме собственных ошибок (см. ниже), любой эндпоинт может вернуть эти общие:

Get a member’s balance

GET/guilds/{guildId}/bank/members/{userId}

Право: bank:read

Members without an account yet get the server’s starting balance.

На сервере должен быть включён модуль: Банк

Параметры
ИмяГдеТипОбязательноеОписание
guildIdпутьstringДаID вашего сервера · Discord ID (строка)
userIdпутьstringДаDiscord ID участника · Discord ID (строка)

Ответ

Поля ответа · 200
ПолеТипОбязательноеОписание
userIdstringДа
balanceintegerДа
currencyobjectДа
currency.namestringДа
currency.pluralstringДа
currency.emojistring | nullДа
Ответ · 200
{
  "userId": "876543210987654321",
  "balance": 1350,
  "currency": {
    "name": "Example",
    "plural": "example",
    "emoji": "🪙"
  }
}

Примеры

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

Ошибки

Ошибки
HTTPКоды
409BANK_DISABLED
503SERVICE_UNAVAILABLE

List a member’s transactions

GET/guilds/{guildId}/bank/members/{userId}/transactions

Право: bank:read

Newest first. Pass before=<nextCursor> for the next page.

На сервере должен быть включён модуль: Банк

Параметры
ИмяГдеТипОбязательноеОписание
guildIdпутьstringДаID вашего сервера · Discord ID (строка)
userIdпутьstringДаDiscord ID участника · Discord ID (строка)
limitqueryintegerНет1–100 · По умолчанию 25
beforequeryintegerНетне меньше 1

Ответ

Поля ответа · 200
ПолеТипОбязательноеОписание
itemsarray of objectДа
items[].idintegerДа
items[].typestringДа
items[].amountintegerДа
items[].balanceAfterintegerДа
items[].reasonstring | nullДа
items[].counterpartyIdstring | nullДа
items[].createdAtstringДа
nextCursorstring | nullДа
Ответ · 200
{
  "items": [
    {
      "id": 98765,
      "type": "example",
      "amount": 100,
      "balanceAfter": 1350,
      "reason": "Tournament prize",
      "counterpartyId": "234567890123456789",
      "createdAt": "2026-10-07T12:00:00.000Z"
    }
  ],
  "nextCursor": "98700"
}

Примеры

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions?limit=25" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions?limit=25', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    params={
        "limit": 25,
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

Ошибки

Ошибки
HTTPКоды
409BANK_DISABLED
503SERVICE_UNAVAILABLE

Add to or remove from a member’s balance

POST/guilds/{guildId}/bank/members/{userId}/transactions

Право: bank:writeIdempotency-Key

Same rules as a banker change. Logged in the Bank ledger (type api) and the Bank log channel.

На сервере должен быть включён модуль: Банк

Параметры
ИмяГдеТипОбязательноеОписание
guildIdпутьstringДаID вашего сервера · Discord ID (строка)
userIdпутьstringДаDiscord ID участника · Discord ID (строка)
Idempotency-KeyзаголовокstringНетНеобязательно. Передайте уникальное значение (UUID) и повторяйте его при ретраях — операция выполнится один раз. Как это работает

Тело запроса

Тело запроса
ПолеТипОбязательноеОписание
typestringДаadd = credit, remove = debit
Одно из add, remove
amountintegerДа1–1 000 000 000 000
reasonstring | nullНетShown in the Bank ledger and log
до 200 символов

Ответ

Поля ответа · 201
ПолеТипОбязательноеОписание
transactionIdintegerДа
userIdstringДа
typestringДаОдно из add, remove
amountintegerДа
previousBalanceintegerДа
balanceintegerДа
createdAtstringДа
Ответ · 201
{
  "transactionId": 98765,
  "userId": "876543210987654321",
  "type": "add",
  "amount": 100,
  "previousBalance": 1250,
  "balance": 1350,
  "createdAt": "2026-10-07T12:00:00.000Z"
}

Примеры

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"type":"add","amount":100,"reason":"Tournament prize"}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    type: 'add',
    amount: 100,
    reason: 'Tournament prize',
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/members/876543210987654321/transactions",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "type": "add",
        "amount": 100,
        "reason": "Tournament prize",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

Ошибки

Top balances

GET/guilds/{guildId}/bank/leaderboard

Право: bank:read

На сервере должен быть включён модуль: Банк

Параметры
ИмяГдеТипОбязательноеОписание
guildIdпутьstringДаID вашего сервера · Discord ID (строка)
limitqueryintegerНет1–100 · По умолчанию 10

Ответ

Поля ответа · 200
ПолеТипОбязательноеОписание
itemsarray of objectДа
items[].rankintegerДа
items[].userIdstringДа
items[].balanceintegerДа
currencyobjectДа
currency.namestringДа
currency.pluralstringДа
currency.emojistring | nullДа
Ответ · 200
{
  "items": [
    {
      "rank": 1,
      "userId": "876543210987654321",
      "balance": 1350
    }
  ],
  "currency": {
    "name": "Example",
    "plural": "example",
    "emoji": "🪙"
  }
}

Примеры

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/leaderboard?limit=10" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/bank/leaderboard?limit=10', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/bank/leaderboard",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    params={
        "limit": 10,
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

Ошибки

Ошибки
HTTPКоды
409BANK_DISABLED
503SERVICE_UNAVAILABLE

Готовы прокачать свой сервер?

Добавьте BotGG бесплатно и включайте нужные функции в веб-консоли.