Перейти к основному содержимому

Примеры кода

Все примеры предполагают ключ в переменной окружения 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.