Gateway API kompatibel OpenAI untuk generate gambar dan video menggunakan Grok, dengan cache media lokal, gallery modern, serta manajemen multi-SSO.
- API OpenAI-style:
POST /v1/images/generationsPOST /v1/videos/generationsPOST /v1/chat/completions
- Generate image via WebSocket Grok (streaming progress didukung)
- Generate video via reverse flow (
media post+app-chat stream) - Auto download hasil media ke cache lokal:
- Image ke
data/images - Video ke
data/videos
- Image ke
- Gallery modern:
GET /gallery(image)GET /video-gallery(video)
- Delete media per item langsung dari gallery (image/video)
- Multi-SSO rotation strategy + retry/fallback
- Dukungan proxy HTTP/HTTPS/SOCKS5
- Dukungan Redis (opsional) untuk status rotasi SSO
- Telegram bot modular (
bot/) dengan UI tombol untuk image/video/admin/SSO- Generate image/video via tombol
- Kirim hasil media langsung ke Telegram (bukan link, fallback ke link jika perlu)
- Admin media manager (list + delete image/video cache)
- Admin Panel bisa langsung
Add SSO Key - Flow
Add SSO Keypunya tombolCancel - Limit harian user biasa + menu
My Limit(admin tetap unlimited)
- Python 3.10+
- Dependensi di
requirements.txt
pip install -r requirements.txtAplikasi akan membuat file .env otomatis jika belum ada.
- Isi
key.txt(1 token SSO per baris) - Isi
.env:
HOST=0.0.0.0
PORT=9563
DEBUG=false
API_KEY=your-api-key
CF_CLEARANCE=your-cf-clearanceAPI_KEY: Bearer token untuk akses API gatewayCF_CLEARANCE: membantu flow reverse/age verificationPROXY_URL/HTTP_PROXY/HTTPS_PROXY: proxy opsionalSSO_ROTATION_STRATEGY:round_robin|least_used|least_recent|weighted|hybridSSO_DAILY_LIMIT: limit harian penggunaan keyTELEGRAM_BOT_TOKEN: token bot TelegramBOT_ADMIN_IDS: daftar user id admin bot (contoh:12345,67890)GATEWAY_BASE_URL: base URL API gateway untuk bot (defaulthttp://127.0.0.1:9563)GATEWAY_API_KEY: API key gateway yang dipakai botUSER_DAILY_IMAGE_LIMIT: limit harian generate image untuk user biasa (default5)USER_DAILY_VIDEO_LIMIT: limit harian generate video untuk user biasa (default1)
Alias yang juga didukung:
- Token bot:
BOT_TOKEN,TG_BOT_TOKEN - Admin IDs:
ADMIN_ID,ADMIN_IDS,TELEGRAM_ADMIN_IDS - API key bot: jika
GATEWAY_API_KEYkosong, nilaiAPI_KEYtetap terbaca lewat alias
python main.py- Buat dan aktifkan virtual environment:
python -m venv .venv
.\.venv\Scripts\Activate.ps1- Install dependensi:
pip install -r requirements.txt- Jalankan gateway:
python main.py- (Opsional, terminal lain) Jalankan bot:
python -m bot.main- Buat dan aktifkan virtual environment:
python3 -m venv .venv
source .venv/bin/activate- Install dependensi:
pip install -r requirements.txt- Jalankan gateway:
python main.py- (Opsional, terminal lain) Jalankan bot:
python -m bot.mainPastikan .env sudah berisi:
TELEGRAM_BOT_TOKEN=isi_dari_botfather
BOT_ADMIN_IDS=123456789
GATEWAY_BASE_URL=http://127.0.0.1:9563
GATEWAY_API_KEY=your-api-key
USER_DAILY_IMAGE_LIMIT=5
USER_DAILY_VIDEO_LIMIT=1Jalankan bot:
python -m bot.mainRekomendasi production:
- Isi
BOT_ADMIN_IDSagar hanya admin yang bisa akses panel admin/SSO. - Gunakan
GATEWAY_API_KEYyang sama denganAPI_KEYgateway. - Jalankan bot sebagai service terpisah (systemd/pm2/supervisor) agar auto-restart saat crash.
Fitur bot terbaru:
- Menu
My Limituntuk cek sisa limit harian user. - Admin Panel mendukung
Add SSO Keylangsung dari menu admin. - Saat flow input key SSO, tersedia tombol
Canceluntuk kembali ke menu sebelumnya.
Akses:
- Docs (Swagger):
http://127.0.0.1:9563/docs - ReDoc:
http://127.0.0.1:9563/redoc - Health:
http://127.0.0.1:9563/health - Image Gallery:
http://127.0.0.1:9563/gallery - Video Gallery:
http://127.0.0.1:9563/video-gallery
Semua endpoint /v1/* menggunakan Bearer auth saat API_KEY di-set.
Endpoint /admin/* juga menggunakan Bearer auth saat API_KEY di-set.
Header:
Authorization: Bearer <API_KEY>Di Swagger, gunakan tombol Authorize (ikon gembok), lalu isi token tanpa kata Bearer.
curl -X POST http://127.0.0.1:9563/v1/images/generations \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a cinematic portrait of a cat",
"n": 1,
"aspect_ratio": "9:16"
}'curl -X POST http://127.0.0.1:9563/v1/videos/generations \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"prompt": "vertical cyberpunk alley, smooth camera movement",
"aspect_ratio": "9:16",
"duration_seconds": 6,
"resolution": "480p",
"preset": "normal"
}'curl -X POST http://127.0.0.1:9563/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine",
"messages": [{"role": "user", "content": "gambar seekor kucing imut"}],
"stream": true
}'GET /: informasi serviceGET /health: health checkGET /gallery: gallery imageGET /video-gallery: gallery videoGET /images/{filename}: static imageGET /videos/{filename}: static videoPOST /v1/images/generations: generate imagePOST /v1/videos/generations: generate videoPOST /v1/chat/completions: chat-compatible image generationGET /admin/status: status service/adminGET /admin/images/list: list image cacheGET /admin/videos/list: list video cacheDELETE /admin/media/image/{filename}: hapus image by fileDELETE /admin/media/video/{filename}: hapus video by file
data/images: file image cachedata/videos: file video cache
- Jika video/image reverse flow kena 403, refresh
CF_CLEARANCEdari browser. - Jika menggunakan reverse proxy/domain, set
BASE_URLagar URL media sesuai domain publik. - Untuk deployment multi-instance, aktifkan Redis agar status rotasi token konsisten.
Gunakan sesuai kebijakan layanan upstream dan akun milik sendiri.