Документация по API ArssBooru
Базовый URL: http://arss.lol. Все ответы в формате JSON. Эндпоинты на чтение доступны без авторизации, на запись — нужен api_key.
Авторизация
У каждого зарегистрированного аккаунта есть личный api_key — смотри на странице настроек профиля. Передавай его как Bearer-токен:
Authorization: Bearer <твой_api_key>
Эндпоинты
GET /api/posts.json
Поиск/список постов. Параметры: tags (через пробел, минус впереди — исключить тег), page, limit (максимум 100).
curl "http://arss.lol/api/posts.json?tags=cat+-indoor&page=1"
GET /api/post/{id}.json
Один пост по id, вместе с тегами.
GET /api/tags.json
Параметр query для автокомплита, без него — самые популярные теги.
GET /api/stats.json
Базовая статистика сайта: количество постов, тегов, юзеров.
POST /api/posts.json (нужна авторизация)
Загрузка нового поста. multipart/form-data с полями: file (обязательно), tags (через пробел), source (необязательно). Лимит — 1 загрузка в минуту на один api_key, при превышении — 429 с заголовком Retry-After.
curl -X POST "http://arss.lol/api/posts.json" \ -H "Authorization: Bearer <твой_api_key>" \ -F "file=@photo.jpg" -F "tags=cat outdoor" -F "source=https://example.com"
POST /api/post/{id}/tags.json (нужна авторизация)
Добавить теги существующему посту. JSON-тело: {"tags": ["a", "b"]}.
Лимиты запросов
Загрузка поста через API (POST /api/posts.json) ограничена до 1 запроса в минуту на api_key. При превышении — HTTP 429 и JSON вида {"error":"rate_limited","retry_after_seconds":N}. Остальные эндпоинты сейчас без жёстких лимитов на уровне приложения, но всё равно не стоит злоупотреблять автоматизированным трафиком.
Справка по ролям
| Роль | Может |
|---|---|
| user | загружать, тегировать, комментировать, голосовать, жаловаться на посты, открывать тикеты в поддержку |
| helper | всё вышеперечисленное + работа на хелпдеске, ответы и закрытие тикетов поддержки |
| moderator | всё вышеперечисленное + удаление постов, обработка жалоб, назначение роли helper |
| admin | всё вышеперечисленное + назначение любой роли, включая admin |
