v1 · PUBLIC

FakeMamont Reseller API

Встрой наш обменник в свой сайт или бота. Твои покупатели платят в любой валюте — мы доставляем им USDT. Ты платишь оптом — на 15% дешевле рыночного курса.

Оглавление

Быстрый старт Авторизация POST /api/reseller/register GET /api/reseller/balance GET /api/reseller/quote POST /api/reseller/order GET /api/reseller/orders GET /api/reseller/deposits Коды ошибок Лимиты FAQ

Быстрый старт

  1. Получи api_key — на главной сайте, кнопка API
  2. Пополни баланс в GRAM (1 TON = 1 GRAM). Отправь TON на кошелёк, который получил при регистрации, с memo = api_key
  3. Делай заказы через POST /api/reseller/order — USDT автоматически отправляется твоему покупателю
  4. Разница между твоей оптовкой и твоей розничной ценой — твоя прибыль

Пример полного флоу

curl
Python
JS/Node
# 1. Проверить баланс
curl https://fakemamont.shop/api/reseller/balance \
  -H "Authorization: Bearer rsl_твой_ключ"

# 2. Узнать цену за 200 USDT
curl "https://fakemamont.shop/api/reseller/quote?amount=200&network=bep20" \
  -H "Authorization: Bearer rsl_твой_ключ"

# 3. Отправить 200 USDT покупателю
curl -X POST https://fakemamont.shop/api/reseller/order \
  -H "Authorization: Bearer rsl_твой_ключ" \
  -H "Content-Type: application/json" \
  -d '{"wallet":"0x742d35Cc6634C0532925a3b8c6b19F4...","amount":200,"network":"bep20"}'
import requests

API = "https://fakemamont.shop"
KEY = "rsl_твой_ключ"
H = {"Authorization": f"Bearer {KEY}"}

# баланс
bal = requests.get(f"{API}/api/reseller/balance", headers=H).json()
print("GRAM:", bal["balance_gram"])

# заказ
r = requests.post(f"{API}/api/reseller/order", headers=H, json={
    "wallet": "0x742d35Cc...",
    "amount": 200,
    "network": "bep20"
})
print(r.json())  # {"ok":true, "tx_hash":"0x...", ...}
const API = 'https://fakemamont.shop';
const KEY = 'rsl_твой_ключ';

// баланс
const bal = await fetch(`${API}/api/reseller/balance`, {
  headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());

// заказ
const order = await fetch(`${API}/api/reseller/order`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    wallet: '0x742d35Cc...',
    amount: 200,
    network: 'bep20'
  })
}).then(r => r.json());

Авторизация

Все запросы, кроме /register, требуют api_key. Три способа передать его (в порядке приоритета):

СпособПример
Bearer header (рекомендуется)Authorization: Bearer rsl_...
Query-параметр?api_key=rsl_...
В теле POST{"api_key":"rsl_...", ...}
⚠️ Безопасность. api_key — это и аутентификация, и доступ к балансу. Храни на бэкенде, никогда не светь на фронте. Если засветил — зарегистрируй новый, старый забанится.

POST /api/reseller/register

POST /api/reseller/register без авторизации

Создаёт новый api_key. Привязан к контакту (telegram/сайт/email) и IP регистрирующего.

Request

{
  "label": "@my_shop"  // 3-128 символов, любой контакт
}

Response 200

{
  "ok": true,
  "api_key": "rsl_OS35EUCFM9xbNVZzbrzxDCPaBJdDT0NHrl_RziZn-t4",
  "deposit": {
    "wallet": "UQA9irGqvSZcpdi2O5mkxXJa4oFcTxTeFxI1LFKQoEmJLcfL",
    "memo": "rsl_OS35EUCFM9...",  // = api_key
    "min_ton": 1.0
  },
  "pricing": {
    "discount_pct": 15,
    "min_order_by_network": {
      "bep20": 100, "eth": 100,
      "base": 100, "sol": 500
    },
    "max_order_usdt": 50000
  }
}

Пример

curl -X POST https://fakemamont.shop/api/reseller/register \
  -H "Content-Type: application/json" \
  -d '{"label":"@my_shop"}'

GET /api/reseller/balance

GET /api/reseller/balance Bearer

Текущий баланс и статистика по api_key.

Response

{
  "balance_gram": 25.6,            // доступно для заказов
  "total_earned_usdt": 3400.00,     // отгружено покупателям
  "total_deposited_gram": 50.0      // всего пополнено
}
curl https://fakemamont.shop/api/reseller/balance \
  -H "Authorization: Bearer rsl_..."

GET /api/reseller/quote

GET /api/reseller/quote без авторизации

Узнать стоимость в GRAM до создания заказа. Полезно показать клиенту цену.

Query

amount
сумма USDT, которую получит покупатель (required)
network
bep20 / eth / base / sol (default: bep20)

Response

{
  "amount_usdt": 200,
  "network": "bep20",
  "retail_gram": 0.69,     // розничная цена на сайте
  "cost_gram": 0.5865,    // твоя оптовая (−15%)
  "discount_pct": 15
}

