
项目简介与使用注意事项
ChatGPT2API 是一个围绕 ChatGPT 官网相关能力进行逆向整理与封装的项目,提供面向图片生成、图片编辑和多图组图编辑场景的 OpenAI 兼容 API 与代理。项目同时集成在线画图工作台、账号池管理、多种账号导入方式,以及 Docker 自托管部署能力。
重要提醒:该项目 README 明确声明,仅供个人学习、技术研究与非商业性技术交流使用。请勿用于商业用途、批量操作、自动化滥用、规模化调用,或任何违反 OpenAI 服务条款及当地法律法规的行为。测试时也不应使用重要账号、常用账号或高价值账号。
项目涉及对官网接口的逆向研究,使用过程中可能存在账号受限、临时封禁或永久封禁风险。使用前请确认自己理解并接受相关风险。

主要功能
OpenAI 兼容接口
- 兼容
POST /v1/images/generations图片生成接口。 - 兼容
POST /v1/images/edits图片编辑接口。 - 提供面向图片场景的
POST /v1/chat/completions和POST /v1/responses兼容接口。 - 通过
GET /v1/models暴露图片与相关模型列表。 - 支持使用
n参数返回多张生成结果,当前后端限制为 1 至 4 张。 - 支持生成可编辑 PPT 与 PSD 文件。
在线画图与编辑
内置工作台支持文生图、参考图编辑和多图组图编辑,可选择 gpt-image-2、codex-gpt-image-2、auto 以及 README 列出的 GPT 模型别名。前端还提供图片会话历史、本地保存、删除与清空、服务端图片 URL 缓存、生成进度追踪、懒加载和滚动位置记忆。
账号池管理
账号池可以异步刷新账号邮箱、类型、额度和恢复时间,并轮询可用账号执行图片生成与编辑。当遇到 Token 失效类错误时,系统可以自动剔除无效 Token;对于限流账号,也支持定时检查、密码重新登录和自动恢复。
项目支持 HTTP、HTTPS、SOCKS5、SOCKS5H 代理,以及 WARP、Privoxy 和 FlareSolverr 组成的稳定代理运行时。账号导入方式包括本地 CPA JSON、远程 CPA 服务器、sub2api 服务器和 access_token。


使用 Docker 快速部署
1. 获取项目并启动服务
推荐先使用 Docker Compose 启动完整服务。执行以下命令克隆项目并在后台运行:
git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
docker compose pull
docker compose up -d启动前需要在 config.json 中设置 auth-key。也可以在 docker-compose.yml 中使用环境变量 CHATGPT2API_AUTH_KEY 覆盖该配置。
默认情况下,Web 面板地址为 http://localhost:3000,API 基础地址为 http://localhost:3000/v1,数据会保存在项目目录下的 ./data。README 中的部分 curl 示例使用了 localhost:8000,实际调用时请按照你的 Compose 端口映射修改端口。
2. 访问 Web 面板
服务启动后,在浏览器打开 http://localhost:3000。首次使用时,应先完成授权密钥、账号及代理等必要配置,再通过工作台测试图片生成或编辑功能。
3. 更新服务
后续更新镜像时,可以执行:
docker compose pull
docker compose up -d启用 WARP 与 FlareSolverr 稳定代理

