Основан на SteamTools API
Те же конечные точки, которые использует домашняя страница, представленные как простой HTTP. Никакой аутентификации, никакого SDK, никакой привязки к поставщику — просто закручивайтесь с терминала.
Поиск в каталоге Steam
/api/searchВозвращает до 10 результатов, соответствующих запросу — либо название игры, либо числовое значение App ID. Числовые запросы просматриваются через конечную точку appdetails Steam, поэтому они всегда возвращают каноническую запись.
Query parameters
- query
- Произвольный текстовый поисковый запрос или числовое значение App ID.
Пример запроса
curl -s "https://steamtools.games/api/search?query=portal" | jqСоздать пару манифест + Lua
/api/generateСверяет App ID с хранилищем Steam, затем возвращает канонические CDN URL для файлов .manifest и .lua. Для этого App ID на Steam должны существовать ветки, отличные от общедоступных.
Request body
- appId
- Числовой Steam App ID.
- branch
- Дополнительная метка имени файла. По умолчанию общедоступный. Восходящие пакеты почти всегда являются общедоступными, независимо от этого поля.
Пример запроса
curl -s -X POST "https://steamtools.games/api/generate" \
-H "Content-Type: application/json" \
-d '{"appId": "400", "branch": "public"}' | jqПример ответа
{
"code": 0,
"message": "ok",
"data": {
"appId": "400",
"branch": "public",
"gameName": "Portal",
"gameImage": "https://shared.cloudflare.steamstatic.com/store_item_assets/steam/apps/400/capsule_231x87.jpg",
"downloadUrl": "https://steamtools.games/api/files/400/zip",
"luaUrl": "https://steamtools.games/api/files/400/lua",
"keyVdfUrl": "https://steamtools.games/api/files/400/key",
"instructions": [
"1. Click Download ZIP — the package contains 400_public.lua, key.vdf, and a README.",
"2. Copy the .lua and key.vdf into your SteamTools install root (same folder as the executable).",
"3. Restart SteamTools and the game will appear in your library.",
"4. Branches available for this App ID: public."
],
"generatedAt": "2026-06-30T12:34:56.000Z"
}
}JSON с манифестом, luaUrl, gameName, gameImage и пошаговыми инструкциями по установке.
Ограничения ставок и добросовестное использование
Поиск ограничивается одним запросом за 300 мс на каждый IP-адрес; генерирование ограничивается одним запросом за 1,5 с. Дневной нормы нет. Если вам нужна более высокая пропускная способность, запустите собственный экземпляр — проект с открытым исходным кодом.
OpenAPI 3.1 спецификация
Полная схема доступна в виде статического файла JSON, который идеально подходит для подключения к Postman, Insomnia или вашему CI-линтеру.
Скачать openapi.jsonЧасто задаваемые вопросы
- Нужен ли мне ключ API?
- Нет. Конечные точки являются общедоступными, бесплатными и не прошедшими проверку подлинности. Мы ограничиваем скорость по IP, чтобы свет оставался включенным.
- Могу ли я использовать это в коммерческом продукте?
- Да, при условии, что вы соблюдаете условия обслуживания Steam и не переупаковываете файлы манифеста в рекламу или платный доступ.
- Почему JSON вместо XML?
- JSON — наименьший общий знаменатель. Форма отражает то, что уже возвращает генератор домашней страницы, поэтому любой клиент, который обращается к одному, может общаться и к другому.