Skip to content
Untuk pengembang · Modpack di launcher

API penulis katalog

Kunci penulis mca_live_ untuk mod, modpack, peta, dan paket Anda: draf, mengunggah versi, halaman, harga, dan statistik penjualan. Endpoint API, izin kunci, contoh permintaan, error, dan batas.

Diperbarui 13 Oktober 2026

Semua yang dilakukan penulis dengan materinya di situs dapat dilakukan dari skrip atau pipeline build Anda sendiri: membuat draf, mengunggah versi baru, mengedit halaman, mengubah harga, dan melihat penjualan. Untuk itu, Anda memerlukan kunci penulis — string seperti mca_live_….

Kunci hanya berfungsi dengan materi Anda: materi yang Anda adalah penulisnya. Anda tidak dapat menyentuh karya orang lain dengannya, bahkan jika Anda mengetahui alamatnya.

Kunci

Kunci diterbitkan di profil Anda, di bagian penulis. Beri nama kunci dan pilih scope; kunci ditampilkan sekali — simpan di secret pipeline Anda. Jika hilang, cabut dan terbitkan yang baru. Anda dapat memiliki hingga sepuluh kunci aktif. Mengubah kata sandi atau email mencabut semua kunci akun — terbitkan yang baru setelahnya.

ScopeApa yang diberikan
items:writemembuat draf, mengonfirmasi kepenulisan, mengirim materi untuk ditinjau
versions:writemendapatkan URL unggah dan mendaftarkan versi
page:writegambar, draf halaman, dan mengirimkannya untuk ditinjau
pricing:writeharga materi
stats:readunduhan, pemain, dan penjualan

Berikan pipeline hanya apa yang dibutuhkannya: kunci build biasanya cukup dengan versions:write dan stats:read.

Semua endpoint berada di bawah https://api.millida.net/v2; kunci diletakkan di header:

Authorization: Bearer mca_live_…

Materi saya

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

Materi baru

POST /catalog/author-api/items
{ "type": "MOD", "title": "My mod", "summary": "Briefly about the mod" }

Materi muncul sebagai draf. Alamat (slug) diambil dari nama; alamat yang sudah dipakai mengembalikan 409 dengan saran alamat yang masih kosong. Harga saat pembuatan (pricing, priceKopecks) hanya dapat diberikan dengan kunci yang memiliki scope pricing:write; jika tidak, responsnya 403 MISSING_SCOPE.

Versi baru

1. URL unggah:

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. Unggah file dengan permintaan PUT ke uploadUrl — langsung ke penyimpanan, tanpa kami di tengah:

curl -X PUT --upload-file my-pack-1.4.0.zip "$UPLOAD_URL"

3. Daftarkan versi:

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

Versi masuk ke peninjauan otomatis dan muncul ke pemain setelahnya. Setiap unggahan adalah file baru: Anda tidak dapat menimpa versi yang sudah dipublikasikan.

Mengirim untuk ditinjau

Materi baru masuk ke katalog setelah moderator. Saat materi sudah memiliki setidaknya satu versi, konfirmasikan bahwa karya itu milik Anda dan bahwa Anda yang memilih lisensi. Ini adalah permintaan terpisah: mengirim untuk ditinjau tidak melakukannya untuk Anda.

POST /catalog/author-api/items/my-pack/authorship
{ "ok": true }

Lalu kirim materinya:

POST /catalog/author-api/items/my-pack/submit
{ "ok": true, "status": "PENDING" }

Tanpa konfirmasi, responsnya 400 "Confirm that the modpack is yours and the license was chosen by you"; tanpa versi, 400 "Upload the modpack file first".

Halaman

PUT /catalog/author-api/items/my-pack/page
{ "title": "My modpack", "summary": "…", "descriptionMd": "## What's inside\n…" }

Ini adalah draf: pemain melihat halaman sebelumnya hingga halaman baru lolos peninjauan. Gambar dalam deskripsi harus diunggah ke kami saja; tautan harus mengarah ke halaman Millida saja. Unggah ikon (iconUrl), tangkapan layar (gallery), dan gambar deskripsi terlebih dahulu:

curl -H "Authorization: Bearer $MCA_KEY" -F "file=@icon.png" https://api.millida.net/v2/catalog/author-api/images
{ "url": "https://…/uploads/…/icon.png" }

Didukung PNG, JPG, WebP, dan AVIF hingga 15 MB; GIF tidak. Mengunggah memerlukan scope page:write; responsnya berisi alamat yang dapat Anda masukkan ke halaman. Kirim untuk ditinjau:

POST /catalog/author-api/items/my-pack/page/submit

Harga

PUT /catalog/author-api/items/my-pack/pricing
{ "pricing": "ONE_TIME", "priceKopecks": 49900 }
pricingArtinya
FREEgratis
ONE_TIMEpembelian sekali, akses selamanya
SUBSCRIPTIONlangganan, ditagih sekali sebulan
  • Jumlah dalam kopeck. Harga minimum untuk materi berbayar adalah 300 ₽ (30000), untuk skin dan jubah — 50 ₽ (5000); maksimumnya 100.000 ₽ (10000000).
  • Platform mengambil 30% dari setiap penjualan; sisanya masuk ke dompet Millida Anda.
  • Uang dari penjualan dapat langsung dibelanjakan di dalam Millida, tetapi penarikan tersedia 7 hari setelah pembelian.
  • Hanya mereka yang memiliki akses dapat mengunduh file materi berbayar. Sebagai penulis, Anda selalu memiliki akses.

Statistik

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 }]
  }
}

Penjualan di semua materi sekaligus:

GET /catalog/author-api/sales

Kesalahan

Respons kesalahan selalu berisi message — Anda dapat menampilkannya ke pengguna apa adanya — dan sering kali code — yang memudahkan percabangan di skrip.

StatuscodeApa yang terjadi
401INVALID_KEYkunci tidak ada, salah format, atau tidak ditemukan
401REVOKED, EXPIREDkunci dicabut atau kedaluwarsa
401OWNER_UNAVAILABLEakun pemilik kunci diblokir
403MISSING_SCOPEkunci tidak memiliki scope yang diperlukan; daftarnya ada di scopes
404—materi tidak ada atau bukan milik Anda
400PRICE_TOO_LOW, PRICE_TOO_HIGH, INVALID_PRICINGharga di luar aturan; batasnya ada di minKopecks dan maxKopecks
409UNDER_REVIEWmateri sedang ditinjau moderator — file baru setelah responsnya
429—terlalu banyak permintaan, coba lagi nanti

Batasan

  • 120 permintaan per menit per kunci.
  • Materi baru — 10 per jam, URL unggah dan versi — masing-masing 30 per jam, pengeditan halaman — 120 per jam, gambar — 60 per jam, perubahan harga — 60 per jam.