Collections are user-curated groups of ROMs that span platform boundaries, letting you build playlists like “My Favorites”, “Holiday Games”, or “RPGs to Finish”. RomM also supports smart collections (filter-driven, auto-updating) and virtual collections (system-generated groupings like by genre or franchise).Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rommapp/romm/llms.txt
Use this file to discover all available pages before exploring further.
Regular Collections
GET /api/collections
Retrieve all collections visible to the current user. Public collections from other users are included; private collections belonging to other users are excluded. Required scope:collections.read
ISO 8601 datetime with timezone. Returns only collections updated after this timestamp.
CollectionSchema objects.
Internal collection ID.
Collection name.
Collection description.
Whether the collection is visible to other users.
Whether the collection is marked as a favourite.
ID of the owning user.
IDs of ROMs in this collection (hidden ROMs are excluded for the caller).
Number of visible ROMs in this collection.
Path to the small cover image.
Path to the large cover image.
ISO 8601 creation timestamp.
ISO 8601 last-updated timestamp.
GET /api/collections/identifiers
Retrieve only the IDs of collections the current user owns or that are public. Required scope:collections.read
[1, 2, 5, ...]
POST /api/collections
Create a new collection. Acceptsmultipart/form-data to allow cover artwork upload in the same request.
Required scope: collections.write
Collection name (must be unique for the current user).
Optional description text.
Whether the collection should be visible to other users.
Whether to mark this collection as a favourite.
Remote URL to fetch and store as cover artwork.
Cover image file to upload (JPEG/PNG/WebP).
200 OK — the newly created CollectionSchema object.
GET /api/collections/
Retrieve a single collection by ID. Returns403 if the collection is private and owned by another user.
Required scope: collections.read
Collection internal ID.
PUT /api/collections/
Replace a collection’s ROM list and update its metadata. The fullrom_ids list is required and replaces the current list entirely.
Required scope: collections.write
Only the collection’s owner can update it.
Collection internal ID.
JSON array string of ROM IDs that should be in the collection (e.g.
"[1, 2, 3]").Updated collection name.
Updated description.
Update visibility.
Remote URL for a new cover image.
New cover image file.
Set to
true to remove the existing cover.POST /api/collections//roms
Atomically add ROMs to a collection without replacing the full list. Required scope:collections.write
Collection internal ID.
List of ROM IDs to add.
DELETE /api/collections//roms
Atomically remove ROMs from a collection without replacing the full list. Required scope:collections.write
Collection internal ID.
List of ROM IDs to remove.
DELETE /api/collections/
Delete a collection. Only the collection’s owner can delete it. Required scope:collections.write
Collection internal ID.
204 No Content.
Smart Collections
Smart collections are filter-driven: RomM evaluates theirfilter_criteria against the library and keeps the ROM list up to date automatically.
POST /api/collections/smart
Create a new smart collection. Required scope:collections.write
Collection name (unique per user).
Optional description.
Whether the collection is visible to other users.
JSON string of filter criteria (same filter keys as
GET /api/roms). Example: '{"genres": ["RPG"], "genres_logic": "any"}'GET /api/collections/smart
Retrieve all smart collections for the current user, plus public ones from other users. Required scope:collections.read
ISO 8601 datetime filter.
GET /api/collections/smart/identifiers
Retrieve smart collection IDs. Required scope:collections.read
GET /api/collections/smart/
Retrieve a single smart collection by ID. Required scope:collections.read
PUT /api/collections/smart/
Update a smart collection’s name, description, visibility, or filter criteria. Required scope:collections.write
DELETE /api/collections/smart/
Delete a smart collection. Required scope:collections.write
Virtual Collections
Virtual collections are system-generated groupings (e.g. by genre, franchise, or company) and are read-only.GET /api/collections/virtual
Required scope:collections.read
The virtual collection type to retrieve (e.g.
genre, franchise, company).Maximum number of virtual collections to return.
GET /api/collections/virtual/identifiers
Retrieve virtual collection IDs for a given type. Required scope:collections.read
GET /api/collections/virtual/
Retrieve a single virtual collection by its generated string ID. Required scope:collections.read