RobloxAPID, also known as roapid, is a lightweight Go daemon that bridges the Roblox API to Fandom (and other MediaWiki) wikis.
As the name suggests, it continuously runs in the background, monitoring updates from Roblox's Open Cloud and Legacy APIs, then automatically mirrors the latest data to your wiki. This lets your beloved readers see up-to-date Roblox information across both FandomDesktop and FandomMobile skins.
RobloxAPID requires an account with bot userrights, meaning you will need to have the flag enabled.
Tip
Don't want to self-host? RobloxAPID is also available as a free opt-in service for reputable Fandom wikis. Simply contact t7ru on Discord to request access!
| Wikis using RobloxAPID | |||
|---|---|---|---|
|
|
|
|
| ALTER EGO Wiki | Tower Defense Simulator Wiki | REx: Reincarnated Wiki | The Nill Zone |
- Always watching: Runs quietly, tracking Roblox APIs and mirroring updates to your wiki as soon as they change.
- Dazzlingly quick: Stores Roblox responses directly on the wiki, so you can pull data without delay.
- Set and forget: Once configured, it keeps refreshing data and clearing caches on its own cadence.
- Simple yet flexible: Ships with
Module:Roapid, letting editors pick whatever data they want through{{#invoke:roapid|...}}. - Compatible on all: Can be used on virtually every MediaWiki farm with no hassles and hiccups.
- Zero JavaScript: Works on FandomMobile and isn't affected by any JavaScript restrictions, letting the daemon be updated the moment an update is out.
- Lightweight and open: Think you can do better? The code is open for you to tinker with!
...and of course, you don't need to host it at all if you choose to opt-in with us!
-
Open Cloud:
- Users
- Groups
- Universes
- Places
-
Legacy:
- Badges
- Games
- Favorites
- Votes
-
Internal:
- Virtual Events
-
Prerequisites:
- Go 1.22.3 or later.
- A server, obviously.
-
Clone the Repository:
git clone https://github.com/paradoxum-wikis/RobloxAPID.git cd RobloxAPID -
Build:
go build -o robloxapid . -
Generate a Bot Password:
- Go to your wiki's Special:BotPasswords page.
- Create a new bot password and enable these permissions (and any other you may need):
High-volume (bot) accessEdit existing pagesEdit the MediaWiki namespace and sitewide/user JSONCreate, edit, and move pages
Main configuration file:
Note
config.json supports environment variables, any ${VAR} tokens in the file will be replaced with values from the process environment before the config is parsed. This is particularly useful for keeping sensitive things out of the file.
.env files are not loaded automatically, you'll have to set them via your shell, systemd, etc.
{
"server": {
"categoryCheckInterval": "1m",
"dataRefreshInterval": "30m"
},
"wiki": {
"apiUrl": "https://your-wiki.com/api.php",
"username": "YourWikiUsername@YourBotName",
"password": "YourBotPasswordHere",
"namespace": "Module"
},
"dynamicEndpoints": {
"categoryPrefix": "robloxapid-queue",
"apiMap": {
"badges": "https://badges.roblox.com/v1/badges/%s",
"users": "https://apis.roblox.com/cloud/v2/users/%s",
"groups": "https://apis.roblox.com/cloud/v2/groups/%s",
"universes": "https://apis.roblox.com/cloud/v2/universes/%s",
"places": "https://apis.roblox.com/cloud/v2/%s",
"games": "https://games.roblox.com/v1/games?universeIds=%s",
"favorites": "https://games.roblox.com/v1/games/%s/favorites/count",
"votes": "https://games.roblox.com/v1/games/%s/votes",
"virtual-events": "https://apis.roblox.com/virtual-events/v2/universes/%s/experience-events"
},
"refreshIntervals": {
"badges": "30m",
"about": "168h",
"users": "1h",
"groups": "1h",
"universes": "1h",
"places": "1h",
"games": "1h",
"favorites": "2h",
"votes": "2h",
"virtual-events": "3h"
}
},
"openCloud": {
"apiKey": "${OPEN_CLOUD_API_KEY}"
},
"roblox": {
"cookie": "${ROBLOX_COOKIE}"
}
}categoryCheckInterval: How often to check for new categories (this is how it knows what to fetch).dataRefreshInterval: Default refresh interval for endpoints.apiMap: Maps endpoint types to API URLs (use%sfor ID placeholder).refreshIntervals: Endpoint refresh intervals (overrides default).openCloud.apiKey: Required key for Roblox Open Cloud endpoints (users/groups/universes/places).roblox.cookie: Optional.ROBLOSECURITYcookie for all endpoints. It is generally recommended to provide the token as it lets one get higher badge/game rate limits.
Static about information, if you're hosting publicly, do not change it:
{
"description": "A daemon that bridges the Roblox API to Fandom wikis.",
"license": "GNU Affero General Public License v3.0",
"name": "RobloxAPID",
"source": "https://github.com/paradoxum-wikis/RobloxAPID"
}Static usage guides for the API endpoints. Each file documents relevant information such as usage, description, fields, and examples.
They all sync to Module:roapid/<endpoint>.json so editors can surface instructions directly on the wiki.
-
Run Locally:
./robloxapid
The daemon will start and vomit out the logs for you to debug and whatnot.
-
On the Wiki:
- The Lua module
Module:Roapidis automatically set up. - Use invokes to access data:
{{#invoke:roapid|badges|123456|description}}: Gets the description field for badge ID 123456.
- When you're accessing an ID that isn't mirrored yet, wait for the daemon to fetch it and it will be up in less than a minute.
- The page will have missing data for a while, but that is intentional.
- We also recommend making a template wrapper to abstract the invokes.
- The Lua module
