Skip to main content
Public API

Build on the SteamTools API

The same endpoints the homepage uses, exposed as plain HTTP. No auth, no SDK, no vendor lock-in — just curl from the terminal.

Generate the manifest + Lua pair

POST/api/generate

Verifies the App ID against the Steam store, then returns the canonical CDN URLs for the .manifest and .lua files. Branches other than public must exist for that App ID on Steam.

Request body

appId
Numeric Steam App ID.
branch
Optional filename label. Defaults to public. Upstream packages are almost always the public release regardless of this field.

Example request

bash
curl -s -X POST "https://steamtools.games/api/generate" \
  -H "Content-Type: application/json" \
  -d '{"appId": "400", "branch": "public"}' | jq

Example response

json
{
  "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 object with manifestUrl, luaUrl, gameName, gameImage, and per-step install instructions.

Rate limits & fair use

Search is throttled to one request per 300 ms per IP; generate is throttled to one request per 1.5 s. There is no daily quota. If you need higher throughput, run your own instance — the project is open source.

OpenAPI 3.1 spec

The full schema is available as a static JSON file — perfect for plugging into Postman, Insomnia, or your CI linter.

Download openapi.json

Frequently asked

Do I need an API key?
No. The endpoints are public, free, and unauthenticated. We rate-limit by IP to keep the lights on.
Can I use this in a commercial product?
Yes, as long as you respect Steam's terms of service and don't repackage the manifest files behind ads or a paywall.
Why JSON instead of XML?
JSON is the lowest common denominator. The shape mirrors what the homepage generator already returns, so any client that talks to one can talk to the other.