Перейти к содержимому
Разработчикам · Сборки в лаунчере

API автора каталога

Ключ автора mca_live_ для своих модов, сборок, карт и паков: черновик, заливка версий, страница, цена и статистика продаж. Адреса API, права ключа, примеры запросов, ошибки и лимиты.

Обновлено 25 сентября 2026 г.

Всё, что автор делает со своими материалами на сайте, можно делать из своего скрипта или сборочного конвейера: завести черновик, залить новую версию, поправить страницу, поменять цену и посмотреть продажи. Для этого нужен ключ автора — строка вида mca_live_….

Ключ работает только с вашими материалами: теми, у которых автор — вы. Чужую работу им не тронуть, даже если знать её адрес.

Ключ

Ключ выпускается в профиле, в разделе автора. Выберите права и срок; ключ покажется один раз — сохраните его в секретах конвейера. Потеряли — отзовите и выпустите новый. Действующих ключей может быть до десяти. Смена пароля или почты отзывает все ключи аккаунта — после неё выпустите новые.

ПравоЧто открывает
items:writeзавести черновик, подтвердить авторство, отправить материал на проверку
versions:writeполучить адрес заливки и зарегистрировать версию
page:writeкартинки, черновик страницы и отправка его на проверку
pricing:writeцена материала
stats:readскачивания, игроки и продажи

Давайте конвейеру только нужное: ключ сборки обычно живёт с versions:write и stats:read.

Все адреса — от https://api.millida.net/v2, ключ идёт в заголовке:

Authorization: Bearer mca_live_…

Мои материалы

GET /catalog/author-api/items
[
  {
    "slug": "my-pack",
    "type": "MODPACK",
    "title": "Моя сборка",
    "status": "PUBLISHED",
    "moderationStatus": "PUBLISHED",
    "pricing": "ONE_TIME",
    "priceKopecks": 49900,
    "versionsCount": 12,
    "downloads": 5310,
    "publicUrl": "/modpacks/my-pack"
  }
]

Новый материал

POST /catalog/author-api/items
{ "type": "MOD", "title": "Мой мод", "summary": "Коротко о моде" }

Материал появляется черновиком. Адрес (slug) берётся из названия; занятый адрес вернёт 409 с подсказкой свободного. Цену сразу при создании (pricing, priceKopecks) можно передать только ключом с правом pricing:write, иначе ответ — 403 MISSING_SCOPE.

Новая версия

1. Адрес для заливки:

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. Залейте файл запросом PUT на uploadUrl — прямо в хранилище, без нас посередине:

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

3. Зарегистрируйте версию:

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": "Новые квесты"
}

Версия уходит на автоматическую проверку и игрокам появляется после неё. Каждая заливка — новый файл: уже опубликованную версию перезаписать нельзя.

Отправка на проверку

Новый материал попадает в каталог после модератора. Когда у него есть хотя бы одна версия, подтвердите, что работа ваша и лицензию выбрали вы. Это отдельный запрос: отправка на проверку не делает его за вас.

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

Затем отправьте материал:

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

Без подтверждения ответ — 400 «Подтвердите, что сборка ваша и лицензия выбрана вами», без версии — 400 «Сначала загрузите файл сборки».

Страница

PUT /catalog/author-api/items/my-pack/page
{ "title": "Моя сборка", "summary": "…", "descriptionMd": "## Что внутри\n…" }

Это черновик: игроки видят прошлую страницу, пока новая не пройдёт проверку. Картинки в описании — только загруженные к нам, ссылки — только на страницы Millida. Иконку (iconUrl), скриншоты (gallery) и картинки описания сначала загрузите:

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 и AVIF до 15 МБ, GIF — нет. Загрузка требует права page:write, в ответе — адрес, который можно ставить в страницу. Отправить на проверку:

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

Цена

PUT /catalog/author-api/items/my-pack/pricing
{ "pricing": "ONE_TIME", "priceKopecks": 49900 }
pricingЧто значит
FREEбесплатно
ONE_TIMEразовая покупка, доступ навсегда
SUBSCRIPTIONподписка, списание раз в месяц
  • Суммы — в копейках. Минимальная цена платного материала — 300 ₽ (30000).
  • С каждой продажи платформа берёт 5%, остальное приходит на ваш кошелёк Millida.
  • Деньги с продажи можно тратить внутри Millida сразу, а вывести — через 7 дней после покупки.
  • Файлы платного материала скачивают только те, у кого есть доступ. Вы как автор доступ имеете всегда.

Статистика

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": 948100,
    "count": 20,
    "refundedCount": 0,
    "holdDays": 7,
    "last30d": [{ "day": "2026-09-24", "count": 3, "netKopecks": 142215 }]
  }
}

Продажи по всем материалам сразу:

GET /catalog/author-api/sales

Ошибки

Ответ с ошибкой всегда содержит message — его можно показать человеку как есть, и часто code — по нему удобно ветвиться в скрипте.

СтатусcodeЧто случилось
401INVALID_KEYключа нет, он с ошибкой или не найден
401REVOKED, EXPIREDключ отозван или истёк
401OWNER_UNAVAILABLEаккаунт владельца ключа заблокирован
403MISSING_SCOPEу ключа нет нужного права, список — в scopes
404—материала нет или он не ваш
400PRICE_TOO_LOW, PRICE_TOO_HIGH, INVALID_PRICINGцена вне правил, границы — в minKopecks и maxKopecks
409UNDER_REVIEWматериал на проверке у модератора — новые файлы после его ответа
429—слишком часто, повторите позже

Лимиты

  • 120 запросов в минуту на ключ.
  • Новые материалы — 10 в час, адреса заливки и версии — по 30 в час, правки страницы — 120 в час, картинки — 60 в час, смена цены — 60 в час.