A modular, self-hosted API proxy built with Next.js.
Fetch data from Discord, GitHub, Twitch, Steam and NPM — all from one place.
| Discord | User profiles, avatars, banners, presence, guilds, invites |
| GitHub | User profiles, repositories |
| NPM | Package info, version, download stats |
| Twitch | User profiles, live status, stream info |
| Steam | Player profiles, status, recently played games |
git clone https://github.com/30jannik06/stack-api.git
cd stack-api
npm installcp .env.example .env.local| Variable | Required | Where to get it |
|---|---|---|
DISCORD_BOT_TOKEN |
✅ | discord.com/developers |
GITHUB_TOKEN |
github.com/settings/tokens | |
TWITCH_CLIENT_ID |
✅ Twitch | dev.twitch.tv/console |
TWITCH_CLIENT_SECRET |
✅ Twitch | dev.twitch.tv/console |
STEAM_API_KEY |
✅ Steam | steamcommunity.com/dev/apikey |
GITHUB_TOKENis optional but increases the rate limit from 60 → 5000 requests/hour.
npm run devnpx vercelAdd your environment variables in Vercel Dashboard → Project → Settings → Environment Variables.
GET /api/discord/user/:id
GET /api/discord/avatar/:id?size=256
GET /api/discord/banner/:id
GET /api/discord/banner/:id/redirect?size=600
GET /api/discord/presence/:id
GET /api/discord/profile/:id
GET /api/discord/guild/:id
GET /api/discord/invite/:code
/presencerequires the user to join discord.gg/lanyard
/guild/:idrequires your bot to be a member of that server
GET /api/github/user/:username
GET /api/github/repo/:owner/:repo
GET /api/npm/:package
GET /api/twitch/user/:username
GET /api/steam/user/:steamid
stack-api works on any platform that supports Next.js:
| Platform | Notes |
|---|---|
| Vercel | Recommended – zero config |
| Railway | Great for bots + API together |
| Fly.io | Free tier available |
| VPS | npm run build && npm start |
See CHANGELOG.md for all releases.
MIT © 30jannik06