Примеры кода
Все примеры предполагают ключ в переменной окружения API_KEY и ваш игровой домен как base URL. Ключ — в разделе API портала.
curl — быстрые проверки
Кто я / проверка ключа
curl -s https://your-domain.com/api/v1/me \
-H "Authorization: Bearer $API_KEY"
Воронка за последние 7 дней
curl -s "https://your-domain.com/api/v1/stats?from=$(date -v-7d +%Y-%m-%d)" \
-H "Authorization: Bearer $API_KEY"
Сводка заработка + последние выплаты
curl -s https://your-domain.com/api/v1/earnings \
-H "Authorization: Bearer $API_KEY"
Node.js — поллинг конверсий в вашу систему
/v1/conversions — восходящий поток: сохраняйте последний nextCursor и передавайте его в следующем полле, чтобы получать только новые события (регистрации и депозиты) — идеально для CAPI или вашей базы.
poll-conversions.mjs
const BASE = "https://your-domain.com/api/v1";
const KEY = process.env.API_KEY;
let cursor = await loadCursor(); // персистить между запусками (файл/БД)
async function poll() {
const url = new URL(BASE + "/conversions");
url.searchParams.set("limit", "500");
if (cursor) url.searchParams.set("cursor", cursor);
const res = await fetch(url, {
headers: { Authorization: `Bearer ${KEY}` },
});
if (res.status === 429) {
const wait = Number(res.headers.get("retry-after") ?? 30);
return setTimeout(poll, wait * 1000);
}
const { ok, data, error } = await res.json();
if (!ok) throw new Error(error.message);
for (const conv of data.items) {
// conv: { type: "registration"|"deposit", clickId, value, currency,
// eventId, externalId, ip, userAgent, fbp, fbc, ... }
await handleConversion(conv); // ваша сторона: CAPI-событие, строка в БД и т.д.
}
if (data.nextCursor) {
cursor = data.nextCursor;
await saveCursor(cursor);
}
setTimeout(poll, 60_000); // полл раз в минуту
}
poll();
Python — ежедневный снапшот статистики
stats_snapshot.py
import os
import requests
BASE = "https://your-domain.com/api/v1"
KEY = os.environ["API_KEY"]
HEADERS = {"Authorization": f"Bearer {KEY}"}
def get(path, **params):
r = requests.get(f"{BASE}{path}", headers=HEADERS, params=params, timeout=15)
r.raise_for_status()
body = r.json()
if not body["ok"]:
raise RuntimeError(body["error"]["message"])
return body["data"]
stats = get("/stats", **{"from": "2026-07-01"})
earnings = get("/earnings")
print("visits:", stats["funnel"]["visits"])
print("registrations:", stats["funnel"]["registrations"])
print("depositors:", stats["funnel"]["depositors"])
print("my earnings:", stats["money"]["earnings"])
print("pending USD:", earnings["pendingUsd"])
примечание
Имена полей в ответах документированы по эндпоинтам в справочнике. Считайте сниппеты транспортным каркасом и сверяйте точные формы со справочником.
warning
API — server-to-server. Никогда не вызывайте его из браузера или мобильного приложения: bearer-ключ увидит любой, кто откроет devtools.