Ortaklık kazanç API'si
Özel salt okunur mek_live_ anahtarı: bakiye, çekilebilir tutar, tüm Millida servislerinde bir dönem için kazançlar ve mod paketlerine abone olanlar. Anahtar yalnızca sunucunun IP'sinden çalışır.
28 Eylül 2026 tarihinde güncellendi
Kazançlarını kendi sitende veya bir panelde görmek istiyorsan kazanç API'sini bağla. Millida'daki cüzdanınla aynı rakamları döndürür: bakiye, çekime uygun tutar ve seçilen dönem için hizmete göre ayrılmış kazançlar: mod paketi abonelikleri, hosting, bağışlar, market ve diğerleri.
API salt okunurdur. Para çekemez, ödeme bilgilerini değiştiremez veya onun üzerinden herhangi bir şey için ödeme yapamazsın. Anahtar yalnızca senin cüzdanını görür; onunla başkalarının verilerine erişemezsin.
Anahtar
Anahtar, partner panelinde verilir: Profil → stüdyonun adını taşıyan bölüm → Kazanç API'si. Verirken isteklerin gönderileceği sunucunun IP adresini belirt. Anahtar başka hiçbir adresten çalışmaz, çalınsa bile.
- En fazla on adres veya alt ağ belirtebilirsin. Alt ağ, IPv4 için
/24'ten, IPv6 için/48'den geniş olamaz. - Ev ve yerel adresler (
127.0.0.1,10.x,192.168.x) kabul edilmez: sunucunun genel adresi gerekir. - Anahtar bir kez gösterilir. Onu sunucuda, ortam değişkenlerinde veya bir gizli bilgi deposunda sakla ve asla tarayıcıya açma.
- En fazla beş etkin anahtarın olabilir. Bir anahtarı kaybedersen veya sunucu değiştirirsen, eski anahtarı iptal et ve yeni bir tane ver. İptal edilen anahtar anında çalışmayı durdurur.
Tüm uç noktalar https://api.millida.net/v2 temelindedir. Anahtar, başlıkta iletilir:
Authorization: Bearer mek_live_…
Özet
GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
from ve to, dönem sınırlarıdır ve ISO 8601 biçimindedir. Her iki parametre
de isteğe bağlıdır: onlar olmadan dönem tüm zamanı kapsar.
{
"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
}
}
Tüm tutarlar kopek cinsindendir: 1254000 demek 12 540 ₽ demektir.
| Alan | Anlamı |
|---|---|
balance.balanceKopecks | cüzdandaki her şey, dondurulmuş fonlar dahil |
balance.availableKopecks | Millida içinde harcanabilir |
balance.withdrawableKopecks | şu anda çekilebilir — “Çek” düğmesindekiyle aynı tutar |
balance.heldKopecks | bekleme süresi bitene kadar dondurulmuş |
period.earnedKopecks | dönem boyunca tüm hizmetlerden kazanılan |
period.earnedBySource | dönem boyunca hizmete göre kazançlar, büyükten küçüğe |
period.paidOutKopecks | dönem boyunca çekilen |
period.truncated | true — dönemde çok fazla işlem var ve tutarlar eksik: dönemi daralt |
subscriptions | şu anda mod paketlerine abone olanlar, kısaca; ayrıntılar “Aboneler” bölümünde |
source değerleri:
source | Hizmet |
|---|---|
catalog | mod paketi kataloğu: abonelikler ve satın almalar |
hosting | hosting |
trade | Trade bağışları |
market | market |
skins | Millida Skins |
rating | rating |
admin | Millida tahakkukları |
Zamanla yeni değerler eklenebilir. Bir değeri tanımıyorsan olduğu gibi göster ve onu hata olarak görme.
Aboneler
GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
Şu anda kaç kişi Millida aboneliğiyle mod paketlerini oynuyor ve dönem boyunca aboneliklere ne oldu. Aboneler ödemeye göre değil, etkin erişime göre sayılır: kişi, mod paketini başlatabildiği sürece sayılır; yeniden deneme tahsilatı için ödeme tarihinden sonra verilen üç gün dahil. Kendi sitenin anahtarları üzerinden erişim, ekip erişimi ve tek seferlik satın almalar abonelik sayılmaz.
API yalnızca sayıları döndürür. Onun üzerinden tam olarak kimin abone olduğunu öğrenemezsin.
from ve to, dönemi özettekiyle aynı şekilde tanımlar. Yalnızca period bloğunu etkiler; total, active, renewal ve packs blokları her zaman istek anındaki durumu gösterir.
{
"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, abonesi olmayanlar dahil tüm mod paketlerini listeler.
| Alan | Anlamı |
|---|---|
total.subscribers | şu anda en az bir mod paketine abone olan farklı kişi sayısı |
total.bundleSubscribers | bunlardan “Tüm mod paketleri” aboneliği olanlar |
total.packSubscribers | bunlardan tek bir mod paketine aboneliği olanlar |
partners[] | sahip olduğun her stüdyo için bir satır; partner değilsen liste boştur |
active.packSubscriptions | tek tek mod paketlerine toplam abonelikler: bir kişinin birkaç tane olabilir |
renewal.autoRenewing | otomatik yenilenecek abonelikler: otomatik ödeme açık |
renewal.canceledStillActive | otomatik ödeme kapalı, ama ödenen süre hâlâ etkin; erişim ondan sonra bitecek |
packs[].activeSubscribers | bu mod paketini abonelikle kaç kişi oynayabilir |
packs[].viaPack / packs[].viaBundle | bunlardan bu mod paketine abonelikle ve “Tüm mod paketleri” aboneliğiyle olanlar |
period.newSubscriptions | ilk tahsilatı dönem içinde gerçekleşen abonelikler |
period.canceled | dönem içinde otomatik ödemesi kapatılan abonelikler |
period.expired | dönem içinde erişimi biten ve yenilenmeyen abonelikler |
period.refunded | dönem içinde iade nedeniyle erişimi kapatılan abonelikler |
truncated | true — çok fazla veri var ve rakamlar eksik: dönemi daralt |
bundle kişileri sayar, packs ise tek tek mod paketlerine abonelikleri sayar.
Bir abonelik iptal edilirse iptal günü canceled içinde, ödenen süre bittiğinde ise
expired içinde görünür.
Hatalar
| Kod | code | Ne yapmalısın |
|---|---|---|
| 401 | INVALID_KEY | anahtar eksik, yazım hatası var veya farklı türde bir anahtar |
| 401 | REVOKED | anahtar iptal edilmiş — yeni bir tane ver |
| 401 | OWNER_UNAVAILABLE | anahtar sahibinin hesabı engellenmiş veya silinmiş |
| 403 | IP_NOT_ALLOWED | istek, anahtardaki bir adresten gelmedi; hata metni gördüğümüz adresi gösterir |
| 429 | — | istek hızı sınırı aşıldı, isteği bir dakika sonra yeniden dene |
Sınırlar
Tek bir anahtar dakikada en fazla 30 istek gönderebilir. Rakamlar ödemelerle birlikte değişir, bu yüzden API'yi dakikada birden fazla yoklamanın anlamı yok. Yanıtı sunucunda önbelleğe alman daha iyi olur.
Örnek
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"