Skip to main content

Endpoints

All paths are relative to /api/. Read endpoints are what a mod browser needs; write endpoints are gated by your key's scopes.

Games​

MethodPathScopeNotes
GETmod-games/game:readGames visible to your key. Scoped key = just your game(s).
GETmod-games/{game_id}/game:readOne game. 403 if out of scope.
GETmod-games/{game_id}/mods/game:read + mod:readPaginated mods in one game. Same filters and sort as GET mods/. 403 if out of scope.

Categories​

MethodPathScopeNotes
GETmod-categories/mod_category:readCategory tree.
GETmod-categories/flattened/mod_category:readFlat list (easy dropdown).
GETmod-categories/{category_id}/mod_category:readOne category.
GETmod-categories/{category_id}/mods/mod_category:read + mod:readPaginated mods in one category. Same filters and sort as GET mods/.

Mods​

MethodPathScopeNotes
GETmods/mod:readPaginated list. Filters below.
GETmods/{mod_id}/mod:readOne mod, verbose. 403 if out of scope.
GETmods/{mod_id}/updates/mod:readPaginated changelog/update posts.
GETmods/{mod_id}/reviews/mod_rating:readPaginated reviews.
GETmods/{mod_id}/versions/mod:readAll versions (versioned mods only).

List filters (query string on GET mods/, GET mod-games/{game_id}/mods/ and GET mod-categories/{category_id}/mods/):

  • page (int)
  • prefix_id (int)
  • type (free | paid)
  • creator_id (int) - mods by one author
  • mod_ids (int list, max 100) - only these mods, as mod_ids=1,2,3 or mod_ids[]=1&mod_ids[]=2. All matches come back in one page. Mods your key cannot see are left out, not reported as errors.
  • order (last_update | mod_date | rating_weighted | download_count | title)
  • direction (asc | desc)

GET mods/ has no game_id filter: a game-scoped key is narrowed to its game(s) server-side. An unrestricted key that wants one game's mods uses GET mod-games/{game_id}/mods/.

Versions & downloads​

MethodPathScopeNotes
GETmod-versions/{version_id}/mod:readOne version.
GETmod-versions/{version_id}/download?file={attachment_id}mod:readLocal file: streams it. External: 302 redirect to the external URL.

How download info appears on a version result:

  • External mod - download_url (string) + optional download_urls (string[] mirrors). Point the user at those.
  • Local (hosted) mod - files[], each { id, filename, size, download_url }. That download_url is the API download endpoint - call it with your key to stream the bytes.
Always call the download endpoint

Do not cache or hand out a raw storage URL. Always fetch through mod-versions/{id}/download with your key so access stays revocable. See Acceptable Use.

Updates / Reviews / Comments​

MethodPathScope
GETmod-updates/ , mod-updates/{id}/mod:read
GETmod-reviews/ , mod-reviews/{id}/mod_rating:read
GETmod-comments/ , mod-comments/{id}/mod:read

Write endpoints (optional)​

Only usable if your key has write scopes. Developer keys are read-only (mod:read + game:read) by default; write access is a manual upgrade.

  • POST mods/ - create a mod (requires game_id in body; must be your game or 403).
  • POST mods/{mod_id}/ - edit.
  • DELETE mods/{mod_id}/ - delete (soft by default).
  • POST mod-versions/ - publish a new version of a mod.