← gemhubai.shop GemHub AI GemHub AI Reseller API API v1.2 Active
https://gemhubai.shop/api/v1/reseller 🔑 Получить API Key Поддержка @gemhubai
GemHub AI · Документация B2B API

Оптовый API цифровых подписок
Подключите каталог к своему Telegram-боту или сайту

GemHub AI поставляет лицензии и подписки для AI (ChatGPT Plus, Gemini Advanced), мультимедиа (Spotify, YouTube, Duolingo) и связи (Telegram Premium). С помощью Reseller API вы можете автоматически продавать эти товары своим клиентам по оптовым ценам в сомони (TJS) со списанием с единого баланса и моментальной выдачей ключей.

Оптовые цены в TJSРасчеты в сомони без скрытых курсовых потерь. 0% комиссии на закупку.
Моментальная выдача2–5 секунд на генерацию инвайта, аккаунта или лицензионного ключа.
Защита от дублейСтрогая идемпотентность по idempotencyKey исключает списания при сбоях.
Автовозврат средствЕсли у поставщика закончился сток, списанные сомони мгновенно возвращаются на счет.
МГНОВЕННЫЙ ДОСТУП БЕЗ МОДЕРАЦИИ

🔑 Где взять собственный API-ключ?

API-ключ генерируется мгновенно и бесплатно через официального Telegram-бота. Вам не нужно ждать одобрения заявки или связываться с менеджером — начните интеграцию прямо сейчас.

1
Откройте бота

Перейдите в Telegram-бота @gemhubaibot и нажмите Start.

2
Отправьте /api

Отправьте боту команду /api (или /apikey). Бот сразу закрепит за вами профиль партнера.

3
Скопируйте ключ

Бот пришлет ваш персональный секретный токен вида gh_res_... и покажет вашу наценку.

4
Пополните баланс

Пополните счет в сомони (TJS) через DC Next (0% комиссии), картой Корти Милли или USDT.

Получить API-ключ в @gemhubaibot → Команда в боте: /api

🔄 Схема работы интеграции

Reseller API работает в синхронном режиме. Весь цикл от оплаты покупателем до выдачи лицензии происходит в один HTTP-запрос.

1. Покупатель платит вамКлиент выбирает товар в вашем боте или на сайте и производит оплату.
2. Вызов POST /ordersВаш бэкенд вызывает API с productId и уникальным idempotencyKey.
3. Списание с балансаGemHub AI списывает оптовую цену в сомони и запрашивает лицензию у поставщика.
4. Выдача клиентуAPI возвращает объект credentials (ссылка, аккаунт или код) для клиента.
✅ Гарантия возврата: Если товар временно закончился у поставщиков, система моментально возвращает деньги на ваш баланс и отдает статус 503 FULFILLMENT_FAILED. Деньги партнера никогда не блокируются.

🔐 Авторизация запросов

Каждый запрос к защищенным эндпоинтам должен содержать ваш секретный API-ключ в HTTP-заголовке X-API-Key или Authorization: Bearer.

# Способ 1: заголовок X-API-Key (рекомендуется)
X-API-Key: gh_res_0ac2b09a4ad965ab9fe6986efd57cb27

# Способ 2: стандартный Bearer-токен
Authorization: Bearer gh_res_0ac2b09a4ad965ab9fe6986efd57cb27
⚠️ Храните ваш ключ в переменных окружения вашего сервера (.env). Никогда не передавайте ключ в клиентский JavaScript, браузер или публичные репозитории.

📐 Формат данных и валюта TJS

Формат JSON и сомони (TJS)

  • Все ответы возвращаются с Content-Type: application/json; charset=utf-8.
  • Основная расчетная валюта оптового шлюза — таджикский сомони (TJS).
  • Цены возвращаются числом (например: 8.0 или 245.0).
  • Время передается в формате ISO 8601 UTC.

Каталог и живой склад

  • productId — постоянный символьный идентификатор позиции (например: chatgpt_plus, gemini_advanced_18m).
  • stock — суммарный доступный остаток на локальном складе и прямых шлюзах поставщиков.
  • В каталоге возвращаются только активные товары с готовой автовыдачей.

🔁 Идемпотентность заказов

