Skip to content
Pour les développeurs · Modpacks dans le launcher

API des gains partenaires

Clé privée en lecture seule mek_live_ : solde, disponible au retrait, gains sur une période pour tous les services Millida et abonnés à vos modpacks. La clé ne fonctionne que depuis l'IP de votre serveur.

Mis à jour le 28 septembre 2026

Si vous souhaitez consulter vos revenus sur votre propre site web ou dans un panneau, connectez l'API des revenus. Elle renvoie les mêmes chiffres que votre portefeuille sur Millida : le solde, le montant disponible au retrait et les revenus de la période sélectionnée, ventilés par service : abonnements aux modpacks, hébergement, dons, market et autres.

L'API est en lecture seule. Vous ne pouvez pas retirer d'argent, modifier vos coordonnées de paiement ni payer quoi que ce soit par son intermédiaire. La clé ne voit que votre portefeuille ; vous ne pouvez pas accéder aux données d'autres personnes avec elle.

Clé

La clé est délivrée dans le tableau de bord partenaire : Profil → section portant le nom de votre studio → API des revenus. Lors de son émission, indiquez l'adresse IP du serveur depuis lequel les requêtes seront envoyées. La clé ne fonctionne depuis aucune autre adresse, même si elle est volée.

  • Vous pouvez indiquer jusqu'à dix adresses ou sous-réseaux. Le sous-réseau ne doit pas être plus large que /24 pour IPv4 et /48 pour IPv6.
  • Les adresses domestiques et locales (127.0.0.1, 10.x, 192.168.x) ne sont pas acceptées : vous avez besoin de l'adresse publique du serveur.
  • La clé n'est affichée qu'une seule fois. Conservez-la sur le serveur, dans des variables d'environnement ou dans un coffre de secrets, et ne l'exposez jamais au navigateur.
  • Vous pouvez avoir jusqu'à cinq clés actives. Si vous perdez une clé ou changez de serveur, révoquez l'ancienne clé et émettez-en une nouvelle. Une clé révoquée cesse de fonctionner immédiatement.

Tous les endpoints sont relatifs à https://api.millida.net/v2. La clé est transmise dans l'en-tête :

Authorization: Bearer mek_live_…

Résumé

GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z

from et to sont les bornes de la période au format ISO 8601. Ces deux paramètres sont facultatifs : sans eux, la période couvre tout l'historique.

{
  "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
  }
}

Tous les montants sont en kopecks : 1254000 signifie 12 540 ₽.

ChampSignification
balance.balanceKopeckstout ce qui se trouve dans le portefeuille, y compris les fonds gelés
balance.availableKopeckspeut être dépensé au sein de Millida
balance.withdrawableKopeckspeut être retiré dès maintenant — le même montant que sur le bouton « Retirer »
balance.heldKopecksgelé jusqu'à la fin de la période de rétention
period.earnedKopecksgagné pendant la période, tous services confondus
period.earnedBySourcerevenus de la période par service, du plus élevé au plus faible
period.paidOutKopecksretiré pendant la période
period.truncatedtrue — il y a trop de transactions sur la période et les montants sont incomplets : réduisez la période
subscriptionsabonnés à vos modpacks à l'instant présent, en bref ; détails dans la section « Abonnés »

Les valeurs de source :

sourceService
catalogcatalogue de modpacks : abonnements et achats
hostinghébergement
tradedons Trade
marketmarket
skinsMillida Skins
ratingrating
admincrédits Millida

De nouvelles valeurs peuvent être ajoutées au fil du temps. Si vous ne reconnaissez pas une valeur, affichez-la telle quelle et ne la traitez pas comme une erreur.

Abonnés

GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z

Combien de personnes jouent actuellement à vos modpacks avec un abonnement Millida et ce qui est arrivé aux abonnements pendant la période. Les abonnés sont comptés par accès actif, et non par paiements : une personne compte tant qu'elle peut lancer le modpack, y compris les trois jours suivant la date de paiement accordés pour la nouvelle tentative de prélèvement. L'accès via les clés de votre site web, l'accès d'équipe et les achats uniques ne comptent pas comme des abonnements.

L'API ne renvoie que des chiffres. Vous ne pouvez pas savoir qui exactement est abonné par son intermédiaire.

from et to définissent la période de la même manière que dans le résumé. Ils n'affectent que le bloc period ; les blocs total, active, renewal et packs affichent toujours l'état au moment de la requête.

{
  "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 liste tous vos modpacks, y compris ceux sans abonnés.

ChampSignification
total.subscriberscombien de personnes distinctes sont actuellement abonnées à au moins un de vos modpacks
total.bundleSubscribersparmi elles, avec un abonnement « Tous les modpacks »
total.packSubscribersparmi elles, avec un abonnement à un modpack individuel
partners[]une ligne par studio que vous possédez ; si vous n'êtes pas partenaire, la liste est vide
active.packSubscriptionstotal des abonnements à des modpacks individuels : une personne peut en avoir plusieurs
renewal.autoRenewingabonnements qui se renouvelleront automatiquement : le paiement automatique est activé
renewal.canceledStillActivele paiement automatique est désactivé, mais la période payée est encore active ; l'accès prendra fin après celle-ci
packs[].activeSubscriberscombien de personnes peuvent jouer à ce modpack par abonnement
packs[].viaPack / packs[].viaBundleparmi elles, par abonnement à ce modpack et par abonnement « Tous les modpacks »
period.newSubscriptionsabonnements dont le premier prélèvement a eu lieu pendant la période
period.canceledabonnements pour lesquels le paiement automatique a été désactivé pendant la période
period.expiredl'accès a pris fin pendant la période et n'a pas été renouvelé
period.refundedl'accès a été fermé pendant la période en raison d'un remboursement
truncatedtrue — il y a trop de données et les chiffres sont incomplets : réduisez la période

bundle compte des personnes, tandis que packs compte les abonnements à des modpacks individuels. Si un abonnement est annulé, il apparaît dans canceled le jour de l'annulation, et dans expired lorsque la période payée prend fin.

Erreurs

CodecodeQue faire
401INVALID_KEYla clé est absente, comporte une faute de frappe ou est une clé d'un autre type
401REVOKEDla clé a été révoquée — émettez-en une nouvelle
401OWNER_UNAVAILABLEle compte du propriétaire de la clé est bloqué ou supprimé
403IP_NOT_ALLOWEDla requête ne provient pas d'une adresse autorisée dans la clé ; le texte de l'erreur affiche l'adresse que nous avons vue
429—limite de fréquence des requêtes dépassée, réessayez la requête dans une minute

Limites

Une même clé peut envoyer jusqu'à 30 requêtes par minute. Les chiffres changent au rythme des paiements, il est donc inutile d'interroger l'API plus d'une fois par minute. Il est préférable de mettre en cache la réponse sur votre serveur.

Exemple

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"