A utility API for Aegis and related projects. Handles media conversion, Roblox model decoding, and more.
All endpoints are rate limited to 1 request per second per IP.
Downloads audio or video from a URL and converts it to a WAV file.
Supports direct URLs and platforms handled by yt-dlp (YouTube, TikTok, etc.).
Query params:
url(required) - the URL to download from
Returns the WAV file as a download.
Downloads an image from a URL and converts it to a PNG, scaled down to fit within a max size.
Query params:
url(required) - the URL to download frommaxscale(optional, default 512) - max width or height in pixels (1 to 16384)
Returns the PNG file as a download.
Downloads and decodes a Roblox model file (.rbxm or .rbxmx) into a JSON instance tree.
Accepts either a Roblox asset ID or a direct URL.
Query params:
url(required) - arbxassetid://URL or anhttp(s)://URL pointing to an rbxm/rbxmx file
Returns the decoded model as JSON. Script sources over 8 MB or detected as spam are replaced with a warn() stub.
Downloads a video and converts it into both a GIF and a WAV file simultaneously. Useful for getting a preview image and audio from the same clip.
Trims to the first 60 seconds. Files expire after 5 minutes or are deleted immediately after being downloaded.
Query params:
url(required) - the URL to download frommaxscale(optional, default 512) - max GIF width or height in pixels (1 to 16384)
Returns JSON with download URLs for the GIF and WAV:
{
"gif": "https://.../gifsplit/file/<token>/gif",
"wav": "https://.../gifsplit/file/<token>/wav",
"expires_at": "2025-01-01T00:00:00.000Z",
"note": "Files are deleted immediately after being downloaded, or after 5 minutes - whichever comes first."
}Retrieves a file generated by /gifsplit. :type is either gif or wav.
Each file can only be downloaded once.
Returns basic server info.
{
"system": "hostname",
"commit": "abc1234",
"uptime_seconds": 3600
}Returns { "ok": true } if the server is running.
- Private/local IP addresses are blocked from being fetched.
- Downloads are capped at 50 MB for direct URLs, 100 MB for yt-dlp.
- The server automatically pulls updates from git and restarts every minute if a new commit is detected.