[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72516":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},72516,"flow2api","TheSmallHanCat\u002Fflow2api","TheSmallHanCat","无限次数的banana pro！逆向账号池，支持负载均衡、AT自动刷新、缓存策略、代理等。Q交流群1073237297","",null,"Python",2513,619,14,18,0,22,52,223,66,30.38,"MIT License",false,"main",true,[],"2026-06-12 02:03:04","# Flow2API\n\n\u003Cdiv align=\"center\">\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8%2B-blue.svg)](https:\u002F\u002Fwww.python.org\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ffastapi-0.119.0-green.svg)](https:\u002F\u002Ffastapi.tiangolo.com\u002F)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocker-supported-blue.svg)](https:\u002F\u002Fwww.docker.com\u002F)\n\n**一个功能完整的 OpenAI 兼容 API 服务，为 Flow 提供统一的接口**\n\n\u003C\u002Fdiv>\n\n## ✨ 核心特性\n\n- 🎨 **文生图** \u002F **图生图**\n- 🎬 **文生视频** \u002F **图生视频**\n- 🎞️ **首尾帧视频**\n- 🔄 **AT\u002FST自动刷新** - AT 过期自动刷新，ST 过期时自动通过浏览器更新（personal 模式）\n- 📊 **余额显示** - 实时查询和显示 VideoFX Credits\n- 🚀 **负载均衡** - 多 Token 轮询和并发控制\n- 🌐 **代理支持** - 支持 HTTP\u002FSOCKS5 代理\n- 📱 **Web 管理界面** - 直观的 Token 和配置管理\n- 🎨 **图片生成连续对话**\n- 🧩 **Gemini 官方请求体兼容** - 支持 `generateContent` \u002F `streamGenerateContent`、`systemInstruction`、`contents.parts.text\u002FinlineData\u002FfileData`\n- ✅ **Gemini 官方格式已实测出图** - 已使用真实 Token 验证 `\u002Fmodels\u002F{model}:generateContent` 可正常返回官方 `candidates[].content.parts[].inlineData`\n\n## 🚀 快速开始\n\n### 前置要求\n\n- Docker 和 Docker Compose（推荐）\n- 或 Python 3.8+\n\n- 由于Flow增加了额外的验证码，你可以自行选择使用浏览器打码或第三发打码：\n注册[YesCaptcha](https:\u002F\u002Fyescaptcha.com\u002Fi\u002F13Xd8K)并获取api key，将其填入系统配置页面```YesCaptcha API密钥```区域\n- YesCaptcha 支持在管理页切换 `type`：`RecaptchaV3TaskProxyless`、`RecaptchaV3TaskProxylessM1`、`RecaptchaV3TaskProxylessM1S7`、`RecaptchaV3TaskProxylessM1S9`；S7\u002FS9 会强制提交 `minScore` 0.7\u002F0.9。\n- 默认 `docker-compose.yml` 建议搭配第三方打码（yescaptcha\u002Fcapmonster\u002Fezcaptcha\u002Fcapsolver）。\n如需 Docker 内有头打码（browser\u002Fpersonal），请使用下方 `docker-compose.headed.yml`。\n\n- 自动更新st浏览器拓展：[Flow2API-Token-Updater](https:\u002F\u002Fgithub.com\u002FTheSmallHanCat\u002FFlow2API-Token-Updater)\n\n### 方式一：Docker 部署（推荐）\n\n#### 标准模式（不使用代理）\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002FTheSmallHanCat\u002Fflow2api.git\ncd flow2api\n\n# 启动服务\ndocker-compose up -d\n\n# 查看日志\ndocker-compose logs -f\n```\n\n> 说明：Compose 已默认挂载 `.\u002Ftmp:\u002Fapp\u002Ftmp`。如果把缓存超时设为 `0`，语义是“不自动过期删除”；若希望容器重建后仍保留缓存文件，也需要保留这个 `tmp` 挂载。\n\n#### WARP 模式（使用代理）\n\n```bash\n# 使用 WARP 代理启动\ndocker-compose -f docker-compose.warp.yml up -d\n\n# 查看日志\ndocker-compose -f docker-compose.warp.yml logs -f\n```\n\n#### Docker 有头打码模式（browser \u002F personal）\n\n> 适用于你有虚拟化桌面需求、希望在容器里启用有头浏览器打码的场景。  \n> 该模式默认启动 `Xvfb + Fluxbox` 实现容器内部可视化，并设置 `ALLOW_DOCKER_HEADED_CAPTCHA=true`。  \n> 仅开放应用端口，不提供任何远程桌面连接端口。\n> `personal` 内置浏览器现在默认按有头模式启动；如需临时切回无头，可额外设置环境变量 `PERSONAL_BROWSER_HEADLESS=true`。\n\n```bash\n# 启动有头模式（首次建议带 --build）\ndocker compose -f docker-compose.headed.yml up -d --build\n\n# 查看日志\ndocker compose -f docker-compose.headed.yml logs -f\n```\n\n- API 端口：`8000`\n- 进入管理后台后，将验证码方式设为 `browser` 或 `personal`\n\n### 方式二：本地部署\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002FTheSmallHanCat\u002Fflow2api.git\ncd flow2api\n\n# 创建虚拟环境\npython -m venv venv\n\n# 激活虚拟环境\n# Windows\nvenv\\Scripts\\activate\n# Linux\u002FMac\nsource venv\u002Fbin\u002Factivate\n\n# 安装依赖\npip install -r requirements.txt\n\n# 启动服务\npython main.py\n```\n\n### 首次访问\n\n服务启动后,访问管理后台: **http:\u002F\u002Flocalhost:8000**,首次登录后请立即修改密码!\n\n- **用户名**: `admin`\n- **密码**: `admin`\n\n## 📈 监控接口\n\n- `GET \u002Fhealth`：公开健康检查，返回服务是否存活、活跃 Token 数、即将过期 Token 数、已过期 Token 数、429 禁用数等摘要\n- `GET \u002Fmetrics`：Prometheus 指标接口\n- `GET \u002Fapi\u002Ftokens`：管理接口，返回 `at_expires`、`at_expired`、`at_expiring_within_1h`、`ban_reason`、`consecutive_error_count` 等 Token 状态\n\nPrometheus 可直接抓 `\u002Fmetrics`。如果部署到 Kubernetes，建议只在集群内抓取，并在 Ingress\u002FGateway 层单独限制 `\u002Fmetrics` 的外部访问。\n\n### 模型测试页面\n\n访问 **http:\u002F\u002Flocalhost:8000\u002Ftest** 可打开内置的模型测试页面，支持：\n\n- 按分类浏览所有可用模型（图片生成、文\u002F图生视频、多图视频、视频放大等）\n- 输入提示词一键测试，流式显示生成进度\n- 图生图 \u002F 图生视频场景支持上传图片\n- 生成完成后直接预览图片或视频\n\n## 📋 支持的模型\n\n### 图片生成\n\n| 模型名称 | 说明| 尺寸 |\n|---------|--------|--------|\n| `gemini-3.0-pro-image-landscape` | 图\u002F文生图 | 横屏 |\n| `gemini-3.0-pro-image-portrait` | 图\u002F文生图 | 竖屏 |\n| `gemini-3.0-pro-image-square` | 图\u002F文生图 | 方图 |\n| `gemini-3.0-pro-image-four-three` | 图\u002F文生图 | 横屏 4:3 |\n| `gemini-3.0-pro-image-three-four` | 图\u002F文生图 | 竖屏 3:4 |\n| `gemini-3.0-pro-image-landscape-2k` | 图\u002F文生图(2K) | 横屏 |\n| `gemini-3.0-pro-image-portrait-2k` | 图\u002F文生图(2K) | 竖屏 |\n| `gemini-3.0-pro-image-square-2k` | 图\u002F文生图(2K) | 方图 |\n| `gemini-3.0-pro-image-four-three-2k` | 图\u002F文生图(2K) | 横屏 4:3 |\n| `gemini-3.0-pro-image-three-four-2k` | 图\u002F文生图(2K) | 竖屏 3:4 |\n| `gemini-3.0-pro-image-landscape-4k` | 图\u002F文生图(4K) | 横屏 |\n| `gemini-3.0-pro-image-portrait-4k` | 图\u002F文生图(4K) | 竖屏 |\n| `gemini-3.0-pro-image-square-4k` | 图\u002F文生图(4K) | 方图 |\n| `gemini-3.0-pro-image-four-three-4k` | 图\u002F文生图(4K) | 横屏 4:3 |\n| `gemini-3.0-pro-image-three-four-4k` | 图\u002F文生图(4K) | 竖屏 3:4 |\n| `imagen-4.0-generate-preview-landscape` | 图\u002F文生图 | 横屏 |\n| `imagen-4.0-generate-preview-portrait` | 图\u002F文生图 | 竖屏 |\n| `gemini-3.1-flash-image-landscape` | 图\u002F文生图 | 横屏 |\n| `gemini-3.1-flash-image-portrait` | 图\u002F文生图 | 竖屏 |\n| `gemini-3.1-flash-image-square` | 图\u002F文生图 | 方图 |\n| `gemini-3.1-flash-image-four-three` | 图\u002F文生图 | 横屏 4:3 |\n| `gemini-3.1-flash-image-three-four` | 图\u002F文生图 | 竖屏 3:4 |\n| `gemini-3.1-flash-image-landscape-2k` | 图\u002F文生图(2K) | 横屏 |\n| `gemini-3.1-flash-image-portrait-2k` | 图\u002F文生图(2K) | 竖屏 |\n| `gemini-3.1-flash-image-square-2k` | 图\u002F文生图(2K) | 方图 |\n| `gemini-3.1-flash-image-four-three-2k` | 图\u002F文生图(2K) | 横屏 4:3 |\n| `gemini-3.1-flash-image-three-four-2k` | 图\u002F文生图(2K) | 竖屏 3:4 |\n| `gemini-3.1-flash-image-landscape-4k` | 图\u002F文生图(4K) | 横屏 |\n| `gemini-3.1-flash-image-portrait-4k` | 图\u002F文生图(4K) | 竖屏 |\n| `gemini-3.1-flash-image-square-4k` | 图\u002F文生图(4K) | 方图 |\n| `gemini-3.1-flash-image-four-three-4k` | 图\u002F文生图(4K) | 横屏 4:3 |\n| `gemini-3.1-flash-image-three-four-4k` | 图\u002F文生图(4K) | 竖屏 3:4 |\n\n### 视频生成\n\n#### 文生视频 (T2V - Text to Video)\n⚠️ **不支持上传图片**\n\n| 模型名称 | 说明| 尺寸 |\n|---------|---------|--------|\n| `veo_3_1_t2v_fast_portrait` | 文生视频 | 竖屏 |\n| `veo_3_1_t2v_fast_landscape` | 文生视频 | 横屏 |\n| `veo_3_1_t2v_fast_portrait_ultra` | 文生视频 | 竖屏 |\n| `veo_3_1_t2v_fast_ultra` | 文生视频 | 横屏 |\n| `veo_3_1_t2v_fast_portrait_ultra_relaxed` | 文生视频 | 竖屏 |\n| `veo_3_1_t2v_fast_ultra_relaxed` | 文生视频 | 横屏 |\n| `veo_3_1_t2v_portrait` | 文生视频 | 竖屏 |\n| `veo_3_1_t2v_landscape` | 文生视频 | 横屏 |\n| `veo_3_1_t2v_landscape_4s` | 文生视频 4秒 | 横屏 |\n| `veo_3_1_t2v_portrait_4s` | 文生视频 4秒 | 竖屏 |\n| `veo_3_1_t2v_landscape_6s` | 文生视频 6秒 | 横屏 |\n| `veo_3_1_t2v_portrait_6s` | 文生视频 6秒 | 竖屏 |\n| `veo_3_1_t2v_fast_landscape_4s` | 文生视频 Fast 4秒 | 横屏 |\n| `veo_3_1_t2v_fast_portrait_4s` | 文生视频 Fast 4秒 | 竖屏 |\n| `veo_3_1_t2v_fast_landscape_6s` | 文生视频 Fast 6秒 | 横屏 |\n| `veo_3_1_t2v_fast_portrait_6s` | 文生视频 Fast 6秒 | 竖屏 |\n| `veo_3_1_t2v_lite_portrait` | 文生视频 Lite | 竖屏 |\n| `veo_3_1_t2v_lite_landscape` | 文生视频 Lite | 横屏 |\n| `veo_3_1_t2v_lite_4s_portrait` | 文生视频 Lite 4秒 | 竖屏 |\n| `veo_3_1_t2v_lite_4s_landscape` | 文生视频 Lite 4秒 | 横屏 |\n| `veo_3_1_t2v_lite_6s_portrait` | 文生视频 Lite 6秒 | 竖屏 |\n| `veo_3_1_t2v_lite_6s_landscape` | 文生视频 Lite 6秒 | 横屏 |\n\n#### 首尾帧模型 (I2V - Image to Video)\n📸 **支持1-2张图片：1张作为首帧，2张作为首尾帧**\n\n> 💡 **自动适配**：系统会根据图片数量自动选择对应的 model_key\n> - **单帧模式**（1张图）：使用首帧生成视频\n> - **双帧模式**（2张图）：使用首帧+尾帧生成过渡视频\n> - `veo_3_1_i2v_lite_*` 仅支持 **1 张** 首帧图片\n> - `veo_3_1_interpolation_lite_*` 仅支持 **2 张** 首尾帧图片\n\n| 模型名称 | 说明| 尺寸 |\n|---------|---------|--------|\n| `veo_3_1_i2v_s_fast_portrait_fl` | 图生视频 | 竖屏 |\n| `veo_3_1_i2v_s_fast_fl` | 图生视频 | 横屏 |\n| `veo_3_1_i2v_s_fast_portrait_ultra_fl` | 图生视频 | 竖屏 |\n| `veo_3_1_i2v_s_fast_ultra_fl` | 图生视频 | 横屏 |\n| `veo_3_1_i2v_s_fast_portrait_ultra_relaxed` | 图生视频 | 竖屏 |\n| `veo_3_1_i2v_s_fast_ultra_relaxed` | 图生视频 | 横屏 |\n| `veo_3_1_i2v_s_portrait` | 图生视频 | 竖屏 |\n| `veo_3_1_i2v_s_landscape` | 图生视频 | 横屏 |\n| `veo_3_1_i2v_s_landscape_4s` | 图生视频 4秒 | 横屏 |\n| `veo_3_1_i2v_s_portrait_4s` | 图生视频 4秒 | 竖屏 |\n| `veo_3_1_i2v_s_landscape_6s` | 图生视频 6秒 | 横屏 |\n| `veo_3_1_i2v_s_portrait_6s` | 图生视频 6秒 | 竖屏 |\n| `veo_3_1_i2v_s_fast_landscape_4s_fl` | 图生视频 Fast 4秒 | 横屏 |\n| `veo_3_1_i2v_s_fast_portrait_4s_fl` | 图生视频 Fast 4秒 | 竖屏 |\n| `veo_3_1_i2v_s_fast_landscape_6s_fl` | 图生视频 Fast 6秒 | 横屏 |\n| `veo_3_1_i2v_s_fast_portrait_6s_fl` | 图生视频 Fast 6秒 | 竖屏 |\n| `veo_3_1_i2v_lite_portrait` | 图生视频 Lite（仅首帧） | 竖屏 |\n| `veo_3_1_i2v_lite_landscape` | 图生视频 Lite（仅首帧） | 横屏 |\n| `veo_3_1_i2v_lite_4s_portrait` | 图生视频 Lite 4秒（仅首帧） | 竖屏 |\n| `veo_3_1_i2v_lite_4s_landscape` | 图生视频 Lite 4秒（仅首帧） | 横屏 |\n| `veo_3_1_i2v_lite_6s_portrait` | 图生视频 Lite 6秒（仅首帧） | 竖屏 |\n| `veo_3_1_i2v_lite_6s_landscape` | 图生视频 Lite 6秒（仅首帧） | 横屏 |\n| `veo_3_1_interpolation_lite_portrait` | 图生视频 Lite（首尾帧过渡） | 竖屏 |\n| `veo_3_1_interpolation_lite_landscape` | 图生视频 Lite（首尾帧过渡） | 横屏 |\n| `veo_3_1_interpolation_lite_4s_portrait` | 图生视频 Lite 4秒（首尾帧过渡） | 竖屏 |\n| `veo_3_1_interpolation_lite_4s_landscape` | 图生视频 Lite 4秒（首尾帧过渡） | 横屏 |\n| `veo_3_1_interpolation_lite_6s_portrait` | 图生视频 Lite 6秒（首尾帧过渡） | 竖屏 |\n| `veo_3_1_interpolation_lite_6s_landscape` | 图生视频 Lite 6秒（首尾帧过渡） | 横屏 |\n\n#### 多图生成 (R2V - Reference Images to Video)\n🖼️ **支持多张图片**\n\n> **2026-03-06 更新**\n>\n> - 已同步上游新版 `R2V` 视频请求体\n> - `textInput` 已切换为 `structuredPrompt.parts`\n> - 顶层新增 `mediaGenerationContext.batchId`\n> - 顶层新增 `useV2ModelConfig: true`\n> - 横屏 \u002F 竖屏 `R2V` 模型共用同一套新版请求体\n> - 横屏 `R2V` 的上游 `videoModelKey` 已切换为 `*_landscape` 形式\n> - 根据当前上游协议，`referenceImages` 当前最多传 **3 张**\n\n| 模型名称 | 说明| 尺寸 |\n|---------|---------|--------|\n| `veo_3_1_r2v_fast_portrait` | 图生视频 | 竖屏 |\n| `veo_3_1_r2v_fast_landscape` | 图生视频 | 横屏 |\n| `veo_3_1_r2v_fast_portrait_ultra` | 图生视频 | 竖屏 |\n| `veo_3_1_r2v_fast_landscape_ultra` | 图生视频 | 横屏 |\n| `veo_3_1_r2v_fast_portrait_ultra_relaxed` | 图生视频 | 竖屏 |\n| `veo_3_1_r2v_fast_landscape_ultra_relaxed` | 图生视频 | 横屏 |\n\n#### 视频放大模型 (Upsample)\n\n这些模型不是直接调用上游 upsampler key，而是先用对应的 Veo 3.1 普通模型生成视频，再提交 1080P\u002F4K 放大请求。\n\n| 模型名称 | 说明 | 输出 |\n|---------|---------|--------|\n| `veo_3_1_t2v_landscape_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_portrait_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_landscape_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_t2v_portrait_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_t2v_landscape_4s_4k` | 文生视频 4秒放大 | 4K |\n| `veo_3_1_t2v_portrait_4s_4k` | 文生视频 4秒放大 | 4K |\n| `veo_3_1_t2v_landscape_4s_1080p` | 文生视频 4秒放大 | 1080P |\n| `veo_3_1_t2v_portrait_4s_1080p` | 文生视频 4秒放大 | 1080P |\n| `veo_3_1_t2v_landscape_6s_4k` | 文生视频 6秒放大 | 4K |\n| `veo_3_1_t2v_portrait_6s_4k` | 文生视频 6秒放大 | 4K |\n| `veo_3_1_t2v_landscape_6s_1080p` | 文生视频 6秒放大 | 1080P |\n| `veo_3_1_t2v_portrait_6s_1080p` | 文生视频 6秒放大 | 1080P |\n| `veo_3_1_t2v_fast_portrait_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_fast_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_fast_portrait_ultra_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_fast_ultra_4k` | 文生视频放大 | 4K |\n| `veo_3_1_t2v_fast_portrait_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_t2v_fast_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_t2v_fast_portrait_ultra_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_t2v_fast_ultra_1080p` | 文生视频放大 | 1080P |\n| `veo_3_1_i2v_s_fast_portrait_ultra_fl_4k` | 图生视频放大 | 4K |\n| `veo_3_1_i2v_s_fast_ultra_fl_4k` | 图生视频放大 | 4K |\n| `veo_3_1_i2v_s_fast_portrait_ultra_fl_1080p` | 图生视频放大 | 1080P |\n| `veo_3_1_i2v_s_fast_ultra_fl_1080p` | 图生视频放大 | 1080P |\n| `veo_3_1_i2v_s_landscape_4k` | 图生视频放大 | 4K |\n| `veo_3_1_i2v_s_portrait_4k` | 图生视频放大 | 4K |\n| `veo_3_1_i2v_s_landscape_1080p` | 图生视频放大 | 1080P |\n| `veo_3_1_i2v_s_portrait_1080p` | 图生视频放大 | 1080P |\n| `veo_3_1_i2v_s_landscape_4s_4k` | 图生视频 4秒放大 | 4K |\n| `veo_3_1_i2v_s_portrait_4s_4k` | 图生视频 4秒放大 | 4K |\n| `veo_3_1_i2v_s_landscape_4s_1080p` | 图生视频 4秒放大 | 1080P |\n| `veo_3_1_i2v_s_portrait_4s_1080p` | 图生视频 4秒放大 | 1080P |\n| `veo_3_1_i2v_s_landscape_6s_4k` | 图生视频 6秒放大 | 4K |\n| `veo_3_1_i2v_s_portrait_6s_4k` | 图生视频 6秒放大 | 4K |\n| `veo_3_1_i2v_s_landscape_6s_1080p` | 图生视频 6秒放大 | 1080P |\n| `veo_3_1_i2v_s_portrait_6s_1080p` | 图生视频 6秒放大 | 1080P |\n| `veo_3_1_r2v_fast_portrait_ultra_4k` | 多图视频放大 | 4K |\n| `veo_3_1_r2v_fast_landscape_ultra_4k` | 多图视频放大 | 4K |\n| `veo_3_1_r2v_fast_portrait_ultra_1080p` | 多图视频放大 | 1080P |\n| `veo_3_1_r2v_fast_landscape_ultra_1080p` | 多图视频放大 | 1080P |\n\n## 📡 API 使用示例（需要使用流式）\n\n> 除了下方 `OpenAI-compatible` 示例，服务也支持 Gemini 官方格式：\n> - `POST \u002Fv1beta\u002Fmodels\u002F{model}:generateContent`\n> - `POST \u002Fmodels\u002F{model}:generateContent`\n> - `POST \u002Fv1beta\u002Fmodels\u002F{model}:streamGenerateContent`\n> - `POST \u002Fmodels\u002F{model}:streamGenerateContent`\n>\n> Gemini 官方格式支持以下认证方式：\n> - `Authorization: Bearer \u003Capi_key>`\n> - `x-goog-api-key: \u003Capi_key>`\n> - `?key=\u003Capi_key>`\n>\n> Gemini 官方图片请求体已兼容：\n> - `systemInstruction`\n> - `contents[].parts[].text`\n> - `contents[].parts[].inlineData`\n> - `contents[].parts[].fileData.fileUri`\n> - `generationConfig.responseModalities`\n> - `generationConfig.imageConfig.aspectRatio`\n> - `generationConfig.imageConfig.imageSize`\n\n### Gemini 官方 generateContent（文生图）\n\n> 已使用真实 Token 实测通过。\n> 如需流式返回，可将路径替换为 `:streamGenerateContent?alt=sse`。\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fmodels\u002Fgemini-3.1-flash-image:generateContent\" \\\n  -H \"x-goog-api-key: han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"systemInstruction\": {\n      \"parts\": [\n        {\n          \"text\": \"Return an image only.\"\n        }\n      ]\n    },\n    \"contents\": [\n      {\n        \"role\": \"user\",\n        \"parts\": [\n          {\n            \"text\": \"一颗放在木桌上的红苹果，棚拍光线，极简背景\"\n          }\n        ]\n      }\n    ],\n    \"generationConfig\": {\n      \"responseModalities\": [\"IMAGE\"],\n      \"imageConfig\": {\n        \"aspectRatio\": \"1:1\",\n        \"imageSize\": \"1K\"\n      }\n    }\n  }'\n```\n\n### 文生图\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"gemini-3.1-flash-image-landscape\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": \"一只可爱的猫咪在花园里玩耍\"\n      }\n    ],\n    \"stream\": true\n  }'\n```\n\n### 图生图\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"gemini-3.1-flash-image-landscape\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"将这张图片变成水彩画风格\"\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64,\u003Cbase64_encoded_image>\"\n            }\n          }\n        ]\n      }\n    ],\n    \"stream\": true\n  }'\n```\n\n### 文生视频\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"veo_3_1_t2v_fast_landscape\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": \"一只小猫在草地上追逐蝴蝶\"\n      }\n    ],\n    \"stream\": true\n  }'\n```\n\n### 首尾帧生成视频\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"veo_3_1_i2v_s_fast_fl_landscape\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"从第一张图过渡到第二张图\"\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64,\u003C首帧base64>\"\n            }\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64,\u003C尾帧base64>\"\n            }\n          }\n        ]\n      }\n    ],\n    \"stream\": true\n  }'\n```\n\n### 多图生成视频\n\n> `R2V` 会由服务端自动组装新版视频请求体，调用方仍然使用 OpenAI 兼容输入即可。\n> 服务端会将横屏 `R2V` 自动映射到最新的 `*_landscape` 上游模型键。\n> 当前最多传 **3 张参考图**。\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer han1234\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"veo_3_1_r2v_fast_portrait\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"以三张参考图的人物和场景为基础，生成一段镜头平滑推进的竖屏视频\"\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64\u002F\u003C参考图1base64>\"\n            }\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64\u002F\u003C参考图2base64>\"\n            }\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n              \"url\": \"data:image\u002Fjpeg;base64\u002F\u003C参考图3base64>\"\n            }\n          }\n        ]\n      }\n    ],\n    \"stream\": true\n  }'\n```\n\n---\n\n## 📄 许可证\n\n本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。\n\n---\n\n## 🙏 致谢\n\n- [PearNoDec](https:\u002F\u002Fgithub.com\u002FPearNoDec) 提供的YesCaptcha打码方案\n- [raomaiping](https:\u002F\u002Fgithub.com\u002Fraomaiping) 提供的无头打码方案\n感谢所有贡献者和使用者的支持！\n\n---\n\n## 📞 联系方式\n\n- 提交 Issue：[GitHub Issues](https:\u002F\u002Fgithub.com\u002FTheSmallHanCat\u002Fflow2api\u002Fissues)\n\n---\n\n**⭐ 如果这个项目对你有帮助，请给个 Star！**\n\n## 最近更新\n\n- `9f1d712` 同步 personal 打码逻辑，包含清理、浏览器参数和打码方式配置。\n- `da2ad06` 合并 PR #133。\n- `abd0c00` 修复 PR #133 合并后的集成问题。\n- `55431c9` 将 origin\u002Fmain 同步到 PR #133。\n- `4b7a0ad` 新增 Prometheus 服务指标和 Token 健康监控。\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=TheSmallHanCat\u002Fflow2api&type=date&legend=top-left)](https:\u002F\u002Fwww.star-history.com\u002F#TheSmallHanCat\u002Fflow2api&type=date&legend=top-left)\n","Flow2API 是一个功能完整的 OpenAI 兼容 API 服务，为 Flow 提供统一的接口。该项目支持文生图、图生视频等多媒体内容生成，具备AT\u002FST自动刷新、余额显示、负载均衡和代理支持等核心特性，能够有效管理和优化多个Token的使用。此外，它还提供了直观的Web管理界面以及对Gemini官方请求体的支持，确保了与OpenAI生态系统的兼容性。此项目适用于需要频繁调用OpenAI API并希望提高资源利用率和稳定性的开发者或团队，在多媒体内容生成、自动化任务处理等领域具有广泛的应用前景。",2,"2026-06-11 03:42:24","high_star"]