🎨 Emojis
Custom emoji, sticker, and GIF specifications for Fluxer.
📏 Emoji Specs
| Property | Value |
|---|---|
| Max Size | 256 KB |
| Formats | PNG, APNG, GIF, Lottie |
| Free Slots | 50 per guild |
| Premium Slots | 75 per guild |
🖼️ Sticker Specs
| Property | Free | Premium |
|---|---|---|
| Max Size | 512 KB | 1 MB |
| Formats | PNG, APNG, GIF, Lottie, WebP | Same |
| Slots | 5 per guild | 8 per guild |
🔌 API Endpoints
GET /api/v1/guilds/{guild_id}/emojis # List all
POST /api/v1/guilds/{guild_id}/emojis # Upload new
PATCH /api/v1/guilds/{guild_id}/emojis/{emoji_id} # Update name/roles
DELETE /api/v1/guilds/{guild_id}/emojis/{emoji_id} # Remove
🏗️ Architecture
-
Static Emojis
- Served by
static-proxy, running digest-pinnedfluxer-staticbuild2026.918.165027 - Caddy route:
/emoji/*→static-proxy:8080 - Built-in packs bundled in image
- Served by
-
Custom Uploads
- Handled by:
media-proxyservice - Storage: SeaweedFS
fluxer-uploadsbucket - CDN:
https://flxr.loca.zone/media - Processing: resize, format validation, animated frame check
- Handled by:
-
GIF Integrations
- Service:
gifs+gifs-shard(router/shard pattern) - Image: digest-pinned
fluxer-gifsbuild2026.913.154309 - Role: search/proxy external GIF providers
- Media endpoint:
https://flxr.loca.zone/media
- Service:
🧰 Creator Tools
-
Recommended Workflow
- PNG/APNG: export at 128x128, optimize with
pngquantoroptipng - GIF: keep under 256KB, max 3s loop, 50fps cap
- Lottie: export from After Effects via Bodymovin, validate with
lottie-web - WebP (stickers only): use
cwebpwith-q 80for quality/size balance
- PNG/APNG: export at 128x128, optimize with
-
Quick Compression
# PNG optimization pngquant --quality=65-80 --speed 1 emoji.png # GIF resize + optimize gifsicle --resize 128x128 --optimize=3 input.gif > output.gif # WebP conversion cwebp -q 80 -resize 320 320 sticker.png -o sticker.webp
⚠️ Limits
- Animated emojis: same size limits, frame count uncapped but size-gated
- Upload validation: API checks dimensions, file size, MIME type server-side
- Rate limit: emoji CRUD operations subject to API rate limiting
- Nitro/Premium: higher slots + larger sticker sizes per guild boost level