Partner-Einnahmen-API
Privater schreibgeschützter mek_live_-Schlüssel: Guthaben, verfügbar zur Auszahlung, Einnahmen für einen Zeitraum über alle Millida-Dienste und Abonnenten Ihrer Modpacks. Der Schlüssel funktioniert nur von der IP Ihres Servers.
Aktualisiert am 28. September 2026
Wenn Sie Ihre Einnahmen auf Ihrer eigenen Website oder in einem Panel sehen möchten, binden Sie die Einnahmen-API an. Sie liefert dieselben Zahlen wie Ihre Wallet bei Millida: Guthaben, den zur Auszahlung verfügbaren Betrag und die Einnahmen für den ausgewählten Zeitraum, aufgeschlüsselt nach Dienst: Modpack-Abonnements, Hosting, Spenden, Markt und andere.
Die API ist schreibgeschützt. Sie können kein Geld abheben, keine Auszahlungsdaten ändern und nichts darüber bezahlen. Der Schlüssel sieht nur Ihre Wallet; mit ihm können Sie nicht auf die Daten anderer Personen zugreifen.
Schlüssel
Der Schlüssel wird im Partner-Dashboard ausgestellt: Profil → Bereich mit dem Namen Ihres Studios → Einnahmen-API. Geben Sie bei der Ausstellung die IP-Adresse des Servers an, von dem die Anfragen gesendet werden. Der Schlüssel funktioniert von keiner anderen Adresse, selbst wenn er gestohlen wird.
- Sie können bis zu zehn Adressen oder Subnetze angeben. Das Subnetz darf für IPv4 nicht breiter als
/24und für IPv6 nicht breiter als/48sein. - Heim- und lokale Adressen (
127.0.0.1,10.x,192.168.x) werden nicht akzeptiert: Sie benötigen die öffentliche Adresse des Servers. - Der Schlüssel wird einmal angezeigt. Bewahren Sie ihn auf dem Server, in Umgebungsvariablen oder in einem Secrets-Speicher auf und geben Sie ihn niemals im Browser preis.
- Sie können bis zu fünf aktive Schlüssel haben. Wenn Sie einen Schlüssel verlieren oder den Server wechseln, widerrufen Sie den alten Schlüssel und stellen Sie einen neuen aus. Ein widerrufener Schlüssel funktioniert sofort nicht mehr.
Alle Endpunkte sind relativ zu https://api.millida.net/v2. Der Schlüssel wird im Header übergeben:
Authorization: Bearer mek_live_…
Übersicht
GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
from und to sind die Zeitraumgrenzen im ISO-8601-Format. Beide Parameter
sind optional: Ohne sie umfasst der Zeitraum die gesamte Zeit.
{
"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
}
}
Alle Beträge sind in Kopeken: 1254000 bedeutet 12 540 ₽.
| Feld | Bedeutung |
|---|---|
balance.balanceKopecks | alles in der Wallet, einschließlich eingefrorener Gelder |
balance.availableKopecks | kann innerhalb von Millida ausgegeben werden |
balance.withdrawableKopecks | kann gerade jetzt ausgezahlt werden — derselbe Betrag wie auf der Schaltfläche „Auszahlen“ |
balance.heldKopecks | eingefroren bis zum Ende der Haltefrist |
period.earnedKopecks | im Zeitraum über alle Dienste hinweg verdient |
period.earnedBySource | Einnahmen im Zeitraum nach Dienst, vom größten zum kleinsten |
period.paidOutKopecks | im Zeitraum ausgezahlt |
period.truncated | true — es gibt zu viele Transaktionen im Zeitraum und die Beträge sind unvollständig: Grenzen Sie den Zeitraum ein |
subscriptions | Abonnenten Ihrer Modpacks gerade jetzt, kurz gefasst; Details im Abschnitt „Abonnenten“ |
Die Werte von source:
source | Dienst |
|---|---|
catalog | Modpack-Katalog: Abonnements und Käufe |
hosting | Hosting |
trade | Trade-Spenden |
market | Markt |
skins | Millida Skins |
rating | Bewertung |
admin | Millida-Gutschriften |
Im Laufe der Zeit können neue Werte hinzukommen. Wenn Sie einen Wert nicht kennen, zeigen Sie ihn unverändert an und behandeln Sie ihn nicht als Fehler.
Abonnenten
GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
Wie viele Personen derzeit Ihre Modpacks mit einem Millida-Abonnement spielen und was im Zeitraum mit den Abonnements passiert ist. Abonnenten werden nach aktivem Zugang gezählt, nicht nach Zahlungen: Eine Person zählt, solange sie das Modpack starten kann, einschließlich der drei Tage nach dem Zahlungsdatum, das für die erneute Abbuchung angegeben ist. Zugang über Schlüssel Ihrer Website, Team-Zugang und Einmalkäufe zählen nicht als Abonnements.
Die API liefert nur Zahlen. Wer genau abonniert ist, können Sie darüber nicht herausfinden.
from und to definieren den Zeitraum genauso wie in der Übersicht. Sie wirken sich nur auf den Block period aus; die Blöcke total, active, renewal und packs zeigen immer den Zustand zum Zeitpunkt der Anfrage.
{
"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 listet alle Ihre Modpacks auf, auch die ohne Abonnenten.
| Feld | Bedeutung |
|---|---|
total.subscribers | wie viele verschiedene Personen derzeit mindestens eines Ihrer Modpacks abonniert haben |
total.bundleSubscribers | davon mit einem „Alle Modpacks“-Abonnement |
total.packSubscribers | davon mit einem Abonnement für ein einzelnes Modpack |
partners[] | eine Zeile pro Studio, das Sie haben; wenn Sie kein Partner sind, ist die Liste leer |
active.packSubscriptions | Abonnements für einzelne Modpacks insgesamt: eine Person kann mehrere haben |
renewal.autoRenewing | Abonnements, die sich automatisch verlängern: automatische Zahlung ist aktiviert |
renewal.canceledStillActive | automatische Zahlung ist deaktiviert, aber die bezahlte Laufzeit ist noch aktiv; der Zugang endet danach |
packs[].activeSubscribers | wie viele Personen dieses Modpack per Abonnement spielen können |
packs[].viaPack / packs[].viaBundle | davon per Abonnement für dieses Modpack und per „Alle Modpacks“-Abonnement |
period.newSubscriptions | Abonnements, deren erste Abbuchung im Zeitraum erfolgte |
period.canceled | Abonnements, für die im Zeitraum die automatische Zahlung deaktiviert wurde |
period.expired | der Zugang endete im Zeitraum und wurde nicht verlängert |
period.refunded | der Zugang wurde im Zeitraum aufgrund einer Rückerstattung geschlossen |
truncated | true — es gibt zu viele Daten und die Zahlen sind unvollständig: Grenzen Sie den Zeitraum ein |
bundle zählt Personen, während packs Abonnements für einzelne Modpacks zählt.
Wenn ein Abonnement gekündigt wird, erscheint es am Tag der Kündigung in canceled und in
expired, wenn die bezahlte Laufzeit endet.
Fehler
| Code | code | Was zu tun ist |
|---|---|---|
| 401 | INVALID_KEY | der Schlüssel fehlt, enthält einen Tippfehler oder ist ein Schlüssel eines anderen Typs |
| 401 | REVOKED | der Schlüssel wurde widerrufen — stellen Sie einen neuen aus |
| 401 | OWNER_UNAVAILABLE | das Konto des Schlüsselinhabers ist gesperrt oder gelöscht |
| 403 | IP_NOT_ALLOWED | die Anfrage kam nicht von einer Adresse im Schlüssel; im Fehlertext wird die Adresse angezeigt, die wir gesehen haben |
| 429 | — | das Anfragelimit wurde überschritten, wiederholen Sie die Anfrage in einer Minute |
Limits
Ein einzelner Schlüssel kann bis zu 30 Anfragen pro Minute senden. Die Zahlen ändern sich zusammen mit den Zahlungen, daher ist es sinnlos, die API häufiger als einmal pro Minute abzufragen. Besser ist es, die Antwort auf Ihrem Server zu cachen.
Beispiel
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"