Developer API

A small read-only JSON API for bots and external tools — including in-game portals — to browse plugins and look up a plugin's current version and download link. Only published (approved) plugins are ever returned.

List / browse plugins

Returns every published plugin, optionally filtered and paginated. All parameters are optional and can be combined.

GET https://onlyplugins.lol/?action=api_plugins
GET https://onlyplugins.lol/?action=api_plugins&category=combat
GET https://onlyplugins.lol/?action=api_plugins&name=raid
GET https://onlyplugins.lol/?action=api_plugins&author=SomeAuthor
GET https://onlyplugins.lol/?action=api_plugins&sort=updated&page=1&per_page=50

category — exact category key (see categories in the response for valid keys).
name — partial, case-insensitive match on the plugin name.
author — partial, case-insensitive match on the publisher's username.
sortname (default), updated, or downloads.
page / per_page — pagination, per_page capped at 100 (default 50).

{
  "status": "ok",
  "count": 2,
  "total": 137,
  "page": 1,
  "per_page": 50,
  "total_pages": 3,
  "categories": { "combat": "Combat", "economy": "Economy", "...": "..." },
  "plugins": [ { "...": "see full plugin object below" } ]
}

Look up a single plugin by name

Exact match is tried first, then a partial match. If more than one plugin shares that name, add author to disambiguate — otherwise you'll get "status": "ambiguous" with every candidate listed.

GET https://onlyplugins.lol/?action=api_plugin&name=PluginName
GET https://onlyplugins.lol/?action=api_plugin&name=PluginName&author=SomeAuthor

Look up by id or slug

GET https://onlyplugins.lol/?action=api_plugin&id=<plugin-id>
GET https://onlyplugins.lol/?action=api_plugin&slug=<plugin-slug>

Looking up a single, unambiguous plugin (by id/slug, or by name+author when it resolves to exactly one match) also includes the plugin's full raw description and changelog text — omitted from list responses to keep those payloads small.

The plugin object

Both endpoints above return plugins in this same shape, whether as a single-item list (api_plugin) or a page of results (api_plugins):

{
  "id": "...",
  "slug": "...",
  "name": "...",
  "author": "...",
  "version": "1.2.0",
  "category": "combat",
  "category_label": "Combat",
  "summary": "Short one-line description.",
  "tags": ["raid", "pvp"],
  "rating": 4.6,
  "rating_count": 12,
  "downloads": 4213,
  "file_size": 20480,
  "icon_url": "https://.../uploads/icons/....jpg",
  "banner_url": "https://.../uploads/banners/....jpg",
  "has_staging_build": false,
  "download_url": "https://.../?action=download&id=...",
  "page_url": "https://.../?page=view&id=...",
  "created_at": "2025-06-01T00:00:00+00:00",
  "updated_at": "2026-01-01T00:00:00+00:00",
  "description": "Full raw description text (only on single-plugin lookups).",
  "changelog": "Full raw changelog text (only on single-plugin lookups)."
}

status is one of ok, ambiguous, not_found, or error. Compare the version field against what's installed to know if an update is available, then fetch download_url. icon_url/banner_url may be null if none is set.