При создании заказа (POST /orders) параметр idempotencyKey является строго обязательным (от 6 до 128 символов). Это гарантирует защиту от двойного списания денег при нестабильном интернете или перезапусках ваших скриптов.

POST https://gemhubai.shop/api/v1/reseller/orders
X-API-Key: gh_res_...

{
  "productId": "gemini_advanced_18m",
  "idempotencyKey": "order_ext_20261015_001",
  "customerAccount": "[email protected]"
}

Если запрос с тем же idempotencyKey отправляется повторно, шлюз не списывает деньги второй раз, а возвращает уже созданный ранее заказ с флагом "duplicate": true.

⏱️ Лимиты запросов (Rate Limits)

Стандартный лимит для одного партнера составляет 120 запросов в минуту на чтение каталога и 20 запросов в минуту на создание заказов. При превышении возвращается 429 RATE_LIMIT_EXCEEDED.

GET https://gemhubai.shop/api/v1/reseller/ping Проверка статуса

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

curl -s "https://gemhubai.shop/api/v1/reseller/ping" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "ok": true,
  "reseller": "@your_username",
  "status": "active",
  "balanceTjs": 150.0,
  "currency": "TJS",
  "build": "gemhub-reseller-api v1.2",
  "serverTime": "2026-10-15T15:00:00.000Z"
}
GET https://gemhubai.shop/api/v1/reseller/me Профиль и баланс

Возвращает актуальный остаток сомони на балансе, размер установленной оптовой наценки и статистику покупок.

curl -s "https://gemhubai.shop/api/v1/reseller/me" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "ok": true,
  "partner": {
    "id": "res_1175046908",
    "name": "@my_reseller_bot",
    "userId": 1175046908,
    "balanceTjs": 150.0,
    "marginTjs": 5.0,
    "totalOrders": 12,
    "totalSpentTjs": 1420.0,
    "currency": "TJS",
    "isActive": true,
    "createdAt": "15.10.2026 03:07"
  },
  "serverTime": "2026-10-15T15:00:00.000Z"
}
GET https://gemhubai.shop/api/v1/reseller/products Каталог товаров

Возвращает список всех доступных товаров с вашими индивидуальными оптовыми ценами (wholesalePriceTjs), ориентировочной розничной ценой, расчетной прибылью с единицы и текущим остатком на складе.

curl -s "https://gemhubai.shop/api/v1/reseller/products" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "ok": true,
  "count": 39,
  "currency": "TJS",
  "products": [
    {
      "id": "gemini_advanced_18m",
      "title": "Google One + Gemini Advanced (18 мес)",
      "description": "2 TB облака Google One и доступ к Gemini Advanced.",
      "instructions": "Перейдите по ссылке инвайта и подтвердите вход в семейную группу.",
      "category": "ai",
      "inStock": true,
      "stock": 50,
      "wholesalePriceTjs": 8.0,
      "retailPriceTjs": 19.0,
      "yourProfitTjs": 11.0,
      "supplierCostTjs": 5.0,
      "customMarginTjs": 3.0
    },
    {
      "id": "chatgpt_plus",
      "title": "ChatGPT Plus (1 месяц)",
      "description": "Персональная подписка: GPT-4o, DALL-E 3, холст и анализ файлов.",
      "instructions": "Войдите на chatgpt.com полученными данными.",
      "category": "ai",
      "inStock": true,
      "stock": 25,
      "wholesalePriceTjs": 245.0,
      "retailPriceTjs": 269.0,
      "yourProfitTjs": 24.0,
      "supplierCostTjs": 240.0,
      "customMarginTjs": 5.0
    }
  ]
}
POST https://gemhubai.shop/api/v1/reseller/orders Покупка и автовыдача

Списывает оптовую стоимость с вашего TJS-баланса, закупает товар и моментально возвращает клиенту данные для доступа.

Параметры запроса (JSON Body)

