Авторизация

Получение секретного ключа пользователя через API

Инструкция для интеграторов: как получить секрет пользователя бота и использовать его в последующих запросах.


Что это за ключ

Имя в ответе APIИмя в запросах (API модулей)Имя в запросах (корзина, заказы пользователя)
secret_user_keysecret_keysecret_user_key
  • Идентифицирует конкретного пользователя в контексте конкретного бота.
  • Нужен для операций от имени пользователя: корзина, оформление заказа, баланс, вывод и т.п.
  • Не путать с secretKey в query — это секрет бота (для API владельца), а не пользователя.

Где в ответе искать ключ

При успешном ответе (result: true) объект пользователя содержит поле secret_user_key:

{
  "result": true,
  "data": {
    "id": 123,
    "bot_id": 1,
    "user": {
      "telegram_id": 182352323552,
      "username": "username",
      "first_name": "Иван"
    },
    "secret_user_key": "k7f3a9b2c1d4e5f6"
  }
}
ПолеОписание
data.idID пользователя в контексте бота — используйте как user_id в API корзины и публичных заказов
data.user.telegram_idTelegram ID — используйте как user_id в API модулей при передаче secret_key
data.secret_user_keyСекрет пользователя — сохраните для следующих запросов

Перед использованием данных всегда проверяйте result === true.

Формат ошибки:

{ "result": false, "message": "текст ошибки" }

Лимит: 120 запросов в минуту с одного IP.


Способы получить ключ

1. API владельца бота (сервер с токеном бота)

Когда: у вас есть токен бота или секрет бота; нужен ключ по известному Telegram ID или ID записи пользователя.

Метод: POST
Заголовок: Content-Type: application/json

ПараметрГдеОбяз.Описание
bot_idтелодаID бота в BOT-T
token или botTokenquery или телода*Токен Bot API
secretKeyqueryда*Секрет бота (вместо токена)
  • Достаточно либо токена, либо secretKey бота.

Базовый URL (подставьте свой хост):

https://api.bot-t.com


POST /v1/bot/user/view-by-telegram-id

Один пользователь по Telegram ID.

ПолеТипОбяз.Описание
bot_idintegerда
telegram_idintegerдаTelegram ID

Тело запроса:

{
  "bot_id": 1,
  "telegram_id": 182352323552
}

Пример с токеном в query:

POST https://api.bot-t.com/v1/bot/user/view-by-telegram-id?token=123456789:ABCdefGHI...

Ответ: data.secret_user_key, data.id.


POST /v1/bot/user/view

По ID записи пользователя в боте.

ПолеТипОбяз.Описание
bot_idintegerда
user_idintegerдаID пользователя в контексте бота (поле id из ответа выше)

Тело:

{
  "bot_id": 1,
  "user_id": 123
}

POST /v1/bot/user/view-by-user-id

По системному ID пользователя в BOT-T (не Telegram ID).

ПолеТипОбяз.Описание
bot_idintegerда
user_idintegerдаСистемный ID пользователя

POST /v1/bot/user/index

Список пользователей; в каждом элементе массива data есть secret_user_key.

ПолеТипПо умолчаниюОписание
bot_idintegerобязательно
limitinteger25записей на страницу, максимум 500
offsetinteger0пагинация
telegram_idintegerфильтр по Telegram ID

Тело (пример):

{
  "bot_id": 1,
  "telegram_id": 182352323552,
  "limit": 1,
  "offset": 0
}

2. API веб-модуля (сервер с ключами модуля)

Когда: backend модуля хранит public_key и private_key экземпляра модуля; нужен ключ пользователя по Telegram ID.

Метод: POST
Заголовок: Content-Type: application/json
Базовый URL:

https://api.bot-t.com

POST /v1/module/user/get

ПолеТипОбяз.Описание
idintegerдаTelegram ID пользователя
public_keystringдаПубличный ключ экземпляра модуля
private_keystringдаПриватный ключ модуля (только на backend)

Тело:

{
  "id": 182352323552,
  "public_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "private_key": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}

Ответ: объект пользователя с secret_user_key.
В дальнейших запросах модуля от имени пользователя передавайте:

  • user_id — Telegram ID;
  • secret_key — значение из secret_user_key.

3. Авторизация Telegram Web App / Login Widget

Когда: пользователь открыл Web App или прошёл Login Widget; на клиенте есть данные от Telegram с полем hash (initData, query-строка).

Токен бота и ключи модуля не нужны.

POST /v1/module/bot/check-hash

ПолеТипОбяз.Описание
bot_idintegerдаID бота
userDatastringдаСтрока query-параметров от Telegram (с hash); допустим ведущий ?
bot_clone_idintegerнетID клона бота, если используется

Тело (JSON):

{
  "bot_id": 1,
  "userData": "query_id=AAHdF6IQ...&user=%7B%22id%22%3A182352323552...&hash=abc123..."
}

Допускается также application/x-www-form-urlencoded.

Ответ: объект пользователя с secret_user_key и id для последующих запросов.

Рекомендация: передавайте userData на свой backend, который вызовет check-hash; не вызывайте этот метод напрямую из публичного JS с долгоживущими секретами модуля.


Сводная таблица

СценарийURLАвторизацияЧто передатьПоле в ответе
Backend владельца ботаPOST /v1/bot/user/view-by-telegram-idтокен или secretKey ботаtelegram_idsecret_user_key
Backend владельца ботаPOST /v1/bot/user/viewто жеuser_id (ID в боте)secret_user_key
Backend модуляPOST /v1/module/user/getpublic_key + private_keyid (Telegram ID)secret_user_key
Web App / LoginPOST /v1/module/bot/check-hashне требуетсяuserData от Telegramsecret_user_key

Методы, которые не выдают новый ключ

URLНазначение
POST /v1/module/user/check-secretПроверка уже известного secret_key
POST /v1/bot/auth/view-by-keyДанные пользователя по уже известному secret_user_key

Как использовать после получения

Тип APIuser_id в запросеСекрет в запросе
Корзина, публичные заказыID пользователя в боте (data.id)secret_user_key
API модуля (баланс, заказ, вывод)Telegram IDsecret_key

Пример авторизации для корзины (каждый запрос):

{
  "bot_id": 1,
  "user_id": 123,
  "secret_user_key": "k7f3a9b2c1d4e5f6"
}

Безопасность

  1. Не передавайте токен бота и private_key модуля в браузер, мобильное приложение и публичный JavaScript.
  2. Для Web App: userData → ваш backend → check-hash → сохранить secret_user_key в сессии.
  3. Методы владельца бота (view-by-telegram-id, index) — только с доверенного сервера.
  4. Считайте secret_user_key паролем сессии пользователя; при утечке возможны запросы от его имени.

Типовой сценарий (Web App + корзина)

  1. Пользователь открывает Web App → клиент получает initData / query от Telegram.
  2. Backend вызывает POST /v1/module/bot/check-hash с bot_id и userData.
  3. Из ответа сохраняете data.id → user_id, data.secret_user_key.
  4. Все запросы корзины и заказов отправляете с этими тремя полями в JSON.