POST /api/reseller/order

POST /api/reseller/order Bearer

Главный эндпоинт. Создаёт заказ, списывает GRAM с твоего баланса, отправляет USDT покупателю. Всё за один вызов, атомарно.

Request

{
  "wallet":  "0x742d35Cc6634C0532925a3b8c6b19F4...",  // кошелёк покупателя
  "amount":  200,                      // USDT к отправке
  "network": "bep20"                   // опционально, default bep20
}

Response 200 (успех)

{
  "ok": true,
  "order_id": 142,
  "tx_hash": "0x9f2a...",       // хэш в блокчейне
  "amount_usdt": 200,
  "network": "bep20",
  "cost_gram": 0.5865,
  "balance_gram_left": 25.01
}

Response 402 (баланса не хватает)

{
  "error": "insufficient balance",
  "need_gram": 0.5865,
  "have_gram": 0.2,
  "missing_gram": 0.3865,
  "deposit": {"wallet": "UQA9...", "memo": "rsl_..."}
}

Response 502 (ошибка выплаты)

{
  "error": "payout failed",
  "order_id": 143,
  "detail": "insufficient gas",
  "refunded_gram": 0.5865    // GRAM возвращён на баланс
}
💡 Автовозврат. Если выплата упала — GRAM автоматически вернётся на твой баланс. Платишь только за успешные транзакции.

GET /api/reseller/orders

GET /api/reseller/orders Bearer

История всех заказов этого api_key.

Query

limit
1-200, default 50
offset
для пагинации, default 0

Response

{
  "items": [
    {
      "id": 142,
      "buyer_wallet": "0x742d...",
      "asset": "USDT",
      "network": "bep20",
      "amount_usdt": 200,
      "cost_gram": 0.5865,
      "tx_hash": "0x9f2a...",
      "status": "done",    // processing / done / failed
      "error_msg": null,
      "created_at": "2026-10-31 15:42:11",
      "completed_at": "2026-10-31 15:42:34"
    }
  ],
  "total": 142,
  "limit": 50,
  "offset": 0
}

GET /api/reseller/deposits

GET /api/reseller/deposits Bearer

История пополнений баланса (все приходы TON с твоим memo).

Response

{
  "items": [
    {
      "tx_hash": "abc123...",
      "amount_ton": 25.0,
      "amount_gram": 25.0,     // 1 TON = 1 GRAM
      "credited_at": "2026-10-31 12:00:00"
    }
  ]
}

Коды ошибок

КодЗначениеЧто делать
400Неверные параметры (сумма, кошелёк, сеть)Проверь формат, min/max суммы
401Неверный api_key или забаненПроверь ключ, напиши в поддержку
402Недостаточно GRAM на балансеПополни через deposit wallet
429Rate limit (60/мин на /order, 3/день с IP на /register)Притормози запросы
502Ошибка выплаты (блокчейн, газ, RPC)GRAM уже вернулся, можешь повторить

Лимиты

ПараметрЗначение
Минимальный депозит1 TON
Минимум на заказ (BEP20 / ETH / Base)200 USDT
Минимум на заказ (Solana)500 USDT
Максимум на один заказ50 000 USDT
Rate limit на /order60 запросов/минуту с одного api_key
Скидка от розничной цены−15%
Скорость выплаты~25-30 секунд
Поддерживаемые сетиBEP-20, ERC-20, Base, Solana

FAQ

Как это работает?

Ты — посредник. Твои клиенты платят тебе любым способом (RUB, карта, крипта, что угодно). Ты через API заказываешь у нас выплату USDT им на кошелёк. Платишь нам в GRAM (пополняешь через TON). Разница между твоей розничной ценой клиенту и нашей оптовкой — твоя прибыль.

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

Отправь TON на адрес deposit.wallet (из ответа /register) с комментарием memo = твой api_key. 1 TON зачисляется как 1 GRAM. Минимум 1 TON. Зачисление автоматическое, обычно 30-60 секунд.

Что если выплата не прошла?

GRAM автоматически возвращается на баланс. Платишь только за успешные (status: "done"). Если заказ висит в processing дольше 10 минут — автоматический рефанд.

Можно ли вернуть деньги с баланса?

Нет, GRAM — это внутренний пре-пэйд. Выводить обратно в TON нельзя. Расходуй через заказы.

Какая комиссия сверх 15%?

Нет. 15% — это конечная оптовая скидка от розничной цены. Сетевая комиссия (газ BEP20/ETH/Solana) включена, с тебя не берётся отдельно.

У меня забанился ключ, что делать?

Регистрируй новый на главной странице. Если считаешь что бан несправедлив — пиши в поддержку @TokenFunny.

Можно ли проверить сеть/баланс до регистрации?

Да, /api/reseller/quote работает без ключа — можешь оценить цену для любой суммы и сети.

Поддержка: @TokenFunny · ← вернуться на сайт

FakeMamont Reseller API · v1