API auteur du catalogue
La clé auteur mca_live_ pour vos mods, modpacks, maps et packs : brouillon, envoi de versions, page, prix et statistiques de ventes. Points d'accès API, permissions de la clé, exemples de requêtes, erreurs et limites.
Mis à jour le 13 octobre 2026
Tout ce qu'un auteur fait avec ses matériaux sur le site peut être fait depuis votre propre script ou pipeline de build : créer un brouillon, téléverser une nouvelle version, modifier la page, changer le prix et consulter les ventes. Pour cela, il vous faut une clé d'auteur — une chaîne comme mca_live_….
La clé ne fonctionne qu'avec vos matériaux : ceux dont vous êtes l'auteur. Vous ne pouvez pas toucher au travail de quelqu'un d'autre avec, même si vous connaissez son adresse.
Clé
La clé est délivrée dans votre profil, dans la section auteur. Nommez la clé et sélectionnez les scopes ; la clé est affichée une seule fois — enregistrez-la dans les secrets de votre pipeline. Si vous la perdez, révoquez-la et émettez-en une nouvelle. Vous pouvez avoir jusqu'à dix clés actives. Changer votre mot de passe ou votre e-mail révoque toutes les clés du compte — émettez-en de nouvelles ensuite.
| Scope | Ce qu'il autorise |
|---|---|
items:write | créer un brouillon, confirmer la paternité, soumettre le matériau à la modération |
versions:write | obtenir une URL de téléversement et enregistrer une version |
page:write | images, brouillon de page et sa soumission à la modération |
pricing:write | prix du matériau |
stats:read | téléchargements, joueurs et ventes |
Ne donnez au pipeline que ce dont il a besoin : une clé de build vit généralement avec versions:write et stats:read.
Tous les endpoints se trouvent sous https://api.millida.net/v2 ; la clé va dans l'en-tête :
Authorization: Bearer mca_live_…
Mes matériaux
GET /catalog/author-api/items
[
{
"slug": "my-pack",
"type": "MODPACK",
"title": "My modpack",
"status": "PUBLISHED",
"moderationStatus": "PUBLISHED",
"pricing": "ONE_TIME",
"priceKopecks": 49900,
"versionsCount": 12,
"downloads": 5310,
"publicUrl": "/modpacks/my-pack"
}
]
Nouveau matériau
POST /catalog/author-api/items
{ "type": "MOD", "title": "My mod", "summary": "Briefly about the mod" }
Le matériau apparaît comme brouillon. L'adresse (slug) est tirée du nom ; une adresse déjà prise renvoie 409 avec une suggestion d'adresse libre. Le prix à la création (pricing, priceKopecks) ne peut être transmis qu'avec une clé disposant du scope pricing:write ; sinon la réponse est 403 MISSING_SCOPE.
Nouvelle version
1. URL de téléversement :
POST /catalog/author-api/items/my-pack/upload-url
{ "version": "1.4.0", "fileName": "my-pack-1.4.0.zip", "size": 734003200 }
{ "uploadUrl": "https://…", "storageKey": "catalog/packs/my-pack/…", "expiresIn": 3600 }
2. Téléversez le fichier avec une requête PUT vers uploadUrl — directement vers le stockage, sans nous au milieu :
curl -X PUT --upload-file my-pack-1.4.0.zip "$UPLOAD_URL"
3. Enregistrez la version :
POST /catalog/author-api/items/my-pack/versions
{
"version": "1.4.0",
"storageKey": "catalog/packs/my-pack/…",
"gameVersions": ["1.20.1"],
"loaders": ["fabric"],
"loaderVersion": "0.16.0",
"changelog": "New quests"
}
La version passe en modération automatique et apparaît aux joueurs après celle-ci. Chaque téléversement est un nouveau fichier : vous ne pouvez pas écraser une version déjà publiée.
Soumission à la modération
Un nouveau matériau entre dans le catalogue après un modérateur. Lorsqu'il a au moins une version, confirmez que le travail est le vôtre et que vous avez choisi la licence. C'est une requête distincte : la soumission à la modération ne le fait pas à votre place.
POST /catalog/author-api/items/my-pack/authorship
{ "ok": true }
Soumettez ensuite le matériau :
POST /catalog/author-api/items/my-pack/submit
{ "ok": true, "status": "PENDING" }
Sans confirmation, la réponse est 400 « Confirmez que le modpack est le vôtre et que la licence a été choisie par vous » ; sans version, 400 « Téléversez d'abord le fichier du modpack ».
Page
PUT /catalog/author-api/items/my-pack/page
{ "title": "My modpack", "summary": "…", "descriptionMd": "## What's inside\n…" }
Il s'agit d'un brouillon : les joueurs voient la page précédente jusqu'à ce que la nouvelle passe la modération. Les images de la description doivent être téléversées uniquement chez nous ; les liens doivent pointer uniquement vers des pages Millida. Téléversez d'abord l'icône (iconUrl), les captures d'écran (gallery) et les images de la description :
curl -H "Authorization: Bearer $MCA_KEY" -F "file=@icon.png" https://api.millida.net/v2/catalog/author-api/images
{ "url": "https://…/uploads/…/icon.png" }
PNG, JPG, WebP et AVIF jusqu'à 15 Mo sont pris en charge ; GIF non. Le téléversement nécessite le scope page:write ; la réponse contient une adresse que vous pouvez mettre dans la page. Soumettez à la modération :
POST /catalog/author-api/items/my-pack/page/submit
Prix
PUT /catalog/author-api/items/my-pack/pricing
{ "pricing": "ONE_TIME", "priceKopecks": 49900 }
pricing | Ce que cela signifie |
|---|---|
FREE | gratuit |
ONE_TIME | achat unique, accès à vie |
SUBSCRIPTION | abonnement, prélevé une fois par mois |
- Les montants sont en kopecks. Le prix minimum pour un matériau payant est de 300 ₽ (
30000), pour les skins et les capes — 50 ₽ (5000) ; le maximum est de 100 000 ₽ (10000000). - La plateforme prend 30 % sur chaque vente ; le reste va sur votre portefeuille Millida.
- L'argent d'une vente peut être dépensé immédiatement dans Millida, mais le retrait est disponible 7 jours après l'achat.
- Seuls ceux qui ont l'accès peuvent télécharger les fichiers d'un matériau payant. En tant qu'auteur, vous avez toujours l'accès.
Statistiques
GET /catalog/author-api/items/my-pack/stats
{
"versions": [{ "version": "1.4.0", "downloads": 312, "reviewStatus": "APPROVED" }],
"players": { "players": 1204, "playersRecent": 380, "days": [{ "day": "2026-09-24", "players": 41 }] },
"sales": {
"totalKopecks": 998000,
"netKopecks": 698600,
"count": 20,
"refundedCount": 0,
"holdDays": 7,
"last30d": [{ "day": "2026-09-24", "count": 3, "netKopecks": 104790 }]
}
}
Ventes sur tous les matériaux à la fois :
GET /catalog/author-api/sales
Erreurs
Une réponse d'erreur contient toujours message — vous pouvez le montrer à une personne tel quel — et souvent code — ce qui est pratique pour brancher dans un script.
| Statut | code | Ce qui s'est passé |
|---|---|---|
| 401 | INVALID_KEY | la clé est absente, mal formée ou introuvable |
| 401 | REVOKED, EXPIRED | la clé a été révoquée ou a expiré |
| 401 | OWNER_UNAVAILABLE | le compte du propriétaire de la clé est bloqué |
| 403 | MISSING_SCOPE | la clé n'a pas le scope requis ; la liste est dans scopes |
| 404 | — | le matériau n'existe pas ou n'est pas le vôtre |
| 400 | PRICE_TOO_LOW, PRICE_TOO_HIGH, INVALID_PRICING | le prix est hors des règles ; les bornes sont dans minKopecks et maxKopecks |
| 409 | UNDER_REVIEW | le matériau est en cours de modération — de nouveaux fichiers après la réponse du modérateur |
| 429 | — | trop de requêtes, réessayez plus tard |
Limites
- 120 requêtes par minute par clé.
- Nouveaux matériaux — 10 par heure, URL de téléversement et versions — 30 par heure chacune, modifications de page — 120 par heure, images — 60 par heure, changements de prix — 60 par heure.