Files
image2api/backend
chiyiandClaude Opus 4.8 17cd289dfd feat: add Grok (grok.com) video provider; runway nano-banana image; unify runway/grok pool policy
- grok provider: imagine text/image-to-video (media.post.create → conversations/new),
  GetGrokCreditsConfig credit query (remaining = 100 - used) + weekly reset, spoofed
  x-statsig-id (no Cloudflare clearance needed), /api/auth/session email lookup,
  6 reference images, 10 concurrent jobs/account, no token refresh (dead = dead)
- runway: nano-banana-2 image flow (Nano Banana 2); drop pre-deduct + post-success
  reconcile; out-of-credits/403 → dead (no revive); 10-ratio support
- imagine: drop post-success credit reconcile (consistent with krea)
- account gate: per-account N-concurrency (grok=10, others=1)
- admin: provider health lists all 7 providers; frontend import auto-detects Grok SSO
- docs: README (CN/EN) updated to 7 providers + Grok

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 04:01:06 +08:00
..

Vivid AI Backend

Go backend for vivid-ai, using:

  • Gin
  • GORM
  • PostgreSQL
  • Redis

Current scope

This is an in-progress rewrite. The current skeleton already includes:

  • app bootstrap
  • PostgreSQL and Redis initialization
  • GORM auto-migrations
  • session storage in Redis
  • image access control for /images/:user/:name
  • public site endpoint: /admin/api/site
  • public showcase endpoint: /admin/api/showcase
  • session-based auth endpoint: /admin/api/auth/me

Environment

Set these before running:

$env:POSTGRES_DSN="host=127.0.0.1 user=postgres password=postgres dbname=vivid_ai port=5432 sslmode=disable TimeZone=Asia/Shanghai"
$env:REDIS_ADDR="127.0.0.1:6379"
$env:HTTP_ADDR=":6061"

Optional:

$env:APP_ENV="development"
$env:APP_TITLE="Vivid AI"
$env:SESSION_COOKIE_NAME="vivid_session"
$env:CORS_ORIGINS="http://localhost:5173,http://127.0.0.1:5173"

Run

go run ./cmd/api

Notes

  • Generated media defaults to ../../ai-gateway/data/generated relative to the backend working directory.
  • Private images require either:
    • session cookie
    • bearer session token
    • bearer API key
  • Showcase images are public.