ПолеТипОбязательноОписание
productIdstringДаИдентификатор товара из каталога (например: gemini_advanced_18m).
idempotencyKeystringДаУникальный ключ заказа в вашей базе (6–128 символов) для защиты от повторных списаний.
customerAccountstringОпциональноEmail покупателя (нужен только для товаров, активируемых на аккаунт клиента).
curl -X POST "https://gemhubai.shop/api/v1/reseller/orders" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "gemini_advanced_18m",
    "idempotencyKey": "my-bot-order-98214",
    "customerAccount": "[email protected]"
  }'
{
  "ok": true,
  "order": {
    "id": "ORD-C9028FA12E",
    "productId": "gemini_advanced_18m",
    "productTitle": "Google One + Gemini Advanced (18 мес)",
    "status": "delivered",
    "wholesalePriceTjs": 8.0,
    "credentials": {
      "type": "promo_link",
      "promoUrl": "https://one.google.com/promo/family/invite/...",
      "instructions": "Перейдите по ссылке и подтвердите подключение к семейной группе."
    },
    "newBalanceTjs": 142.0,
    "createdAt": "15.10.2026, 15:32"
  }
}
GET https://gemhubai.shop/api/v1/reseller/orders/:orderId Статус заказа

Повторное получение информации и реквизитов ранее созданного заказа по его номеру id.

curl -s "https://gemhubai.shop/api/v1/reseller/orders/ORD-C9028FA12E" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "ok": true,
  "order": {
    "id": "ORD-C9028FA12E",
    "productId": "gemini_advanced_18m",
    "productTitle": "Google One + Gemini Advanced (18 мес)",
    "status": "delivered",
    "wholesalePriceTjs": 8.0,
    "credentials": {
      "type": "promo_link",
      "promoUrl": "https://one.google.com/promo/family/invite/...",
      "instructions": "Перейдите по ссылке и подтвердите подключение к семейной группе."
    },
    "createdAt": "15.10.2026, 15:32"
  }
}

💎 Ценообразование и оптовая маржа

Все расчеты ведутся в сомони (TJS). Оптовая стоимость для партнера рассчитывается прозрачно: Себестоимость поставщика + Фиксированная наценка партнера.

Базовые подписки (< 10 TJS) Наценка всего +3 TJS. Например, Gemini Advanced 18 мес: оптовая цена 8 TJS при рознице 19 TJS. Прибыль партнера: 11 TJS с продажи.
Средний сегмент (10–50 TJS) Наценка +5 TJS. Duolingo Super, Spotify, VPN. Оптовая цена гарантированно ниже розницы на 20–30%.
Премиум позиции (> 50 TJS) Наценка +7…8 TJS. ChatGPT Plus, Canva Pro, Adobe. Максимальный доход в пересчете на один заказ.

📦 Форматы выдачи (поле credentials)

В зависимости от типа подписки объект credentials в ответе заказа содержит готовые данные для отправки клиенту:

  • Инвайт-ссылка (type: "promo_link"): поле promoUrl со ссылкой на автоматическое подключение подписки (Google One, Canva Teams и др.).
  • Готовый аккаунт (type: "account"): поля login и password для входа в сервис.
  • Лицензионный ключ (type: "code"): поле code с кодом активации подписки.
  • Инструкция (instructions): пошаговое описание на русском языке, которое можно сразу переслать покупателю.

🚨 Справочник кодов ошибок

В случае ошибки API возвращает соответствующий HTTP-код и тело ответа {"ok": false, "error": "КОД", "message": "Описание"}.

HTTPКод ошибкиПричина и необходимое действие
400MISSING_PRODUCT_IDНе указан productId товара. Передайте ID из каталога.
400INVALID_IDEMPOTENCY_KEYКлюч идемпотентности короче 6 или длиннее 128 символов.
401UNAUTHORIZED / INVALID_API_KEYНе передан или не найден API-ключ. Проверьте заголовок X-API-Key.
402INSUFFICIENT_BALANCEНедостаточно сомони на балансе. Пополните счет в боте @gemhubaibot.
404PRODUCT_NOT_FOUNDТовар временно снят с продажи или не существует в каталоге.
404ORDER_NOT_FOUNDЗаказ с указанным ID не найден или оформлен другим партнером.
409ORDER_PROCESSINGЗапрос с данным idempotencyKey уже обрабатывается прямо сейчас. Подождите пару секунд.
409OUT_OF_STOCKТовар временно закончился у поставщиков.
429RATE_LIMIT_EXCEEDEDПревышен лимит запросов в минуту. Повторите запрос через 30–60 секунд.
503FULFILLMENT_FAILEDОшибка выдачи у внешнего поставщика. Средства мгновенно возвращены на ваш баланс.

