Skip to content

Latest commit

 

History

History
104 lines (63 loc) · 2.47 KB

File metadata and controls

104 lines (63 loc) · 2.47 KB

Aegis Web API

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.


Endpoints

GET /wavify

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.


GET /pngify

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 from
  • maxscale (optional, default 512) - max width or height in pixels (1 to 16384)

Returns the PNG file as a download.


GET /rbxm

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) - a rbxassetid:// URL or an http(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.


GET /gifsplit

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 from
  • maxscale (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."
}

GET /gifsplit/file/:token/:type

Retrieves a file generated by /gifsplit. :type is either gif or wav.

Each file can only be downloaded once.


GET /status

Returns basic server info.

{
  "system": "hostname",
  "commit": "abc1234",
  "uptime_seconds": 3600
}

GET /health

Returns { "ok": true } if the server is running.


Notes

  • 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.