Stremio Addons Documentation
Developers

API

Public REST API reference.

We expose a public, read-only REST API under https://stremio-addons.net/api/v0/*. No authentication is required and CORS is open to all origins (*).

The /api/v0/* API is experimental and comes with no stability guarantees; endpoints may change without notice.

Endpoints

GET /api/v0/categories

List all category labels.

Order: by name, ascending.

  • 200: CategoryList.
  • 500: { error: "Failed to fetch categories" }

Example

curl https://stremio-addons.net/api/v0/categories

GET /api/v0/addons

Paginated approved addons. Only top-level addons are listed (instances are excluded).

Query parameters:

NameTypeDefaultNotes
pageint ≥11Ignored when after resolves.
limitint 1–100100Clamped to range.
searchstringCase-insensitive match on name, description, or slug.
nsfwenuminclude allonly | exclude.
categorystringCategory slug; repeatable (?category=a&category=b), OR-matched. Multi-word slugs use + (e.g. ?category=tv+shows).
sort_byenumcreatedAtcreatedAt | stars.
orderenumdescasc | desc.
afteruuidCursor: skip rows up to and including this addon under the current sort. Falls back to offset paging if the uuid is not in the filtered set.

Order: by sort_by (default createdAt) in the order direction (default desc).

Use whichever paging style fits your use case: the after cursor is ideal for infinite scroll, while page and limit work great for regular numbered pagination.

  • 200: AddonList:

    {
      "addons": [
        /* Addon */
      ],
      "pagination": {
        "page": 1,
        "limit": 100,
        "total": 0,
        "totalPages": 0,
        "hasNextPage": false,
        "hasPreviousPage": false
      }
    }

    When after is applied, page is reported as 1 and hasPreviousPage is true.

  • 400: { error: "Invalid query parameter(s): ..." }

  • 500: { error: "Failed to fetch addons" }

Example

curl "https://stremio-addons.net/api/v0/addons?search=torrent&sort_by=stars&order=desc&limit=25"

GET /api/v0/addons/{uuidOrSlug}

Single approved addon by UUID or slug. Includes approved instances.

  • 200: AddonDetail
  • 400: { error: "UUID or slug is required" }
  • 404: { error: "Addon not found" }
  • 500: { error: "Internal Server Error" }

Example

curl https://stremio-addons.net/api/v0/addons/stremio-addons.net

Responses

All responses are JSON unless noted otherwise. Successful requests return 200; errors return the matching HTTP status with a { "error": string } body.

Responses are cached for up to a day (Cache-Control: public, max-age=86400), so newly approved addons and rating changes may take some time to appear.

Object shapes

Category

{
  name: string; // human-readable label, e.g. "TV Shows"
  slug: string; // url-safe identifier, e.g. "tv+shows"
}

CategoryList

{
  categories: Category[];
}

Addon

{
  uuid: string;
  url: string; // {SITE_URL}/addons/{slug}
  manifestUrl: string;
  manifest: object; // Stremio manifest object at the time of indexation
  slug: string;
  stars: number; // number of users who starred the addon
  categories: Category[];
  configureUrl: string | null; // null unless manifest.behaviorHints.configurable
  createdAt: string; // ISO 8601
  updatedAt: string; // ISO 8601
}

AddonDetail

Addon plus:

{
  documentation: string | null; // raw markdown, not HTML
  instances: AddonDetail[]; // approved instances
}

Pagination

{
  page: number;
  limit: number;
  total: number;
  totalPages: number;
  hasNextPage: boolean;
  hasPreviousPage: boolean;
}

AddonList

{
  addons: Addon[];
  pagination: Pagination;
}

Feedback

Have a use case the current endpoints don't cover? Let us know.

On this page