Note
本项目基于 chenyme/grok2api 二次开发,在原项目基础上新增了管理后台的多项增强功能。
原项目仅供学习与研究,使用者必须在遵循 Grok 的 使用条款 以及 法律法规 的情况下使用,不得用于非法用途。
English | 中文
基于 FastAPI 重构的 Grok2API,全面适配最新 Web 调用格式,支持流/非流式对话、图像生成/编辑、视频生成、深度思考,号池并发与自动负载均衡一体化。
按功能上线时间排列,最新的在最前面。
OAuth 第三方登录:
- 支持 LINUX DO Connect OAuth2 登录,用户可通过 L 站账号访问 Playground 功能页面
- 后台配置管理新增 OAuth 登录 和 积分系统 两个配置区块,含中文说明
积分系统(仅对 OAuth 登录用户生效,Public Key 用户不受限):
- 新用户首次登录自动赠送初始积分(可配置)
- 每日签到获得积分奖励(可配置)
- 图片生成、图片编辑、视频生成分别独立计费,按实际返回数量扣费
- 积分不足时自动拦截生成请求,前端实时显示余额变动
积分配置项([credits]):
| 配置项 | 说明 | 默认值 |
|---|---|---|
enabled |
是否启用积分系统 | true |
initial_credits |
新用户初始积分 | 1000 |
daily_checkin_credits |
每日签到积分 | 1000 |
image_cost |
图片生成消耗(按张) | 5 |
image_edit_cost |
图片编辑消耗(按张) | 50 |
video_cost |
视频生成消耗(按个) | 50 |
- 新增 实时进度条:视频生成过程中从 SSE 流提取进度百分比,单视频模式更新全局进度条,瀑布流模式更新对应卡片进度条
- 新增 审核拒绝检测:视频内容被审核拦截时显示具体拒绝原因,而非通用的"未获取到视频内容"
- 修复 积分扣费时机:视频生成积分仅在成功生成后扣除,生成失败或被审核拦截不扣费
- 支持 MySQL SSL 连接(TiDB Cloud 等云数据库)
token_id改用 SHA-256 哈希主键,兼容不同存储后端- 首次启动自动检测并迁移主键结构,无需手动操作
- 新增 「刷新全部」 按钮:一键刷新所有 Token 状态,无需手动全选
- 新增 类型标识:Token 列表以彩色标签区分 Basic(蓝色)和 Super(琥珀色)SSO 类型
- 新增 类型筛选:Tab 栏支持按 Basic / Super 筛选,快速定位不同池的 Token
- 修复非流式请求
stream默认值,提升 OpenAI SDK 兼容性
- 移除
SITE_MODE环境变量,改为配置项app.public_enabled(后台一键切换,无需重启) - 新增
public_key配置:Public 模式下的独立认证密钥,与api_key分离 - 三层认证架构:
verify_app_key(管理后台)→verify_api_key_if_private(API)→verify_public_key(公共页面,可选) - 管理后台右上角新增 Playground 快捷导航按钮
- Imagine 瀑布流性能优化 + 视频在线预览增强
- 新增 批量下载:勾选多个本地图片/视频文件后,点击底部工具栏「下载」按钮,服务端自动打包为 ZIP(
ZIP_STORED不压缩)一次性下载;仅选 1 个文件时直接下载,不打包 - 新增 单文件下载:每行文件操作列新增下载图标,一键下载单个文件
- 新增 视频在线预览:缓存管理页面内嵌视频播放器,点击查看直接播放,无需跳转新页面
- 新增 图片在线预览:浏览器打开文件链接可直接显示图片,不再触发下载
- 新增 自动过滤:可配置的图片过滤阈值(从服务端配置加载)
- 新增 NSFW 参数传递:客户端可控制 NSFW 开关
- 新增 反向新增:新图片从顶部插入
- 图片状态标签实时显示(生成中/完成/失败)
- 支持 HTTP URL 和 Base64 两种图片格式
- 安全加固 + 修复 OpenAI SDK 非流式请求返回 SSE 的兼容性问题
- 一键全部 NSFW + 移除异步端点 1000 条截断限制
- 新增
SITE_MODE环境变量,支持公开站与私有站模式分离(后续在 02-21 重构为app.public_enabled配置项)
Imagine 编辑模式:
在 Playground 功能区(/imagine)的 Imagine 页面新增 图片编辑 模式。
| 模式 | 说明 |
|---|---|
| 生成模式 | 通过提示词从零生成图片(原有功能) |
| 编辑模式 | 上传参考图片 + 提示词,基于图片进行 AI 编辑 |
- 生成/编辑模式一键切换
- 支持拖拽、点击上传或从剪贴板粘贴参考图片(最大 50MB)
- 图片预览与移除
- 调用
/v1/images/edits接口,模型grok-imagine-1.0-edit
Video 图生视频:
- 上传参考图片(支持拖拽、点击上传或从剪贴板粘贴),基于图片内容生成视频(单视频模式 & 瀑布流模式均支持)
在 Playground 功能区(/video)新增 Video 视频生成 页面,提供可视化的视频生成操作界面。
双模式支持:
| 模式 | 说明 |
|---|---|
| 单视频模式 | 单次生成一个视频,适合精细调参和预览 |
| 瀑布流模式 | 批量连续生成,支持并发控制(1-3 路),自动滚动、自动下载 |
功能特性:
- 提示词输入,支持
Ctrl+Enter快捷生成 - 可调节参数面板:
- 宽高比:
16:9/9:16/1:1/2:3/3:2 - 视频时长:
6s/10s/15s - 分辨率:
480p/720p - 风格预设:
Custom/Normal/Fun/Spicy
- 宽高比:
- 流式/非流式输出切换
- 实时生成状态与参数同步显示
- 视频播放器预览(支持 URL 和 HTML 两种返回格式)
- 生成历史记录(本地持久化,支持点击回放和单条删除)
- 瀑布流专属功能:
- 并发数控制(1/2/3 路同时生成)
- 自动滚动到最新视频
- 自动下载已完成视频
- 批量选择、下载、删除
- Lightbox 大图预览(支持键盘左右切换)
- 优雅停止:点击停止后等待进行中的视频完成,不会中断生成
在 Playground 功能区(/chat)新增 Chat 聊天 页面,提供可视化的对话交互界面。
- 支持流式/非流式输出
- 对话历史记录
- 多模型切换
以下架构调整来自上游 chenyme/grok2api,已同步合并至本仓库。
相较于旧版本,v1.5.0 进行了以下架构调整:
- API 路由拆分:管理 API 从
admin.py单文件(1900+ 行)拆分为admin_api/config.py、admin_api/token.py、admin_api/cache.py独立模块 - 公共 API 独立:新增
public_api/模块,包含imagine.py、video.py、voice.py三个独立端点 - 页面路由分离:新增
app/api/pages/模块,将 HTML 页面服务从 API 路由中分离(admin.py+public.py)
# 旧结构(扁平)
app/static/imagine/imagine.{html,js,css}
app/static/video/video.{html,js,css}
# 新结构(分层)
app/static/public/pages/{chat,imagine,video,voice,login}.html
app/static/public/js/{chat,imagine,video}.js
app/static/public/css/{chat,imagine,video}.css
app/static/admin/pages/{login,token,config,cache}.html
app/static/admin/js/{token,cache}.js
app/static/admin/css/{token,cache}.css
app/static/common/{html,js,css,img}/ # 公共资源
app/services/grok/services/video.py— 视频生成服务app/services/grok/services/voice.py— LiveKit 语音服务app/services/reverse/video_upscale.py— 视频升级服务
git clone https://github.com/WangXingFan/grok2api.git
cd grok2api
docker compose up -d后续更新镜像:
docker compose pull && docker compose up -d如需从源码构建:
docker compose up -d --build
请务必设置
DATA_DIR=/tmp/data,并关闭文件日志LOG_FILE_ENABLED=false。持久化请使用 MySQL / Redis / PostgreSQL,在 Vercel 环境变量中设置:
SERVER_STORAGE_TYPE(mysql/redis/pgsql)与SERVER_STORAGE_URL。
Render 免费实例 15 分钟无访问会休眠,恢复/重启/重新部署会丢失。
持久化请使用 MySQL / Redis / PostgreSQL,在 Render 环境变量��设置:
SERVER_STORAGE_TYPE(mysql/redis/pgsql)与SERVER_STORAGE_URL。
可在 docker-compose.yml 的 environment 中配置:
| 变量名 | 说明 | 默认值 | 示例 |
|---|---|---|---|
LOG_LEVEL |
日志级别 | INFO |
DEBUG |
LOG_FILE_ENABLED |
是否启用文件日志 | true |
false |
LOG_DIR |
日志目录 | ./logs |
/var/log/grok2api |
DATA_DIR |
数据目录(配置/Token/锁) | ./data |
/data |
SERVER_HOST |
服务监听地址 | 0.0.0.0 |
0.0.0.0 |
SERVER_PORT |
服务端口 | 8000 |
8000 |
SERVER_WORKERS |
Uvicorn worker 数量 | 1 |
2 |
SERVER_STORAGE_TYPE |
存储类型(local/redis/mysql/pgsql) |
local |
pgsql |
SERVER_STORAGE_URL |
存储连接串(local 时可为空) | "" |
postgresql+asyncpg://user:password@host:5432/db |
MySQL 示例:
mysql+aiomysql://user:password@host:3306/db(若填mysql://会自动转为mysql+aiomysql://)
访问地址:http://<host>:8000/admin
登录密码来自配置项 app.app_key(必填,必须自定义强密码)。
功能说明:
- Token 管理:导入/添加/删除 Token,查看状态和配额,一键刷新全部
- 状态筛选:按状态(正常/限流/失效)或 NSFW 状态筛选
- 批量操作:批量刷新、导出、删除、开启 NSFW
- 配置管理:在线修改系统配置(包括 Public 模式切换)
- 缓存管理:查看、清理和下载媒体缓存(支持批量下载图片/视频,视频在线预览)
- 右上角 Playground 按钮可快速跳转到公共功能页面
通过后台 配置管理 中的 app.public_enabled 控制部署模式(无需重启):
| 配置项 | Playground 页面 | 管理后台 | API 接口 |
|---|---|---|---|
public_enabled = false(默认) |
不可访问(404) | 需要 app_key 登录 |
需要 api_key |
public_enabled = true + public_key = "" |
直接访问 | 需要 app_key 登录 |
无需认证 |
public_enabled = true + public_key = "xxx" |
需要 public_key |
需要 app_key 登录 |
无需认证 |
Playground 功能页面(public_enabled = true 时可用):
| 页面 | 路径 | 说明 |
|---|---|---|
| Chat 聊天 | /chat |
对话交互界面 |
| Imagine 瀑布流 | /imagine |
图片生成/编辑,WebSocket/SSE 实时推送 |
| Video 视频生成 | /video |
视频生成,支持图生视频 |
| LiveKit 陪聊 | /voice |
LiveKit 语音实时会话 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/chat/completions |
POST | 聊天补全(支持流式、多模态、视频模型) |
/v1/images/generations |
POST | 图像生成 |
/v1/images/edits |
POST | 图像编辑(multipart/form-data) |
/v1/models |
GET | 可用模型列表 |
/v1/files/image/{name} |
GET | 图片文件服务 |
/v1/files/video/{name} |
GET | 视频文件服务 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/public/imagine/start |
POST | 创建图片生成任务 |
/v1/public/imagine/sse |
GET | 图片生成 SSE 流 |
/v1/public/imagine/ws |
WS | 图片生成 WebSocket |
/v1/public/imagine/edit |
POST | 图片编辑(multipart/form-data) |
/v1/public/imagine/stop |
POST | 停止图片任务 |
/v1/public/imagine/config |
GET | 获取图片生成配置 |
/v1/public/oauth/login |
GET | LINUX DO OAuth 登录跳转 |
/v1/public/oauth/callback |
GET | OAuth 回调处理 |
/v1/public/oauth/credits |
GET | 查询当前用户积分 |
/v1/public/oauth/checkin |
POST | 每日签到 |
/v1/public/video/start |
POST | 创建视频生成任务 |
/v1/public/video/sse |
GET | 视频生成 SSE 流 |
/v1/public/video/stop |
POST | 停止视频任务 |
/v1/public/voice/token |
GET | 获取 LiveKit Token |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/admin/login |
POST | 登录验证 |
/v1/admin/config |
GET/PUT | 配置管理 |
/v1/admin/tokens |
GET/POST/DELETE | Token 管理 |
/v1/admin/tokens/refresh |
POST | Token 刷新 |
/v1/admin/cache |
GET/DELETE | 缓存管理 |
| 模型 ID | 类型 | 消耗 |
|---|---|---|
grok-3, grok-3-mini, grok-3-thinking |
对话 | Low |
grok-4, grok-4-mini, grok-4-thinking, grok-4-heavy |
对话 | Low/High |
grok-4.1-mini, grok-4.1-fast, grok-4.1-expert, grok-4.1-thinking |
对话 | Low/High |
grok-imagine-1.0 |
图像生成 | High |
grok-imagine-1.0-edit |
图像编辑 | High |
grok-imagine-1.0-video |
视频生成 | High |
主配置文件:data/config.toml(首次运行自动生成),结构分为:
| 区段 | 说明 | 关键字段 |
|---|---|---|
[app] |
应用设置 | app_key, api_key, public_enabled, public_key, image_format, video_format |
[proxy] |
代理与网络 | base_proxy_url, asset_proxy_url, cf_clearance, browser, user_agent |
[retry] |
重试策略 | max_retry, retry_status_codes, retry_backoff_base/factor/max |
[token] |
Token 池管理 | auto_refresh, refresh_interval_hours, fail_threshold |
[cache] |
缓存管理 | enable_auto_clean, limit_mb |
[chat] |
对话配置 | concurrent, timeout, stream_timeout |
[image] |
图像配置 | timeout, nsfw, final_min_bytes |
[video] |
视频配置 | concurrent, timeout, stream_timeout |
[voice] |
语音配置 | timeout |
[asset] |
资产管理 | upload_concurrent, download_concurrent, delete_concurrent |
[nsfw] |
NSFW 批量操作 | concurrent, batch_size, timeout |
[usage] |
用量查询 | concurrent, batch_size, timeout |
[oauth] |
OAuth 登录 | linuxdo_enabled, linuxdo_client_id, linuxdo_client_secret |
[credits] |
积分系统 | enabled, initial_credits, daily_checkin_credits, image_cost, image_edit_cost, video_cost |
- Python >= 3.13
- 包管理器:uv
# 安装依赖
uv sync
# 启动服务
uv run main.py
# 或使用 uvicorn(支持热重载)
uv run uvicorn main:app --reload --host 0.0.0.0 --port 8000| 包 | 用途 |
|---|---|
fastapi + uvicorn |
Web 框架 |
curl_cffi |
HTTP 客户端(浏��器指纹模拟) |
aiohttp / aiohttp-socks |
WebSocket 与代理 |
sqlalchemy |
数据库 ORM |
redis |
分布式缓存/存储 |
livekit |
LiveKit 语音实时通信 |
orjson |
高性能 JSON 序列化 |
loguru |
日志 |
- 原项目:chenyme/grok2api - 感谢 @chenyme 的出色工作