Всё, что есть на сайте, доступно машине без регистрации: лента изменений,
новости, ссылки, мемы, идеи, статьи и витрина демок. Забирайте и показывайте
где угодно — в своём боте, в дашборде, в терминале.
| Что | Где |
|---|---|
| Адрес | https://api.slophub.ru/api/v1 |
| Документация с кнопкой «попробовать» | api.slophub.ru/docs |
| Спецификация OpenAPI | api.slophub.ru/openapi.yaml |
| Формат | JSON, UTF-8 |
| Ключ | не нужен; поднимает лимит |
Спека — не описание постфактум: код обеих сторон генерируется из неё, поэтому
разойтись с реальностью она не может. Если что-то в этой странице устарело,
верить надо спеке.
# последние записи любого типа
curl -s 'https://api.slophub.ru/api/v1/entries?limit=5'
# только новости, с телом записи
curl -s 'https://api.slophub.ru/api/v1/entries?kind=news&limit=3&with_body=true'
# одна запись целиком
curl -s 'https://api.slophub.ru/api/v1/entries/article/kak-prisylat-materialy'
# сводка: сколько чего опубликовано
curl -s 'https://api.slophub.ru/api/v1/stats'
Заголовки записей в терминал, если под рукой jq:
curl -s 'https://api.slophub.ru/api/v1/entries?limit=10' \
| jq -r '.items[] | "\(.kind)\t\(.title)"'
| Ручка | Что отдаёт |
|---|---|
GET /entries |
список записей с фильтрами и поиском |
GET /entries/{kind}/{slug} |
одну запись целиком |
GET /tags |
все теги с числом записей |
GET /stats |
сколько чего опубликовано и когда последнее |
GET /slops |
витрину демок |
GET /wiki/search |
поиск по этой вики |
GET /media/{id} |
файл: картинку или видео |
POST /ideas |
предложить идею — единственная запись |
Типы записей (kind): feed, news, article, link, meme, idea.
| Параметр | Умолчание | Что делает |
|---|---|---|
kind |
все | типы через запятую: kind=news,link |
tag |
— | теги через запятую; нужны все сразу |
q |
— | полнотекстовый поиск с русской морфологией |
since, until |
— | границы по дате публикации |
order |
new |
new — свежие сверху, old — старые |
with_body |
false |
добавить body_md и body_html |
limit |
20 |
сколько вернуть |
cursor |
— | продолжение с прошлого ответа |
# всё про бота, что вышло с июля
curl -s 'https://api.slophub.ru/api/v1/entries?tag=бот&since=2026-07-01T00:00:00Z'
# поиск: «агентов» найдёт «агент»
curl -s 'https://api.slophub.ru/api/v1/entries?q=агент&limit=5'
q ищет по заголовку, анонсу и телу — то же самое, что делает поле поиска
на сайте. Морфология русская, поэтому форма слова значения не
имеет.
Номеров страниц нет намеренно: контент добавляется постоянно, и смещение
начинает врать — записи повторяются и теряются. Берите next_cursor из
ответа и передавайте его следующим запросом.
cursor=''
while :; do
page=$(curl -s "https://api.slophub.ru/api/v1/entries?limit=50&cursor=$cursor")
echo "$page" | jq -r '.items[].title'
cursor=$(echo "$page" | jq -r '.next_cursor // empty')
[ -z "$cursor" ] && break
done
Пустой next_cursor — записи кончились. Разбирать саму строку курсора не
надо, её формат может поменяться.
Анонимно — 30 запросов в минуту с адреса, с ключом в заголовке X-API-Key —
600. У вошедшего столько же, и счётчик тогда свой, а не общий с соседями по
адресу.
Запоминать числа не нужно, точное состояние приезжает в каждом ответе:
x-ratelimit-limit: 30
x-ratelimit-remaining: 24
x-ratelimit-reset: 1786562041
Превысили — 429 и Retry-After. Ключ выдаёт админ; за ним — в
бота.
Опрос в цикле раз в секунду упрётся в лимит за полминуты. Ленту разумно
спрашивать раз в минуту-две: чаще она всё равно не меняется.
Кроме очевидных title, summary и published_at:
url_path — адрес страницы на сайте, относительный: /news/что-то/.body_md и body_html — исходный markdown и готовая разметка. В спискахwith_body=true.media — вложение: url, размеры, mime, а у видео ещё duration иposter_url — кадр-заставка, чтобы не показывать чёрный прямоугольник.feed_type — у записей ленты: added, changed, fixed, removed,wiki.idea_status — у идей: в какой стадии.source_name и source_url — первоисточник, если материал переслали.reading_minutes — оценка времени чтения у статей.Всё непубличное. Черновики, очередь модерации, идеи, которые ещё не одобрены,
способы связи приславших, журнал действий и вообще всё, что живёт за
/admin/*. Публичная документация про эти ручки даже не знает: она
вычитается из полной на старте.
Единственное место, где публичное API пишет:
curl -s -X POST 'https://api.slophub.ru/api/v1/ideas' \
-H 'Content-Type: application/json' \
-d '{"title":"Название идеи","body_md":"Подробности"}'
Идея попадает в очередь и наружу не отдаётся, пока её не одобрят. Лимит —
три идеи в час с адреса. Форма на странице
идей делает ровно это же и удобнее.
Для читалки API не нужен: slophub.ru/rss.xml —
новости, ссылки и статьи. Мемы и записи ленты изменений туда намеренно не
попадают.
GET /slops