Перейти к основному содержимому

Для мод-менеджеров

Эта страница для авторов мод-менеджеров: как подключить Glitchmug как источник. Свой менеджер мы не делаем, потому что хорошие уже есть.

Начать можно без ключа. Каталог публичный, это те же данные, что видит любой посетитель сайта, поэтому для чтения и скачивания файлов ключ не нужен. Ключи только снимают лимиты.

Эндпоинты​

ШагЗапрос
ИгрыGET /games, затем GET /games/{slug}/categories
Каталог и поискGET /mods?game=deadlock с q, category, tag, sort
Что изменилосьGET /mods?game=deadlock&updatedSince=…
Один модGET /mods/{id}
Версии и списки измененийGET /mods/{id}/versions, сначала новые
Файлы версииGET /versions/{id}/files: name, size, sha256
Что внутри архиваGET /files/{id}/entries
СкачиваниеGET /files/{id}/download

Полная схема в справочнике API.

Проверка обновлений​

Храните id и currentVersion каждого установленного мода. При синхронизации запрашивайте изменения с прошлого раза и сравнивайте версии: updatedAt сдвигается и при обновлении счётчиков, так что новая дата сама по себе не значит новый релиз.

#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${GLITCHMUG_API:-https://api.glitchmug.com/v1}"
UA="ExampleManager/1.0 (+https://example.com)"

# Everything changed since your last sync; compare currentVersion with what you stored
curl -fsS -A "$UA" "$BASE_URL/mods?game=deadlock&updatedSince=2026-10-01T00:00:00Z&sort=updated&limit=100"

Недоступный мод отвечает 404. isWip отмечает незаконченный мод, а в GET /mods/{id} есть ещё isObsolete для устаревшего. Моды 18+ не попадают в списки без nsfw=include, их отмечает isNsfw: держите их за своей проверкой возраста.

Вебхуки сообщают только об изменениях ваших собственных модов, поэтому менеджер опрашивает API. Раза в несколько минут более чем достаточно.

Скачивание​

GET /files/{id}/download засчитывает скачивание автору и отвечает 302 на подписанную ссылку на https://dl.glitchmug.com. Пройдите по редиректу и сверьте файл с sha256.

#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${GLITCHMUG_API:-https://api.glitchmug.com/v1}"
UA="ExampleManager/1.0 (+https://example.com)"
VERSION_ID="${VERSION_ID:-twl7516oswn1}"
FILE_ID="${FILE_ID:-5ann2e2oz3y6}"

# The files of a version, with name, size and sha256
curl -fsS -A "$UA" "$BASE_URL/versions/$VERSION_ID/files"

# -L follows the 302 to the signed link on dl.glitchmug.com
out="$(mktemp)"
curl -fsSL -A "$UA" -o "$out" "$BASE_URL/files/$FILE_ID/download"

# Compare with the sha256 from the list above; on a mismatch discard the file
sha256sum "$out"
rm -f "$out"
  • Всегда начинайте с этого эндпоинта. Подписанная ссылка живёт 6 часов: не храните её и не размещайте копии файлов, иначе авторы теряют счётчик скачиваний и возможность удалить свою работу.
  • В списке только файлы, прошедшие проверку на вирусы.
  • Без ключа скорость скачивания ограничена 2 МБ/с. Клиентский ключ снимает это ограничение.

Лимиты и ключи​

Обращаться к API можно тремя способами:

Без ключаКлиентский ключAPI-ключ
Для чегоПопробовать, приложение с небольшим числом скачиванийВаше приложение на компьютерах пользователейВаш бэкенд
Запросы60 в минуту на IP60 в минуту на IP600 в минуту на ключ
Скорость скачивания2 МБ/сБез ограниченияБез ограничения
Как передаватьНичего не нужноX-Glitchmug-Client: <ключ> при скачиванииAuthorization: Bearer <ключ>
Как получитьБесплатно, напишите на contact@glitchmug.comНастройки → API-ключи
  • Клиентский ключ снимает только ограничение скорости, поэтому его можно класть в сборку приложения.
  • API-ключ действует от имени вашего аккаунта и может менять ваши моды, поэтому в сборку приложения его класть нельзя.
  • 60 запросов в минуту на IP хватит десктопному приложению, которое синхронизируется через updatedSince, а не листает весь каталог. См. Лимиты запросов.
  • API не отдаёт заголовки CORS, поэтому обращайтесь к нему из нативного кода или с бэкенда, а не со страницы в webview. В Tauri и Electron это нативная часть, а не фронтенд.

Правила хорошего клиента​

  • Передавайте User-Agent с названием приложения, версией и ссылкой, как в примерах: так мы сможем связаться с вами раньше, чем проблема дойдёт до блокировки.
  • Показывайте автора мода и ссылку на его страницу: path есть в каждом ответе, домен https://glitchmug.com. Для русских страниц добавьте /ru в начало.
  • Показывайте license из GET /mods/{id}. Там указано, что разрешает автор, в том числе про перезалив.
  • Соблюдайте Retry-After при 429.

Стабильность​

Новое появляется в /v1. Несовместимое изменение вышло бы как /v2, а v1 работал бы ещё какое-то время для перехода. Все изменения есть в журнале. До открытой беты v1 может меняться, такие изменения помечены Несовместимо.

Сотрудничество​

Если вы ведёте менеджер, напишите на contact@glitchmug.com. Пришлём клиентский ключ и можем обсудить:

  • кнопку «Установить через …» на страницах модов, если у менеджера есть URL-протокол;
  • чего вам не хватает в API.