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. One of: public, beta, beta_1, ptb, experimental, staging. Defaults to public.

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",
    "manifestUrl": "https://shared.fastly.steamstatic.com/steamtools/manifests/400_public.manifest",
    "luaUrl": "https://shared.fastly.steamstatic.com/steamtools/scripts/400_public.lua",
    "instructions": [
      "1. Create a depotcache folder next to SteamTools if you don't have one.",
      "2. Drop the manifest file (400_public.manifest) into the depotcache folder.",
      "3. Drop the matching Lua script into the SteamTools root directory.",
      "4. Restart SteamTools and the game will appear in your library.",
      "5. 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.