RomM exposes read-only feed endpoints designed for compatible game frontend clients. These endpoints translate your library into formats that clients like Tinfoil (Nintendo Switch homebrew), WebRcade (browser-based emulator), PKGi (PlayStation homebrew), FPKGi (PS4/PS5 homebrew), and Kekatsu DS can consume directly.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.
By default, feed endpoints require authentication with the
roms.read scope. Set DISABLE_DOWNLOAD_ENDPOINT_AUTH=true in your environment to allow unauthenticated access — useful when clients cannot send an Authorization header.GET /api/feeds/webrcade
Generate a WebRcade-compatible feed from your library. Only platforms whose slug appears in WebRcade’s supported platform list are included. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response format: application/json — WebRcade feed schema
http://<your-romm>:8080/api/feeds/webrcade as a custom feed URL. See the WebRcade feed format docs for client setup.
GET /api/feeds/tinfoil
Generate a Tinfoil custom index feed for Nintendo Switch ROMs. Returns URLs for.xci, .nsp, .nsz, .xcz, and .nro files, plus a TitleDB block derived from filenames.
Required scope: None (Tinfoil uses its own auth headers; this endpoint is always open to allow Tinfoil to manage credentials)
Platform slug to use for the Nintendo Switch library. Defaults to
switch.application/json — Tinfoil custom index schema
http://<your-romm>:8080/api/feeds/tinfoil as a custom shop URL in Tinfoil. See the Tinfoil custom index docs for setup.
GET /api/feeds/pkgi/ps3/
Generate a PKGi PS3-compatible database file for PlayStation 3 content. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response format: text/plain — comma-separated PKGi database
Content category to include. Valid values:
game, dlc, demo, update, patch.contentid, type, name, description, rap, url, size, checksum
Configure PKGi PS3 with the URL to this endpoint as your database source.
GET /api/feeds/pkgi/psvita/
Generate a PKGi PS Vita-compatible database file. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Content category:
game, dlc, demo, update, patch.contentid, flags, name, name2, zrif, url, size, checksum
GET /api/feeds/pkgi/psp/
Generate a PKGi PSP-compatible database file for PlayStation Portable content. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Content category:
game, dlc, demo, update, patch.contentid, type, name, description, rap, url, size, checksum
GET /api/feeds/pkgj/psp/games
Generate a PKGj-format tab-separated games list for PSP. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response format: text/plain — tab-separated with header row
Title ID, Region, Type, Name, PKG direct link, Content ID, Last Modification Date, RAP, Download .RAP file, File Size, SHA256
GET /api/feeds/pkgj/psp/dlc
Generate a PKGj tab-separated DLC list for PSP. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response columns: Title ID, Region, Name, PKG direct link, Content ID, Last Modification Date, RAP, Download .RAP file, File Size, SHA256
GET /api/feeds/pkgj/psvita/games
Generate a PKGj-format games list for PS Vita. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response columns: Title ID, Region, Name, PKG direct link, zRIF, Content ID, Last Modification Date, Original Name, File Size, SHA256, Required FW, App Version
GET /api/feeds/pkgj/psvita/dlc
Generate a PKGj DLC list for PS Vita. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response columns: Title ID, Region, Name, PKG direct link, zRIF, Content ID, Last Modification Date, File Size, SHA256
GET /api/feeds/pkgj/psx/games
Generate a PKGj-format games list for PlayStation (PSX). Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Response columns: Title ID, Region, Name, PKG direct link, Content ID, Last Modification Date, Original Name, File Size, SHA256
GET /api/feeds/fpkgi/
Generate an FPKGi-compatible JSON feed for PS4 or PS5 content. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Platform slug for the target platform (e.g.
ps4, ps5).application/json
GET /api/feeds/kekatsu/
Generate a Kekatsu DS-compatible tab-separated database for Nintendo DS, GBA, or other portable platforms. Required scope:roms.read (or unauthenticated if DISABLE_DOWNLOAD_ENDPOINT_AUTH=true)
Platform slug (e.g.
nds, gba).1), second line is the tab delimiter character. Subsequent lines contain ROM entries.
Entry columns: title, platform, region, version, author, download_url, filename, size, box_art_url
Configure Kekatsu DS with the URL as a database source.
Authentication Note
WhenDISABLE_DOWNLOAD_ENDPOINT_AUTH=true is set in your RomM environment, all feed endpoints accept unauthenticated requests. This is the recommended configuration when frontend clients (Tinfoil, PKGi, Kekatsu) cannot pass authentication headers.