|
感谢 APIMart 赞助了本项目!APIMart 是专注 AI 图片/视频生成的低价 API 平台,GPT-Image-2 低至 \$0.006/张,1 美元可出图 160+ 张。图片、视频一套异步 API 通吃,提交任务拿 ID、回调取结果,跑批万张不超时、换模型不改代码。按量付费、无月费,通过此注册链接注册即可开用。 Thanks to APIMart for sponsoring this project! APIMart is a low-cost API platform for AI image & video generation — GPT-Image-2 from \$0.006/image, 160+ images per dollar. One async API covers both image and video: submit a task, get an ID, fetch results via polling or callback. Batch tens of thousands of images without timeouts, switch models without changing code. Pay-as-you-go with no monthly fee — sign up here to get started. |
- 🎨 文生图 / 图生图
- 🎬 文生视频 / 图生视频
- 🎞️ 首尾帧视频
- 🔄 AT/ST自动刷新 - AT 过期自动刷新,ST 过期时自动通过浏览器更新(personal 模式)
- 📊 余额显示 - 实时查询和显示 VideoFX Credits
- 🚀 负载均衡 - 多 Token 轮询和并发控制
- 🌐 代理支持 - 支持 HTTP/SOCKS5 代理
- 📱 Web 管理界面 - 直观的 Token 和配置管理
- 🎨 图片生成连续对话
- 🧩 Gemini 官方请求体兼容 - 支持
generateContent/streamGenerateContent、systemInstruction、contents.parts.text/inlineData/fileData - ✅ Gemini 官方格式已实测出图 - 已使用真实 Token 验证
/models/{model}:generateContent可正常返回官方candidates[].content.parts[].inlineData
-
Docker 和 Docker Compose(推荐)
-
或 Python 3.8+
-
由于 Flow 增加了额外的验证码,你可以自行选择使用浏览器打码或第三方打码:
- 注册 YesCaptcha 并获取 API Key,填入系统配置页面的
YesCaptcha API 密钥。 - 注册 CapSolver 并获取 API Key,填入系统配置页面的
CapSolver API 密钥。 - 注册 Captcha.run 并获取 API Key,填入系统配置页面的
Captcha.run API 密钥。
- 注册 YesCaptcha 并获取 API Key,填入系统配置页面的
-
YesCaptcha 支持在管理页切换
type:RecaptchaV3TaskProxyless、RecaptchaV3TaskProxylessM1、RecaptchaV3TaskProxylessM1S7、RecaptchaV3TaskProxylessM1S9;当前默认推荐M1S9,S7/S9 会强制提交minScore0.7/0.9。 -
默认
docker-compose.yml建议搭配第三方打码(yescaptcha/captcharun/capmonster/ezcaptcha/capsolver)。 如需 Docker 内有头打码(browser/personal),请使用下方docker-compose.headed.yml。 -
自动推送新版 Flow 登录态的浏览器扩展:Flow2API-Token-Updater。
# 克隆项目
git clone https://github.com/TheSmallHanCat/flow2api.git
cd flow2api
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f说明:Compose 已默认挂载
./tmp:/app/tmp。如果把缓存超时设为0,语义是“不自动过期删除”;若希望容器重建后仍保留缓存文件,也需要保留这个tmp挂载。
# 使用 WARP 代理启动
docker-compose -f docker-compose.proxy.yml up -d
# 查看日志
docker-compose -f docker-compose.proxy.yml logs -f适用于你有虚拟化桌面需求、希望在容器里启用有头浏览器打码的场景。
该模式默认启动Xvfb + Fluxbox实现容器内部可视化,并设置ALLOW_DOCKER_HEADED_CAPTCHA=true。
仅开放应用端口,不提供任何远程桌面连接端口。personal内置浏览器现在默认按有头模式启动;如需临时切回无头,可额外设置环境变量PERSONAL_BROWSER_HEADLESS=true。
# 启动有头模式(首次建议带 --build)
docker compose -f docker-compose.headed.yml up -d --build
# 查看日志
docker compose -f docker-compose.headed.yml logs -f- API 端口:
8000 - 进入管理后台后,将验证码方式设为
browser或personal
# 克隆项目
git clone https://github.com/TheSmallHanCat/flow2api.git
cd flow2api
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 启动服务
python main.py服务启动后,访问管理后台: **http://localhost:8000**,首次登录后请立即修改密码!
- 用户名:
admin - 密码:
admin
GET /health:公开健康检查,返回服务是否存活、活跃 Token 数、即将过期 Token 数、已过期 Token 数、429 禁用数等摘要GET /metrics:Prometheus 指标接口GET /api/tokens:管理接口,返回at_expires、at_expired、at_expiring_within_1h、ban_reason、consecutive_error_count等 Token 状态
Prometheus 可直接抓 /metrics。如果部署到 Kubernetes,建议只在集群内抓取,并在 Ingress/Gateway 层单独限制 /metrics 的外部访问。
访问 http://localhost:8000/test 可打开内置的模型测试页面,支持:
- 按分类浏览所有可用模型(图片生成、文/图生视频、多图视频、视频放大等)
- 输入提示词一键测试,流式显示生成进度
- 图生图 / 图生视频场景支持上传图片
- 生成完成后直接预览图片或视频
当前 /v1/models 与 Gemini /models 公开以下 15 个图片模型。旧图片名称继续兼容,但不再出现在模型列表中。
| 当前公开名称 | 分辨率 | 比例 |
|---|---|---|
gemini-3.1-flash-image-landscape |
默认 | 横屏 |
gemini-3.1-flash-image-portrait |
默认 | 竖屏 |
gemini-3.1-flash-image-square |
默认 | 方图 |
gemini-3.1-flash-image-four-three |
默认 | 横屏 4:3 |
gemini-3.1-flash-image-three-four |
默认 | 竖屏 3:4 |
gemini-3.1-flash-image-landscape-2k |
2K | 横屏 |
gemini-3.1-flash-image-portrait-2k |
2K | 竖屏 |
gemini-3.1-flash-image-square-2k |
2K | 方图 |
gemini-3.1-flash-image-four-three-2k |
2K | 横屏 4:3 |
gemini-3.1-flash-image-three-four-2k |
2K | 竖屏 3:4 |
gemini-3.1-flash-image-landscape-4k |
4K | 横屏 |
gemini-3.1-flash-image-portrait-4k |
4K | 竖屏 |
gemini-3.1-flash-image-square-4k |
4K | 方图 |
gemini-3.1-flash-image-four-three-4k |
4K | 横屏 4:3 |
gemini-3.1-flash-image-three-four-4k |
4K | 竖屏 3:4 |
当前 /v1/models 与 Gemini /models 只公开 Flow 现行模型族。旧下划线模型名继续兼容,但不再出现在模型列表中。
| 当前公开名称 | 上游模型族 | 能力 |
|---|---|---|
veo-3.1-lite / veo-3.1-fast / veo-3.1-quality / omni-1.1-flash |
当前默认模型 | 8 秒横屏文生视频 |
veo-3.1-lite-{4,6,8}s-{landscape,portrait} |
Veo 3.1 - Lite | 文生视频 |
veo-3.1-fast-{4,6,8}s-{landscape,portrait} |
Veo 3.1 - Fast | 文生视频 |
veo-3.1-quality-{4,6,8}s-{landscape,portrait} |
Veo 3.1 - Quality | 文生视频 |
omni-1.1-flash-{4,6,8,10}s-{landscape,portrait} |
Omni 1.1 Flash (abra) |
文生/参考图视频 |
veo-3.1-{lite,fast,quality}-i2v-{4,6}s-{landscape,portrait} |
Veo 3.1 | 首帧/首尾帧视频 |
veo-3.1-{lite,fast}-r2v-8s-{landscape,portrait} |
Veo 3.1 | 多参考图视频 |
veo-3.1-{lite,fast,quality}-extend-8s-{landscape,portrait} |
Veo 3.1 | 视频续写 |
表格中的花括号表示任选其中一个值。例如 veo-3.1-fast-{4,6,8}s-{landscape,portrait} 包含 4/6/8 秒与横屏/竖屏组合。
Omni 1.1 Flash 同时支持文生视频和参考图视频。调用方使用同一组模型名,服务会根据请求中是否包含图片自动选择生成模式:
omni-1.1-flash是omni-1.1-flash-8s-landscape的默认别名。- 完整模型名为
omni-1.1-flash-{4,6,8,10}s-{landscape,portrait},可选择 4、6、8、10 秒以及横屏或竖屏。 - 仅传入文本时使用文生视频模式;传入 1–3 张
image_url图片时使用参考图视频模式。 - 时长和画面方向由模型名指定,无需额外传入同名参数。
参考图视频请求示例:
{
"model": "omni-1.1-flash-8s-landscape",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "让画面中的人物自然转身并看向镜头" },
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<参考图base64>"
}
}
]
}
],
"stream": true
}| 模型名称 | 说明 | 尺寸 |
|---|---|---|
veo_3_1_t2v_fast_portrait |
文生视频 | 竖屏 |
veo_3_1_t2v_fast_landscape |
文生视频 | 横屏 |
veo_3_1_t2v_fast_portrait_ultra |
文生视频 | 竖屏 |
veo_3_1_t2v_fast_ultra |
文生视频 | 横屏 |
veo_3_1_t2v_fast_portrait_ultra_relaxed |
文生视频 | 竖屏 |
veo_3_1_t2v_fast_ultra_relaxed |
文生视频 | 横屏 |
veo_3_1_t2v_portrait |
文生视频 | 竖屏 |
veo_3_1_t2v_landscape |
文生视频 | 横屏 |
veo_3_1_t2v_landscape_4s |
文生视频 4秒 | 横屏 |
veo_3_1_t2v_portrait_4s |
文生视频 4秒 | 竖屏 |
veo_3_1_t2v_landscape_6s |
文生视频 6秒 | 横屏 |
veo_3_1_t2v_portrait_6s |
文生视频 6秒 | 竖屏 |
veo_3_1_t2v_fast_landscape_4s |
文生视频 Fast 4秒 | 横屏 |
veo_3_1_t2v_fast_portrait_4s |
文生视频 Fast 4秒 | 竖屏 |
veo_3_1_t2v_fast_landscape_6s |
文生视频 Fast 6秒 | 横屏 |
veo_3_1_t2v_fast_portrait_6s |
文生视频 Fast 6秒 | 竖屏 |
veo_3_1_t2v_lite_portrait |
文生视频 Lite | 竖屏 |
veo_3_1_t2v_lite_landscape |
文生视频 Lite | 横屏 |
veo_3_1_t2v_lite_4s_portrait |
文生视频 Lite 4秒 | 竖屏 |
veo_3_1_t2v_lite_4s_landscape |
文生视频 Lite 4秒 | 横屏 |
veo_3_1_t2v_lite_6s_portrait |
文生视频 Lite 6秒 | 竖屏 |
veo_3_1_t2v_lite_6s_landscape |
文生视频 Lite 6秒 | 横屏 |
📸 支持1-2张图片:1张作为首帧,2张作为首尾帧
💡 自动适配:系统会根据图片数量自动选择对应的 model_key
- 单帧模式(1张图):使用首帧生成视频
- 双帧模式(2张图):使用首帧+尾帧生成过渡视频
veo_3_1_i2v_lite_*仅支持 1 张 首帧图片veo_3_1_interpolation_lite_*仅支持 2 张 首尾帧图片
| 模型名称 | 说明 | 尺寸 |
|---|---|---|
veo_3_1_i2v_s_fast_portrait_fl |
图生视频 | 竖屏 |
veo_3_1_i2v_s_fast_fl |
图生视频 | 横屏 |
veo_3_1_i2v_s_fast_portrait_ultra_fl |
图生视频 | 竖屏 |
veo_3_1_i2v_s_fast_ultra_fl |
图生视频 | 横屏 |
veo_3_1_i2v_s_fast_portrait_ultra_relaxed |
图生视频 | 竖屏 |
veo_3_1_i2v_s_fast_ultra_relaxed |
图生视频 | 横屏 |
veo_3_1_i2v_s_portrait |
图生视频 | 竖屏 |
veo_3_1_i2v_s_landscape |
图生视频 | 横屏 |
veo_3_1_i2v_s_landscape_4s |
图生视频 4秒 | 横屏 |
veo_3_1_i2v_s_portrait_4s |
图生视频 4秒 | 竖屏 |
veo_3_1_i2v_s_landscape_6s |
图生视频 6秒 | 横屏 |
veo_3_1_i2v_s_portrait_6s |
图生视频 6秒 | 竖屏 |
veo_3_1_i2v_s_fast_landscape_4s_fl |
图生视频 Fast 4秒 | 横屏 |
veo_3_1_i2v_s_fast_portrait_4s_fl |
图生视频 Fast 4秒 | 竖屏 |
veo_3_1_i2v_s_fast_landscape_6s_fl |
图生视频 Fast 6秒 | 横屏 |
veo_3_1_i2v_s_fast_portrait_6s_fl |
图生视频 Fast 6秒 | 竖屏 |
veo_3_1_i2v_lite_portrait |
图生视频 Lite(仅首帧) | 竖屏 |
veo_3_1_i2v_lite_landscape |
图生视频 Lite(仅首帧) | 横屏 |
veo_3_1_i2v_lite_4s_portrait |
图生视频 Lite 4秒(仅首帧) | 竖屏 |
veo_3_1_i2v_lite_4s_landscape |
图生视频 Lite 4秒(仅首帧) | 横屏 |
veo_3_1_i2v_lite_6s_portrait |
图生视频 Lite 6秒(仅首帧) | 竖屏 |
veo_3_1_i2v_lite_6s_landscape |
图生视频 Lite 6秒(仅首帧) | 横屏 |
veo_3_1_interpolation_lite_portrait |
图生视频 Lite(首尾帧过渡) | 竖屏 |
veo_3_1_interpolation_lite_landscape |
图生视频 Lite(首尾帧过渡) | 横屏 |
veo_3_1_interpolation_lite_4s_portrait |
图生视频 Lite 4秒(首尾帧过渡) | 竖屏 |
veo_3_1_interpolation_lite_4s_landscape |
图生视频 Lite 4秒(首尾帧过渡) | 横屏 |
veo_3_1_interpolation_lite_6s_portrait |
图生视频 Lite 6秒(首尾帧过渡) | 竖屏 |
veo_3_1_interpolation_lite_6s_landscape |
图生视频 Lite 6秒(首尾帧过渡) | 横屏 |
🖼️ 支持多张图片
2026-03-06 更新
- 已同步上游新版
R2V视频请求体textInput已切换为structuredPrompt.parts- 顶层新增
mediaGenerationContext.batchId- 顶层新增
useV2ModelConfig: true- 横屏 / 竖屏
R2V模型共用同一套新版请求体- 横屏
R2V的上游videoModelKey已切换为*_landscape形式- 根据当前上游协议,
referenceImages当前最多传 3 张
| 模型名称 | 说明 | 尺寸 |
|---|---|---|
veo_3_1_r2v_fast_portrait |
图生视频 | 竖屏 |
veo_3_1_r2v_fast_landscape |
图生视频 | 横屏 |
veo_3_1_r2v_fast_portrait_ultra |
图生视频 | 竖屏 |
veo_3_1_r2v_fast_landscape_ultra |
图生视频 | 横屏 |
veo_3_1_r2v_fast_portrait_ultra_relaxed |
图生视频 | 竖屏 |
veo_3_1_r2v_fast_landscape_ultra_relaxed |
图生视频 | 横屏 |
这些模型不是直接调用上游 upsampler key,而是先用对应的 Veo 3.1 普通模型生成视频,再提交 1080P/4K 放大请求。
| 模型名称 | 说明 | 输出 |
|---|---|---|
veo_3_1_t2v_landscape_4k |
文生视频放大 | 4K |
veo_3_1_t2v_portrait_4k |
文生视频放大 | 4K |
veo_3_1_t2v_landscape_1080p |
文生视频放大 | 1080P |
veo_3_1_t2v_portrait_1080p |
文生视频放大 | 1080P |
veo_3_1_t2v_landscape_4s_4k |
文生视频 4秒放大 | 4K |
veo_3_1_t2v_portrait_4s_4k |
文生视频 4秒放大 | 4K |
veo_3_1_t2v_landscape_4s_1080p |
文生视频 4秒放大 | 1080P |
veo_3_1_t2v_portrait_4s_1080p |
文生视频 4秒放大 | 1080P |
veo_3_1_t2v_landscape_6s_4k |
文生视频 6秒放大 | 4K |
veo_3_1_t2v_portrait_6s_4k |
文生视频 6秒放大 | 4K |
veo_3_1_t2v_landscape_6s_1080p |
文生视频 6秒放大 | 1080P |
veo_3_1_t2v_portrait_6s_1080p |
文生视频 6秒放大 | 1080P |
veo_3_1_t2v_fast_portrait_4k |
文生视频放大 | 4K |
veo_3_1_t2v_fast_4k |
文生视频放大 | 4K |
veo_3_1_t2v_fast_portrait_ultra_4k |
文生视频放大 | 4K |
veo_3_1_t2v_fast_ultra_4k |
文生视频放大 | 4K |
veo_3_1_t2v_fast_portrait_1080p |
文生视频放大 | 1080P |
veo_3_1_t2v_fast_1080p |
文生视频放大 | 1080P |
veo_3_1_t2v_fast_portrait_ultra_1080p |
文生视频放大 | 1080P |
veo_3_1_t2v_fast_ultra_1080p |
文生视频放大 | 1080P |
veo_3_1_i2v_s_fast_portrait_ultra_fl_4k |
图生视频放大 | 4K |
veo_3_1_i2v_s_fast_ultra_fl_4k |
图生视频放大 | 4K |
veo_3_1_i2v_s_fast_portrait_ultra_fl_1080p |
图生视频放大 | 1080P |
veo_3_1_i2v_s_fast_ultra_fl_1080p |
图生视频放大 | 1080P |
veo_3_1_i2v_s_landscape_4k |
图生视频放大 | 4K |
veo_3_1_i2v_s_portrait_4k |
图生视频放大 | 4K |
veo_3_1_i2v_s_landscape_1080p |
图生视频放大 | 1080P |
veo_3_1_i2v_s_portrait_1080p |
图生视频放大 | 1080P |
veo_3_1_i2v_s_landscape_4s_4k |
图生视频 4秒放大 | 4K |
veo_3_1_i2v_s_portrait_4s_4k |
图生视频 4秒放大 | 4K |
veo_3_1_i2v_s_landscape_4s_1080p |
图生视频 4秒放大 | 1080P |
veo_3_1_i2v_s_portrait_4s_1080p |
图生视频 4秒放大 | 1080P |
veo_3_1_i2v_s_landscape_6s_4k |
图生视频 6秒放大 | 4K |
veo_3_1_i2v_s_portrait_6s_4k |
图生视频 6秒放大 | 4K |
veo_3_1_i2v_s_landscape_6s_1080p |
图生视频 6秒放大 | 1080P |
veo_3_1_i2v_s_portrait_6s_1080p |
图生视频 6秒放大 | 1080P |
veo_3_1_r2v_fast_portrait_ultra_4k |
多图视频放大 | 4K |
veo_3_1_r2v_fast_landscape_ultra_4k |
多图视频放大 | 4K |
veo_3_1_r2v_fast_portrait_ultra_1080p |
多图视频放大 | 1080P |
veo_3_1_r2v_fast_landscape_ultra_1080p |
多图视频放大 | 1080P |
除了下方
OpenAI-compatible示例,服务也支持 Gemini 官方格式:
POST /v1beta/models/{model}:generateContentPOST /models/{model}:generateContentPOST /v1beta/models/{model}:streamGenerateContentPOST /models/{model}:streamGenerateContentGemini 官方格式支持以下认证方式:
Authorization: Bearer <api_key>x-goog-api-key: <api_key>?key=<api_key>Gemini 官方图片请求体已兼容:
systemInstructioncontents[].parts[].textcontents[].parts[].inlineDatacontents[].parts[].fileData.fileUrigenerationConfig.responseModalitiesgenerationConfig.imageConfig.aspectRatiogenerationConfig.imageConfig.imageSize
已使用真实 Token 实测通过。 如需流式返回,可将路径替换为
:streamGenerateContent?alt=sse。
curl -X POST "http://localhost:8000/models/gemini-3.1-flash-image:generateContent" \
-H "x-goog-api-key: han1234" \
-H "Content-Type: application/json" \
-d '{
"systemInstruction": {
"parts": [
{
"text": "Return an image only."
}
]
},
"contents": [
{
"role": "user",
"parts": [
{
"text": "一颗放在木桌上的红苹果,棚拍光线,极简背景"
}
]
}
],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"aspectRatio": "1:1",
"imageSize": "1K"
}
}
}'curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-landscape",
"messages": [
{
"role": "user",
"content": "一只可爱的猫咪在花园里玩耍"
}
],
"stream": true
}'curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-landscape",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "将这张图片变成水彩画风格"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<base64_encoded_image>"
}
}
]
}
],
"stream": true
}'curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-8s-landscape",
"messages": [
{
"role": "user",
"content": "一只小猫在草地上追逐蝴蝶"
}
],
"stream": true
}'curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-i2v-4s-landscape",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "从第一张图过渡到第二张图"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<首帧base64>"
}
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<尾帧base64>"
}
}
]
}
],
"stream": true
}'
R2V会由服务端自动组装新版视频请求体,调用方仍然使用 OpenAI 兼容输入即可。 服务端会将横屏R2V自动映射到最新的*_landscape上游模型键。 当前最多传 3 张参考图。
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer han1234" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-r2v-8s-portrait",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "以三张参考图的人物和场景为基础,生成一段镜头平滑推进的竖屏视频"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64/<参考图1base64>"
}
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64/<参考图2base64>"
}
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64/<参考图3base64>"
}
}
]
}
],
"stream": true
}'本项目采用 MIT 许可证。详见 LICENSE 文件。
- PearNoDec 提供的YesCaptcha打码方案
- raomaiping 提供的无头打码方案 感谢所有贡献者和使用者的支持!
- 提交 Issue:GitHub Issues
⭐ 如果这个项目对你有帮助,请给个 Star!