RomM’s backend is a FastAPI application that exposes a full REST API for programmatic access to your game library. Every operation available in the web UI — scanning platforms, managing ROMs, uploading saves, running background tasks — is accessible through these endpoints, making RomM scriptable and integrable with external tools.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.
Base URL
The default base URL depends on how you mapped ports in yourdocker-compose.yml:
http://<your-romm-host>.
All API endpoints are prefixed with /api. For example, the platforms list endpoint is /api/platforms.
Interactive API Docs
FastAPI auto-generates two documentation UIs from the OpenAPI schema:| UI | URL | Description |
|---|---|---|
| Swagger UI | /docs | Try endpoints directly from the browser |
| ReDoc | /redoc | Clean, read-only reference layout |
Authentication
The RomM API supports four authentication methods. OAuth2 bearer tokens are recommended for programmatic access and integrations, while session cookies power the web UI. See the Authentication guide for full details including token scopes, client token creation, and the OAuth2 password flow.Pagination
Most list endpoints (GET /api/roms, GET /api/platforms, etc.) use limit/offset pagination with the following query parameters:
Maximum number of items to return per page. Maximum is 10 000 for ROMs.
Zero-based offset into the result set.
char_index, rom_id_index, and filter_values fields used by the web UI’s virtual scroll and filter sidebar.
Error Format
FastAPI returns errors as JSON objects with adetail key:
422 Unprocessable Entity with an array of error objects:
Rate Limiting
RomM has no built-in rate limiting. If you need rate limiting, configure it at the reverse proxy level (nginx, Traefik, Caddy, etc.).Content Types
| Use case | Content-Type |
|---|---|
| Most requests and responses | application/json |
| File uploads (saves, states, artwork, ROMs) | multipart/form-data |
| Feed endpoints (PKGi, PKGj, Kekatsu) | text/plain |
WebSocket Endpoints
Two WebSocket endpoints are available for real-time communication:| Endpoint | Purpose |
|---|---|
/ws | Scan progress updates and server log streaming |
/netplay | Netplay room coordination between browser clients |
Endpoint Reference
Authentication
OAuth2 password flow, token refresh, client tokens, and HTTP Basic auth
Platforms
List, create, update, and delete gaming platforms
ROMs
Browse, search, update metadata, upload, and download ROMs
Collections
Create and manage curated and smart ROM collections
Users
Manage user accounts, roles, and invite links
Saves & States
Upload, download, and manage save files and save states
Tasks
Trigger library scans, metadata updates, and cleanup jobs
Feeds
Tinfoil, WebRcade, PKGi, and other frontend client feeds