Авторизация и API-ключи
Публичное чтение работает без ключа. Для всего остального нужен личный API-ключ, который передаётся как bearer-токен.
API-ключи
- Формат:
gm_<prefix>_<secret>. Префикс (gm_a1b2c3d4) виден в списке, чтобы ключи можно было различать. - Создавать, менять и отзывать ключи можно в Настройках → API-ключи на сайте. Сами ключи управлять ключами не могут: эти методы не принимают bearer-токены.
- Секрет показывается один раз. Хранится только его хэш, поэтому потерянный ключ не восстановить — выпустите новый секрет.
- До 10 активных ключей на аккаунт, по желанию со сроком действия (30, 90 или 365 дней).
- Ключ действует от вашего имени, с вашими ролями и правами, но только в пределах своих scopes.
Authorization: Bearer gm_a1b2c3d4_Q2hhbmdlTWVJbkEuZW52RmlsZU5vdEluQ29kZTEy
- curl
- TypeScript
- Python
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${GLITCHMUG_API:-https://api.glitchmug.com/v1}"
curl -fsS "$BASE_URL/me" \
-H "Authorization: Bearer $GLITCHMUG_TOKEN"
const baseUrl = process.env.GLITCHMUG_API ?? 'https://api.glitchmug.com/v1';
const res = await fetch(`${baseUrl}/me`, {
headers: { Authorization: `Bearer ${process.env.GLITCHMUG_TOKEN}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const me = await res.json();
console.log(me.username, me.permissions);
import json
import os
import urllib.request
base_url = os.environ.get("GLITCHMUG_API", "https://api.glitchmug.com/v1")
req = urllib.request.Request(
f"{base_url}/me",
headers={"Authorization": f"Bearer {os.environ['GLITCHMUG_TOKEN']}"},
)
with urllib.request.urlopen(req) as res:
me = json.load(res)
print(me["username"], me["permissions"])
Запросам с bearer-токеном не нужны ни cookies, ни CSRF-токены.
Scopes
Для GET-запросов достаточно mods:read — он есть у каждого ключа. Для записи нужен scope соответствующего раздела:
| Scope | Даёт |
|---|---|
mods:read | Читать всё, что вы видите на сайте (есть всегда) |
mods:write | Создавать и редактировать свои моды и версии, отправлять их на публикацию |
files:upload | Загружать файлы и картинки |
comments:write | Писать, править и удалять комментарии |
webhooks:manage | Управлять вебхуками — нужен даже для просмотра списка |
Остальные действия (лайки, коллекции, жалобы, настройки) пока доступны только на сайте.
Ошибки
| Статус | code | Что значит |
|---|---|---|
401 | invalid_api_key | Ключ испорчен, отозван или истёк |
401 | unauthenticated | Метод требует авторизации, а её нет |
403 | scope_missing | У ключа нет нужного scope |
403 | banned | Аккаунт заблокирован, его ключи не работают |
403 | forbidden | Нет нужного права (ключ прав не добавляет) |
Формат ответа — в разделе Ошибки.