API партнерського заробітку
Приватний ключ mek_live_ лише для читання: баланс, доступне для виведення, заробіток за період у всіх сервісах Millida та підписники ваших збірок модів. Ключ працює лише з IP вашого сервера.
Оновлено 28 вересня 2026 р.
Якщо ви хочете бачити свій заробіток на власному сайті або в панелі, підключіть API заробітку. Він повертає ті самі цифри, що й гаманець на Millida: баланс, суму, доступну для виведення, та заробіток за вибраний період із розбивкою за сервісами: підписки на збірки модів, хостинг, донати, маркет та інші.
API працює лише на читання. Через нього не можна вивести гроші, змінити платіжні дані чи щось оплатити. Ключ бачить лише ваш гаманець; отримати доступ до чужих даних із ним неможливо.
Ключ
Ключ видається в партнерській панелі: Профіль → розділ із назвою вашої студії → API заробітку. Під час видачі вкажіть IP-адресу сервера, з якого надходитимуть запити. З будь-якої іншої адреси ключ не працює, навіть якщо його викрали.
- Можна вказати до десяти адрес або підмереж. Підмережа має бути не ширшою за
/24для IPv4 та/48для IPv6. - Домашні й локальні адреси (
127.0.0.1,10.x,192.168.x) не приймаються: потрібна публічна адреса сервера. - Ключ показується один раз. Зберігайте його на сервері, у змінних середовища або в сховищі секретів і ніколи не показуйте його в браузері.
- У вас може бути до п'яти активних ключів. Якщо ви втратили ключ або змінили сервер, відкличте старий ключ і видайте новий. Відкликаний ключ перестає працювати негайно.
Усі ендпоінти відносні до https://api.millida.net/v2. Ключ передається в заголовку:
Authorization: Bearer mek_live_…
Зведення
GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
from і to — межі періоду у форматі ISO 8601. Обидва параметри
необов'язкові: без них період охоплює весь час.
{
"currency": "RUB",
"balance": {
"balanceKopecks": 1254000,
"availableKopecks": 1204000,
"withdrawableKopecks": 980000,
"heldKopecks": 50000,
"pendingPayoutKopecks": 0,
"tradeHoldKopecks": 0,
"tradeHoldReadyAt": null,
"marketHoldKopecks": 0,
"marketWithdrawalReadyAt": null
},
"period": {
"from": "2026-09-01T00:00:00.000Z",
"to": "2026-09-30T23:59:59.999Z",
"earnedKopecks": 3108000,
"heldKopecks": 0,
"spentKopecks": 0,
"toppedUpKopecks": 0,
"paidOutKopecks": 2000000,
"refundKopecks": 0,
"netKopecks": 1108000,
"operations": 142,
"earnedBySource": [
{ "source": "catalog", "amountKopecks": 2950000, "operations": 131 },
{ "source": "hosting", "amountKopecks": 158000, "operations": 11 }
],
"truncated": false
},
"subscriptions": {
"subscribers": 14,
"bundleSubscribers": 2,
"packSubscribers": 12
}
}
Усі суми в копійках: 1254000 означає 12 540 ₽.
| Поле | Значення |
|---|---|
balance.balanceKopecks | усе в гаманці, включно із замороженими коштами |
balance.availableKopecks | можна витратити в межах Millida |
balance.withdrawableKopecks | можна вивести прямо зараз — та сама сума, що й на кнопці «Вивести» |
balance.heldKopecks | заморожено до завершення періоду утримання |
period.earnedKopecks | зароблено за період за всіма сервісами |
period.earnedBySource | заробіток за період за сервісами, від найбільшого до найменшого |
period.paidOutKopecks | виведено за період |
period.truncated | true — за період занадто багато транзакцій і суми неповні: звузьте період |
subscriptions | підписники ваших збірк модів прямо зараз, стисло; деталі в розділі «Підписники» |
Значення source:
source | Сервіс |
|---|---|
catalog | каталог збірк модів: підписки та покупки |
hosting | хостинг |
trade | донати Trade |
market | маркет |
skins | Millida Skins |
rating | рейтинг |
admin | нарахування Millida |
З часом можуть додаватися нові значення. Якщо ви не впізнаєте значення, показуйте його як є й не вважайте це помилкою.
Підписники
GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
Скільки людей зараз грають у ваші збірки модів за підпискою Millida і що сталося з підписками за період. Підписники рахуються за активним доступом, а не за платежами: людина враховується, поки може запускати збірку модів, зокрема три дні після дати платежу, надані для повторного списання. Доступ через ключі вашого сайту, командний доступ і разові покупки не рахуються як підписки.
API повертає лише числа. Дізнатися через нього, хто саме підписаний, неможливо.
from і to визначають період так само, як у зведенні. Вони впливають лише на блок period; блоки total, active, renewal і packs завжди показують стан на момент запиту.
{
"from": "2026-09-01T00:00:00.000Z",
"to": "2026-09-30T23:59:59.999Z",
"generatedAt": "2026-09-28T16:30:00.000Z",
"total": {
"subscribers": 14,
"bundleSubscribers": 2,
"packSubscribers": 12
},
"partners": [
{
"partner": { "slug": "arcania-labs", "name": "Arcania Labs" },
"active": {
"subscribers": 14,
"bundleSubscribers": 2,
"packSubscribers": 12,
"packSubscriptions": 12
},
"renewal": {
"autoRenewing": { "bundle": 2, "packs": 12 },
"canceledStillActive": { "bundle": 0, "packs": 0 }
},
"packs": [
{ "slug": "arcania", "title": "Arcania 1.4.3", "published": true, "activeSubscribers": 14, "viaPack": 12, "viaBundle": 2 },
{ "slug": "dread", "title": "DREAD - A Horror Survival Pack", "published": true, "activeSubscribers": 2, "viaPack": 0, "viaBundle": 2 }
],
"period": {
"newSubscriptions": { "bundle": 2, "packs": 12 },
"canceled": { "bundle": 0, "packs": 0 },
"expired": { "bundle": 0, "packs": 0 },
"refunded": { "bundle": 0, "packs": 0 }
},
"truncated": false
}
]
}
packs перелічує всі ваші збірки модів, зокрема ті, що не мають підписників.
| Поле | Значення |
|---|---|
total.subscribers | скільки різних людей зараз підписані хоча б на одну з ваших збірк модів |
total.bundleSubscribers | з них із підпискою «Усі збірки модів» |
total.packSubscribers | з них із підпискою на окрему збірку модів |
partners[] | один рядок на кожну вашу студію; якщо ви не партнер, список порожній |
active.packSubscriptions | усього підписок на окремі збірки модів: в однієї людини їх може бути кілька |
renewal.autoRenewing | підписки, що поновляться автоматично: автоплатіж увімкнено |
renewal.canceledStillActive | автоплатіж вимкнено, але оплачений термін ще активний; доступ завершиться після нього |
packs[].activeSubscribers | скільки людей можуть грати в цю збірку модів за підпискою |
packs[].viaPack / packs[].viaBundle | з них за підпискою на цю збірку модів і за підпискою «Усі збірки модів» |
period.newSubscriptions | підписки, перше списання за якими відбулося протягом періоду |
period.canceled | підписки, для яких протягом періоду вимкнули автоплатіж |
period.expired | доступ завершився протягом періоду й не був поновлений |
period.refunded | доступ закрили протягом періоду через повернення коштів |
truncated | true — даних занадто багато і цифри неповні: звузьте період |
bundle рахує людей, а packs — підписки на окремі збірки модів.
Якщо підписку скасували, вона з'являється в canceled у день скасування, а в
expired — коли оплачений термін завершується.
Помилки
| Код | code | Що робити |
|---|---|---|
| 401 | INVALID_KEY | ключ відсутній, має друкарську помилку або є ключем іншого типу |
| 401 | REVOKED | ключ відкликано — видайте новий |
| 401 | OWNER_UNAVAILABLE | акаунт власника ключа заблоковано або видалено |
| 403 | IP_NOT_ALLOWED | запит надійшов не з адреси в ключі; у тексті помилки показано адресу, яку ми побачили |
| 429 | — | перевищено ліміт частоти запитів, повторіть запит за хвилину |
Ліміти
Один ключ може надсилати до 30 запитів за хвилину. Цифри змінюються разом із платежами, тож опитувати API частіше ніж раз на хвилину немає сенсу. Краще кешувати відповідь на своєму сервері.
Приклад
curl -s https://api.millida.net/v2/earnings-api/v1/summary \
-H "Authorization: Bearer $MILLIDA_EARNINGS_KEY"
curl -s https://api.millida.net/v2/earnings-api/v1/subscriptions \
-H "Authorization: Bearer $MILLIDA_EARNINGS_KEY"