ZFlow/{} API для партнёров@ZFlow_tbot
Твоя статистика, домены и заявки — по ключу

API для партнёров

Читай данные своего аккаунта из скриптов, ботов и таблиц. Только чтение: деньги через API не двигаются.

4 мин чтенияОбновлено 18 октября 2026

Ключ#

  1. Открой вкладку «API»
    В панели, раздел «Остальное».
  2. Нажми «Создать ключ»
    Ключ выглядит как zf_live_… и показывается один раз. Скопируй его сразу: в базе хранится только отпечаток.
  3. Храни как пароль
    Ключ даёт доступ к твоей статистике и балансу. Если он утёк — нажми «Перевыпустить»: старый ключ перестанет работать сразу. «Отозвать» отключает API полностью.
Ключ показывается один раз — сразу скопируй его. Демо-данные. Нажми, чтобы увеличить.
Не вставляй ключ в код сайтов и фронтенда — его увидят посетители. Вызывай API только с сервера или из своих скриптов.

Авторизация и лимиты#

Базовый адрес — https://zflow.pro/api/v1. Ключ передаётся в заголовке:

http
Authorization: Bearer zf_live_xxxxxxxxxxxxxxxxxxxxxxxx
  • Только метод GET, ответы в JSON. Поле ok — true или false.
  • Все суммы — в рублях (поля с суффиксом _rub).
  • Лимит — 60 запросов в минуту на ключ. При превышении ответ 429 и заголовок Retry-After.
  • Данные обновляются вместе с синхронизацией панели, примерно раз в минуту — чаще опрашивать нет смысла.

GET /me#

GET/api/v1/me

Профиль партнёра: текущая доля, оборот и баланс.

json
{
  "ok": true,
  "username": "partner",
  "split_percent": 70,
  "base_split_percent": 70,
  "tier_reached": false,
  "turnover_rub": 12450.5,
  "balance_rub": {
    "share": 8715.35,
    "available": 5400.0,
    "hold": 3315.35,
    "pending": 0,
    "paid": 0,
    "bonus": 0
  }
}
Поле балансаЗначение
availableМожно вывести сейчас.
holdДоля за CS2, ожидающая окончания защиты трейда (8 дней).
pendingВывод заказан, ждёт обработки.
paidУже выплачено.
share / bonusВсего начислено / ручные начисления владельца.

GET /domains#

GET/api/v1/domains

Все твои домены с итогами по каждому.

json
{
  "ok": true,
  "domains": [
    {
      "domain": "skins-example.com",
      "status": "live",
      "created_at": "2026-10-06 00:46:12",
      "visits": 174,
      "orders": 1,
      "volume_rub": 5.9,
      "share_rub": 5.31
    }
  ]
}

volume_rub — оборот завершённых сделок по расчётной стоимости (60% рыночной цены), share_rub — твоя начисленная по домену доля (из зафиксированных начислений).

Статус: pending — ждёт DNS, dns_ok — домен за Cloudflare, live — работает.

GET /stats#

GET/api/v1/stats?domain=skins-example.com

Статистика по всем доменам или по одному, если передан domain. Чужой или несуществующий домен — ошибка 404.

json
{
  "ok": true,
  "synced_at": "2026-10-18 08:14:02",
  "domains": ["skins-example.com"],
  "volume_rub": 5.9,
  "share_rub": 5.31,
  "orders": 1,
  "pending_orders": 0,
  "pending_value_rub": 0,
  "items_sold": 1,
  "avg_check_rub": 5.9,
  "metrics": { "online": 0, "visits": 175, "authClicks": 6, "authSuccess": 4 },
  "series": [{ "day": "2026-10-18", "orders": 0, "volume_rub": 0 }],
  "traffic": [{ "day": "2026-10-18", "visits": 3, "logins": 1 }]
}

series и traffic — 31 день по датам (UTC), последний элемент — сегодня. Если домен не указан, volume_rub и share_rub — всё начисленное тебе, в том числе по удалённым доменам. Смысл цифр — как в разделе Статистика.

GET /requests#

GET/api/v1/requests?limit=20&status=COMPLETED
ПараметрЗначение
limitСколько заявок вернуть: 1–100, по умолчанию 20.
statusCOMPLETED, AWAITING_TRADE, HOLD или PENDING. Без параметра — любые.
domainТолько заявки этого домена.
json
{
  "ok": true,
  "requests": [
    {
      "id": "a1b2c3",
      "status": "COMPLETED",
      "created_at": "2026-10-06 00:46:12",
      "domain": "skins-example.com",
      "value_rub": 5.9,
      "seller": "Nickname",
      "items": [{ "name": "P250 | Sleet (Factory New)", "price_rub": 5.9 }]
    }
  ]
}
Данные Steam-аккаунтов продавцов (SteamID, аватар) через API не отдаются — только ник.

Ошибки#

КодКогда
401Нет заголовка, ключ неверный, отозван или аккаунт заблокирован.
404Неизвестный метод или домен не принадлежит тебе.
400Недопустимое значение параметра.
429Больше 60 запросов в минуту.

Поле error — на английском, error_ru — то же сообщение по-русски. В логике опирайся на HTTP-код и ok: false, а не на текст.

json
{
  "ok": false,
  "error": "Invalid or missing key. Send the header Authorization: Bearer <key>.",
  "error_ru": "Неверный или отсутствующий ключ. Передай заголовок Authorization: Bearer <ключ>."
}
python
import requests

r = requests.get(
    "https://zflow.pro/api/v1/stats",
    headers={"Authorization": "Bearer zf_live_..."},
    timeout=15,
)
print(r.json()["share_rub"])
Страница была полезна?