如果图片请求经常受到 Cloudflare 拦截,可以使用项目附带的 WARP、Privoxy 与 FlareSolverr 部署方案:
cp .env.example .env
docker compose -f docker-compose.warp.yml pull
docker compose -f docker-compose.warp.yml up -d该 Compose 配置会启动以下服务:
warp-proxy:提供 WARP SOCKS5 出口。privoxy:将 WARP SOCKS5 转换为 HTTP 代理。flaresolverr:刷新 Cloudflare clearance。init-config:幂等写入proxy_runtime默认配置。app:运行 ChatGPT2API 主服务。
默认情况下,只有上游 OpenAI 或 ChatGPT 请求会使用稳定代理,账号邮箱、CPA 等辅助链路不会被强制接管。代理优先级为:账号自身配置的代理、稳定代理运行时、显式代理、旧版全局代理。你可以在 .env 中调整端口和运行时参数,也可以在后台设置页测试代理与 clearance。
本地开发环境
启动后端
项目 README 使用 uv 管理 Python 依赖。执行以下命令启动后端:
git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
uv sync
uv run main.py启动前端
进入 Web 目录后,使用 Bun 安装依赖并启动开发服务器:
cd chatgpt2api/web
bun install
bun run dev
配置存储后端
项目通过环境变量 STORAGE_BACKEND 选择存储方式:
json:本地 JSON 文件,默认方式。sqlite:本地 SQLite 数据库。postgres:外部 PostgreSQL,需要设置DATABASE_URL。git:Git 私有仓库,需要设置GIT_REPO_URL和GIT_TOKEN。
例如使用 PostgreSQL 时,可以在 Compose 环境变量中加入:
environment:
- STORAGE_BACKEND=postgres
- DATABASE_URL=postgresql://user:password@host:5432/dbname调用图片生成 API
所有 AI 接口都需要携带以下授权请求头:
Authorization: Bearer <auth-key>先调用模型列表接口,可以查看当前暴露的模型:
curl http://localhost:8000/v1/models \
-H "Authorization: Bearer <auth-key>"文生图使用 POST /v1/images/generations。下面的示例会生成一张漂浮在太空里的猫:
curl http://localhost:8000/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-image-2",
"prompt": "一只漂浮在太空里的猫",
"n": 1,
"response_format": "b64_json"
}'
model 应使用 /v1/models 返回的可用值,README 推荐图片生成使用 gpt-image-2。n 可设置生成数量,但当前后端限制为 1 至 4;response_format 示例使用 b64_json。
调用图片编辑 API
通过 multipart 上传本地图片
图片编辑接口支持上传本地文件,并用提示词描述修改内容:
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-F "model=gpt-image-2" \
-F "prompt=把这张图改成赛博朋克夜景风格" \
-F "n=1" \
-F "image=@./input.png"通过图片 URL 编辑
也可以按照 JSON 格式传入图片 URL:
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "把这张图改成赛博朋克夜景风格",
"images": [
{"image_url": "https://example.com/input.png"}
]
}'使用评论锚点编辑指定区域
通过 comments 数组可以模拟网页版的图片评论式编辑。x 与 y 支持 0 到 1 的归一化数值、百分比字符串或 0 到 100 的数值:
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "保持其余部分不变",
"images": [
{"image_url": "https://example.com/input.png"}
],
"comments": [
{"x": "27.5%", "y": "70%", "text": "把青瓷茶壶换成金边白瓷茶壶"},
{"x": 0.36, "y": 0.315, "text": "发髻上再插一支金色步摇"}
]
}'当请求包含 comments 时,prompt 可以省略。每条评论还可以使用 image_index 指定对应的输入图片,默认值为 0。

使用标注笔迹编辑
项目还支持网页版标注画笔。使用 markup_strokes 时,points 是归一化坐标折线,color 默认是 #FF3B30,width 是相对于图片短边的线宽比例:
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "把圆圈内的霓虹招牌换成绿色",
"images": [
{"image_url": "https://example.com/input.png"}
],
"markup_strokes": [
{
"points": [[0.62, 0.18], [0.78, 0.22], [0.75, 0.42], [0.6, 0.38], [0.62, 0.18]],
"color": "#FF3B30",
"width": 0.01
}
]
}'如果已经有与原图同比例的透明笔迹 PNG,也可以用 multipart 方式上传 markup 文件。项目会将笔迹与输入图片对齐并合成后再执行编辑。
使用 Chat Completions 与 Responses 兼容接口
Chat Completions
POST /v1/chat/completions 面向文本、网页搜索和图片场景提供兼容能力,但 README 特别说明它不是完整的通用聊天代理。图片生成示例:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-image-2",
"messages": [
{
"role": "user",
"content": "生成一张雨夜东京街头的赛博朋克猫"
}
],
"n": 1
}'该接口的 messages 可承载文本、搜索和图片请求内容;tools 支持 README 列出的网页搜索工具,stream 在文本、搜索和图片场景中仍处于测试状态。
Responses API
POST /v1/responses 支持图片生成工具调用和网页搜索兼容逻辑,同样不是完整的通用 Responses API 代理:
curl http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-5",
"input": "生成一张未来感城市天际线图片",
"tools": [
{
"type": "image_generation"
}
]
}'其中 tools 支持 image_generation、web_search、web_search_preview 和 web_search_preview_2025_03_11。流式响应已实现,但仍在测试中。
进阶使用建议
- 先验证授权和模型列表:部署后先调用
/v1/models,确认auth-key和端口配置正确,再进行图片请求。 - 合理选择存储后端:个人测试可使用默认 JSON 或 SQLite;需要外部数据库时再配置 PostgreSQL,并妥善保护连接字符串。
- 处理 Cloudflare 拦截:当上游请求稳定性较差时,优先按照项目提供的 WARP Compose 方案配置稳定代理,并在后台测试代理与 clearance。
- 控制账号池风险:定期清理失效 Token,使用搜索、筛选和批量刷新功能维护账号状态,避免对账号执行 README 禁止的批量或滥用操作。
- 区分模型别名:
codex-gpt-image-2用于 Codex 画图场景,仅 Plus、Team、Pro 订阅可用;具体可用模型应以/v1/models返回结果为准。 - 注意接口边界:Chat Completions 与 Responses 主要面向 README 所述的文本、搜索和图片场景,不应将其当作完整通用代理使用。
总结
ChatGPT2API 将 ChatGPT 网页端相关图片能力封装为 OpenAI 风格接口,并提供在线工作台、图片编辑增强、账号池、代理运行时和多种部署方式。你可以先用 Docker 完成基础部署,再根据需求配置存储后端、稳定代理和账号导入,最后通过 /v1/images/generations 与 /v1/images/edits 接入图片生成和编辑流程。使用时务必遵守项目免责声明、上游服务条款及当地法律法规。
