Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

621 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flow2API

License Python FastAPI Docker

一个功能完整的 OpenAI 兼容 API 服务,为 Flow 提供统一的接口

✨ 核心特性

  • 🎨 文生图 / 图生图
  • 🎬 文生视频 / 图生视频
  • 🎞️ 首尾帧视频
  • 🔄 AT/ST自动刷新 - AT 过期自动刷新,ST 过期时自动通过浏览器更新(personal 模式)
  • 📊 余额显示 - 实时查询和显示 VideoFX Credits
  • 🚀 负载均衡 - 多 Token 轮询和并发控制
  • 🌐 代理支持 - 支持 HTTP/SOCKS5 代理
  • 📱 Web 管理界面 - 直观的 Token 和配置管理
  • 🎨 图片生成连续对话
  • 🧩 Gemini 官方请求体兼容 - 支持 generateContent / streamGenerateContentsystemInstructioncontents.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密钥区域

  • YesCaptcha 支持在管理页切换 typeRecaptchaV3TaskProxylessRecaptchaV3TaskProxylessM1RecaptchaV3TaskProxylessM1S7RecaptchaV3TaskProxylessM1S9;当前默认推荐 M1S9,S7/S9 会强制提交 minScore 0.7/0.9。

  • 默认 docker-compose.yml 建议搭配第三方打码(yescaptcha/capmonster/ezcaptcha/capsolver)。 如需 Docker 内有头打码(browser/personal),请使用下方 docker-compose.headed.yml

  • 本地自测 remote_browser 模式时,可在宿主机运行 Node 模拟打码服务(仅验 HTTP 与鉴权,不产出真实 reCAPTCHA token):见 tools/remote-browser-mock/

  • 生产向 Agent Gateway(Flow2API → HTTP,用户 PC 通过 WebSocket 接任务):见 docs/agent-gateway.mdsrc/agent_gateway/

  • 异步任务提交与轮询(/v1/async/chat/completions/v1/jobs/{job_id}):见 docs/async-polling.md

  • Runway web-task integration is available through the admin Runway tab, runway-* models, and /v1/runway/* routes. See docs/runway.md. It includes a manifest-backed model registry, live feature sync, real Runway uploads/datasets, image/video/audio/upscale task builders, OpenAI-compatible dispatch, voices, estimates, cancel, async polling, and cache mirroring.

  • 自动更新st浏览器拓展:Flow2API-Token-Updater

Chrome Extension per-key isolation setup

When using captcha method extension, Flow2API keeps one global captcha mode but isolates workers per managed API key.

  1. Create a managed API key in admin panel (/api/admin/managed-apikeys).
  2. Set the token/account extension_route_key to a unique value (for example 9223).
  3. In Chrome extension options, set:
    • backend API key
    • same route key as the token/account
  4. Confirm in admin extension workers page (/api/admin/extension/workers) that route and managed key binding match. The server resolves managed key ID from the API key on connect.

If a managed key has no matching extension worker online, requests wait up to extension_queue_wait_timeout_seconds and then fail (no gateway fallback).

方式一:Docker 部署(推荐)

标准模式(不使用代理)

# 克隆项目
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 模式(使用代理)

# 使用 WARP 代理启动
docker-compose -f docker-compose.warp.yml up -d

# 查看日志
docker-compose -f docker-compose.warp.yml logs -f

Docker 有头打码模式(browser / personal)

适用于你有虚拟化桌面需求、希望在容器里启用有头浏览器打码的场景。
该模式默认启动 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
  • 进入管理后台后,将验证码方式设为 browserpersonal

Cloudflare Tunnel(公网 + 分离 API 与管理台域名)

在 Docker 中运行 cloudflared,用同一个内网源两个公网子域名分别对外暴露 OpenAPI(/v1/... 等)和 Web 管理台(/ + /api/...)。不拆进程:两个域名都反代到本项目的 容器内 http://<服务名>:8000

  1. Cloudflare Zero TrustNetworksTunnels 创建命名隧道,复制 cloudflared 安装命令里的 TUNNEL_TOKEN
  2. 在同一隧道下配置两条 Public hostname(示例 — 可换成自己的域名)
    • API(不开放管理台/前端):https://flow-api.prismacreative.onlinehttp://flow2api:8000
    • 管理台 + 前端(与 API 用不同子域):https://admin-flow.prismacreative.onlinehttp://flow2api:8000
      在 Docker 同网络内解析 flow2api 为应用容器;不要填主机上的 38000 等映射端口。
  3. 根目录 cp .env.example .env,写入 TUNNEL_TOKEN=...docker-compose.ymlflow2api;合并 docker-compose.agent.yml 后增加 agent-gatewayrediscloudflared同一隧道;在 Cloudflare 里为 agents.* 配置到 http://agent-gateway:9080)。FLOW2API_API_ONLY_HOSTdocker-compose.ymlflow2api。在该 API 子域上仅允许对外两类同一进程内的能力:OpenAI 兼容/v1/...,如 chat/completionsmodels)与 Gemini 风格/v1beta/models/...:generateContent:streamGenerateContent/models/... 等),以及缓存 /tmp/openapi.json/health提供网页界面、/api 管理接口与 /assets 静态资源(见 src/main.pyApiOnlyHostMiddleware)。管理台请始终使用 admin-flow.* 等未列入 FLOW2API_API_ONLY_HOST 的 hostname。可覆盖为:FLOW2API_API_ONLY_HOST=你的api子域不要在宿主机再跑一个相同 Token 的 cloudflared(一隧道一连接器)。
  4. 启动:
    docker compose -f docker-compose.yml -f docker-compose.agent.yml up -d(或加 --build 构建 agent-gateway公网隧道需合并此命令;仅本地跑应用、不要隧道与 agent:docker compose up -d 只用 docker-compose.yml
    从源码构建主应用镜像:项目根执行 docker build -t flow2api:local -f Dockerfile .,再在 compose 中将 flow2apiimage 改为 flow2api:localup
  5. 管理台在浏览器打开 admin-flow 域名;OpenAI 兼容 API 的 Base URL 使用 flow-api 域名(如 https://flow-api.prismacreative.online/v1/...)。Agent 网关公网见 docs/agent-gateway.md
  6. config/setting.toml[cache] 中设置与公网一致的 base_url(见 config/setting_example.toml 注释),例如 base_url = "https://flow-api.prismacreative.online"
  7. FLOW2API_API_ONLY_HOST环境变量中配置;默认见 docker-compose.ymlflow2apienvironmentdocker compose 会读根目录 .env

flow-api 子域仍能打开 /login 等页面: 表示当前映像未包含本仓库的 ApiOnlyHostMiddleware(例如只拉了旧版 ghcr.io/.../flow2api:latest)。需使用本仓库代码构建再部署,例如在本项目根目录执行 docker build -t flow2api:local -f Dockerfile .,在 docker-compose 里把 flow2api 服务的 image 改为 flow2api:local 后重新 up -d,并确认容器日志启动行有 API-only host(s)。也可在宿主机上 python main.py 时设置环境变量。若已用新映像仍异常,在 Cloudflare 对该子域关闭针对 HTML 的强缓存或做一次 Purge Cache,避免边缘缓存了旧的 index.html

有头打码时单独使用 docker-compose.headed.yml内已含 Cloudflare Tunnel 与 flow2api-headed):

docker compose -f docker-compose.headed.yml up -d

在 Zero Trust 里两条公网 hostname 的源地址应填 http://flow2api-headed:8000(与 docker-compose.headed.yml 中服务名一致)。

方式二:本地部署

# 克隆项目
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_expiresat_expiredat_expiring_within_1hban_reasonconsecutive_error_count 等 Token 状态

Prometheus 可直接抓 /metrics。如果部署到 Kubernetes,建议只在集群内抓取,并在 Ingress/Gateway 层单独限制 /metrics 的外部访问。

模型测试页面

访问 http://localhost:8000/test 可打开内置的模型测试页面,支持:

  • 按分类浏览所有可用模型(图片生成、文/图生视频、多图视频、视频放大等)
  • 输入提示词一键测试,流式显示生成进度
  • 图生图 / 图生视频场景支持上传图片
  • 生成完成后直接预览图片或视频

📋 支持的模型

图片生成

模型名称 说明 尺寸
gemini-2.5-flash-image-landscape 图/文生图 横屏
gemini-2.5-flash-image-portrait 图/文生图 竖屏
gemini-3.0-pro-image-landscape 图/文生图 横屏
gemini-3.0-pro-image-portrait 图/文生图 竖屏
gemini-3.0-pro-image-square 图/文生图 方图
gemini-3.0-pro-image-four-three 图/文生图 横屏 4:3
gemini-3.0-pro-image-three-four 图/文生图 竖屏 3:4
gemini-3.0-pro-image-landscape-2k 图/文生图(2K) 横屏
gemini-3.0-pro-image-portrait-2k 图/文生图(2K) 竖屏
gemini-3.0-pro-image-square-2k 图/文生图(2K) 方图
gemini-3.0-pro-image-four-three-2k 图/文生图(2K) 横屏 4:3
gemini-3.0-pro-image-three-four-2k 图/文生图(2K) 竖屏 3:4
gemini-3.0-pro-image-landscape-4k 图/文生图(4K) 横屏
gemini-3.0-pro-image-portrait-4k 图/文生图(4K) 竖屏
gemini-3.0-pro-image-square-4k 图/文生图(4K) 方图
gemini-3.0-pro-image-four-three-4k 图/文生图(4K) 横屏 4:3
gemini-3.0-pro-image-three-four-4k 图/文生图(4K) 竖屏 3:4
imagen-4.0-generate-preview-landscape 图/文生图 横屏
imagen-4.0-generate-preview-portrait 图/文生图 竖屏
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

视频生成

文生视频 (T2V - Text to Video)

⚠️ 不支持上传图片

模型名称 说明 尺寸
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_lite_portrait 文生视频 Lite 竖屏
veo_3_1_t2v_lite_landscape 文生视频 Lite 横屏
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_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秒 横屏

首尾帧模型 (I2V - Image to Video)

📸 支持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_lite_portrait 图生视频 Lite(仅首帧) 竖屏
veo_3_1_i2v_lite_landscape 图生视频 Lite(仅首帧) 横屏
veo_3_1_interpolation_lite_portrait 图生视频 Lite(首尾帧过渡) 竖屏
veo_3_1_interpolation_lite_landscape 图生视频 Lite(首尾帧过渡) 横屏
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_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_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秒(首尾帧过渡) 横屏

多图生成 (R2V - Reference Images to Video)

🖼️ 支持多张图片

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 图生视频 横屏

视频放大模型 (Upsample)

这些模型不是直接调用上游 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

📡 API 使用示例(需要使用流式)

除了下方 OpenAI-compatible 示例,服务也支持 Gemini 官方格式:

  • POST /v1beta/models/{model}:generateContent
  • POST /models/{model}:generateContent
  • POST /v1beta/models/{model}:streamGenerateContent
  • POST /models/{model}:streamGenerateContent

Gemini 官方格式支持以下认证方式:

  • Authorization: Bearer <api_key>
  • x-goog-api-key: <api_key>
  • ?key=<api_key>

Gemini 官方图片请求体已兼容:

  • systemInstruction
  • contents[].parts[].text
  • contents[].parts[].inlineData
  • contents[].parts[].fileData.fileUri
  • generationConfig.responseModalities
  • generationConfig.imageConfig.aspectRatio
  • generationConfig.imageConfig.imageSize

Gemini 官方 generateContent(文生图)

已使用真实 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_t2v_fast_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_i2v_s_fast_fl_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_r2v_fast_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 提供的无头打码方案 感谢所有贡献者和使用者的支持!

📞 联系方式


⭐ 如果这个项目对你有帮助,请给个 Star!

Star History

Star History Chart

Releases

Packages

Contributors

Languages