API penghasilan mitra
Kunci mek_live_ privat hanya-baca: saldo, tersedia untuk penarikan, penghasilan untuk suatu periode di semua layanan Millida, dan pelanggan modpack Anda. Kunci hanya berfungsi dari IP server Anda.
Diperbarui 28 September 2026
Jika Anda ingin melihat pendapatan Anda di situs web sendiri atau di panel, hubungkan API pendapatan. API ini mengembalikan angka yang sama dengan dompet Anda di Millida: saldo, jumlah yang tersedia untuk penarikan, dan pendapatan untuk periode yang dipilih, dipecah berdasarkan layanan: langganan modpack, hosting, donasi, market, dan lainnya.
API ini hanya-baca. Anda tidak dapat menarik uang, mengubah detail pembayaran, atau membayar apa pun melaluinya. Kunci hanya dapat melihat dompet Anda; Anda tidak dapat mengakses data orang lain dengannya.
Kunci
Kunci diterbitkan di dasbor mitra: Profil → bagian yang dinamai sesuai studio Anda → API Pendapatan. Saat menerbitkannya, tentukan alamat IP server dari mana permintaan akan dikirim. Kunci tidak berfungsi dari alamat lain mana pun, bahkan jika dicuri.
- Anda dapat menentukan hingga sepuluh alamat atau subnet. Subnet tidak boleh lebih lebar dari
/24untuk IPv4 dan/48untuk IPv6. - Alamat rumah dan lokal (
127.0.0.1,10.x,192.168.x) tidak diterima: Anda memerlukan alamat publik server. - Kunci ditampilkan sekali. Simpan di server, di variabel lingkungan, atau di penyimpanan rahasia, dan jangan pernah mengeksposnya ke browser.
- Anda dapat memiliki hingga lima kunci aktif. Jika Anda kehilangan kunci atau mengganti server, cabut kunci lama dan terbitkan yang baru. Kunci yang dicabut langsung berhenti berfungsi.
Semua endpoint bersifat relatif terhadap https://api.millida.net/v2. Kunci dikirim melalui header:
Authorization: Bearer mek_live_…
Ringkasan
GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
from dan to adalah batas periode dalam format ISO 8601. Kedua parameter
bersifat opsional: tanpa keduanya, periode mencakup seluruh waktu.
{
"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
}
}
Semua jumlah dalam kopeck: 1254000 berarti 12 540 ₽.
| Field | Arti |
|---|---|
balance.balanceKopecks | semua yang ada di dompet, termasuk dana yang dibekukan |
balance.availableKopecks | dapat dibelanjakan di dalam Millida |
balance.withdrawableKopecks | dapat ditarik saat ini juga — jumlah yang sama seperti pada tombol “Tarik” |
balance.heldKopecks | dibekukan hingga periode penahanan berakhir |
period.earnedKopecks | pendapatan selama periode di semua layanan |
period.earnedBySource | pendapatan selama periode berdasarkan layanan, dari terbesar ke terkecil |
period.paidOutKopecks | ditarik selama periode |
period.truncated | true — terlalu banyak transaksi dalam periode dan jumlahnya tidak lengkap: persempit periode |
subscriptions | pelanggan modpack Anda saat ini, secara ringkas; detailnya di bagian “Pelanggan” |
Nilai source:
source | Layanan |
|---|---|
catalog | katalog modpack: langganan dan pembelian |
hosting | hosting |
trade | donasi Trade |
market | market |
skins | Millida Skins |
rating | rating |
admin | akrual Millida |
Nilai baru dapat ditambahkan seiring waktu. Jika Anda tidak mengenali suatu nilai, tampilkan apa adanya dan jangan menganggapnya sebagai kesalahan.
Pelanggan
GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
Berapa banyak orang yang saat ini memainkan modpack Anda dengan langganan Millida dan apa yang terjadi pada langganan selama periode tersebut. Pelanggan dihitung berdasarkan akses aktif, bukan berdasarkan pembayaran: seseorang dihitung selama mereka dapat meluncurkan modpack, termasuk tiga hari setelah tanggal pembayaran yang diberikan untuk penagihan ulang. Akses melalui kunci situs web Anda, akses tim, dan pembelian sekali tidak dihitung sebagai langganan.
API hanya mengembalikan angka. Anda tidak dapat mengetahui siapa tepatnya yang berlangganan melaluinya.
from dan to menentukan periode dengan cara yang sama seperti pada ringkasan. Keduanya hanya memengaruhi blok period; blok total, active, renewal, dan packs selalu menunjukkan keadaan pada saat permintaan.
{
"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 mencantumkan semua modpack Anda, termasuk yang tidak memiliki pelanggan.
| Field | Arti |
|---|---|
total.subscribers | berapa banyak orang berbeda yang saat ini berlangganan setidaknya satu modpack Anda |
total.bundleSubscribers | di antaranya, dengan langganan “Semua modpack” |
total.packSubscribers | di antaranya, dengan langganan ke modpack individual |
partners[] | satu baris per studio yang Anda miliki; jika Anda bukan mitra, daftarnya kosong |
active.packSubscriptions | total langganan ke modpack individual: satu orang dapat memiliki beberapa |
renewal.autoRenewing | langganan yang akan diperpanjang otomatis: pembayaran otomatis diaktifkan |
renewal.canceledStillActive | pembayaran otomatis dinonaktifkan, tetapi masa berbayar masih aktif; akses akan berakhir setelahnya |
packs[].activeSubscribers | berapa banyak orang yang dapat memainkan modpack ini melalui langganan |
packs[].viaPack / packs[].viaBundle | di antaranya, melalui langganan ke modpack ini dan melalui langganan “Semua modpack” |
period.newSubscriptions | langganan yang penagihan pertamanya terjadi selama periode |
period.canceled | langganan yang pembayaran otomatisnya dinonaktifkan selama periode |
period.expired | akses berakhir selama periode dan tidak diperpanjang |
period.refunded | akses ditutup selama periode karena pengembalian dana |
truncated | true — terlalu banyak data dan angkanya tidak lengkap: persempit periode |
bundle menghitung orang, sedangkan packs menghitung langganan ke modpack individual.
Jika langganan dibatalkan, langganan tersebut muncul di canceled pada hari pembatalan, dan di
expired saat masa berbayar berakhir.
Kesalahan
| Code | code | Yang harus dilakukan |
|---|---|---|
| 401 | INVALID_KEY | kunci tidak ada, ada salah ketik, atau merupakan kunci dari jenis lain |
| 401 | REVOKED | kunci telah dicabut — terbitkan yang baru |
| 401 | OWNER_UNAVAILABLE | akun pemilik kunci diblokir atau dihapus |
| 403 | IP_NOT_ALLOWED | permintaan tidak datang dari alamat yang ada di kunci; teks kesalahan menunjukkan alamat yang kami lihat |
| 429 | — | batas laju permintaan terlampaui, coba lagi permintaan dalam satu menit |
Batasan
Satu kunci dapat mengirim hingga 30 permintaan per menit. Angka berubah seiring pembayaran, jadi tidak ada gunanya melakukan polling API lebih dari sekali per menit. Lebih baik cache respons di server Anda.
Contoh
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"