💻 Примеры кода интеграции

import requests

API_KEY = "gh_res_0ac2b09a4ad965ab9fe6986efd57cb27"
BASE_URL = "https://gemhubai.shop/api/v1/reseller"
HEADERS = {"X-API-Key": API_KEY}

# 1. Проверяем баланс партнера
me = requests.get(f"${BASE_URL}/me", headers=HEADERS).json()
print("Баланс партнера:", me["partner"]["balanceTjs"], "TJS")

# 2. Получаем актуальный каталог и цены
catalog = requests.get(f"${BASE_URL}/products", headers=HEADERS).json()
for p in catalog.get("products", []):
    print(f"- {p['title']}: {p['wholesalePriceTjs']} TJS (Остаток: {p['stock']})")

# 3. Покупаем подписку клиенту
payload = {
    "productId": "gemini_advanced_18m",
    "idempotencyKey": "order_client_98231",
    "customerAccount": "[email protected]"
}
res = requests.post(f"${BASE_URL}/orders", json=payload, headers=HEADERS).json()
if res.get("ok"):
    print("✅ Доступ успешно выдан!")
    print("Реквизиты:", res["order"]["credentials"])
    print("Новый остаток баланса:", res["order"]["newBalanceTjs"], "TJS")
else:
    print("❌ Ошибка покупки:", res.get("error"), res.get("message"))
import axios from 'axios';

const API_KEY = 'gh_res_0ac2b09a4ad965ab9fe6986efd57cb27';
const BASE_URL = 'https://gemhubai.shop/api/v1/reseller';
const client = axios.create({
  baseURL: BASE_URL,
  headers: { 'X-API-Key': API_KEY }
});

async function main() {
  // 1. Проверяем баланс
  const { data: me } = await client.get('/me');
  console.log(`Баланс партнера: ${me.partner.balanceTjs} TJS`);

  // 2. Создаем заказ с защитой от дублей
  const { data: orderRes } = await client.post('/orders', {
    productId: 'chatgpt_plus',
    idempotencyKey: 'bot_order_' + Date.now(),
    customerAccount: '[email protected]'
  });

  if (orderRes.ok) {
    console.log('✅ Товар выдан:', orderRes.order.credentials);
    console.log('Остаток на балансе:', orderRes.order.newBalanceTjs, 'TJS');
  }
}
main().catch(console.error);
# 1. Проверка доступности и статуса ключа
curl -s "https://gemhubai.shop/api/v1/reseller/ping" \
  -H "X-API-Key: YOUR_API_KEY"

# 2. Получение каталога и оптовых цен
curl -s "https://gemhubai.shop/api/v1/reseller/products" \
  -H "X-API-Key: YOUR_API_KEY"

# 3. Создание заказа
curl -X POST "https://gemhubai.shop/api/v1/reseller/orders" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "gemini_advanced_18m",
    "idempotencyKey": "unique_tx_order_001"
  }'

❓ Частые вопросы (FAQ)

Как пополнить баланс реселлера?

Баланс привязан к вашему Telegram-профилю. Пополнить счет в сомони (TJS) можно прямо в боте @gemhubaibot через кошелек DC Next (Dushanbe City) без комиссии (0%), любой картой Корти Милли или криптовалютой USDT. Средства мгновенно зачисляются на счет.

Как получить или перевыпустить API-ключ?

Отправьте команду /api в боте @gemhubaibot. Бот сразу выдаст ваш действующий ключ. При необходимости перевыпуска ключа обратитесь в поддержку @gemhubai.

Что произойдет, если у внешнего поставщика закончился товар?

Система защищает средства партнера. Если поставщик не смог выдать лицензию, списанные сомони автоматически возвращаются на ваш баланс, а API отдает статус 503 FULFILLMENT_FAILED. Деньги никогда не зависают.

Есть ли комиссия за создание заказов через API?

Нет. За закупку товаров комиссия 0%. С вашего баланса списывается ровно указанная оптовая стоимость wholesalePriceTjs.

💬 Поддержка и контакты

По всем техническим вопросам интеграции, индивидуальным скидкам на большие объемы и сотрудничеству: