视频与图片生成 API 文档
本页只覆盖 multimodal-VBL 的公开视频与图片接口。视频请求走 multimodal.vibelearning.top,图片请求走 image1.vibelearning.top。始终使用返回的本地 task_id 和本地 /content,不要自己拼上游地址。
快速开始
视频是异步任务。图片按家族走同步或异步。最短路径如下。
- 创建令牌并选分组控制台 → 令牌管理。Banana 用
banana;web-image2 用image-plus系列;adobe-image2 用原生 4k。视频分组以创建页实时选项为准。 - 确认域名视频发到
https://multimodal.vibelearning.top/v1。图片发到https://image1.vibelearning.top。两个域名不混用。 - 先跑通一条请求视频按下方公开视频模型示例提交;图片用 Banana 或
gpt-image-2示例。占位令牌换成自己的 Key。
| 需求 | 路由 | 行为 |
|---|---|---|
| 生成视频 | POST /v1/videos | 返回本地 task ID。后续轮询,再从同一公开域名下载。 |
| 查询视频状态 | GET /v1/videos/{task_id} | 返回当前任务状态。 |
| 下载视频成品 | GET /v1/videos/{task_id}/content | 需要同一个 Bearer token。 |
| Banana 文生图(原生) | POST /v1beta/models/{model}:generateContent | 从 candidates[0].content.parts 读 inlineData。 |
| Banana 文生图(兼容) | POST /v1/chat/completions | 从 choices[0].message.content 读 data:image。 |
| web-image2 | POST /v1/images/generations 或 /edits | image-plus 系列 Key。模型名 gpt-image-2。异步图生图未开放。 |
| adobe-image2 | POST /v1/images/generations 或 /edits | 原生 4k Key。传 Adobe size。异步图生图已开放。 |
multimodal.vibelearning.top。图片家族走 image1.vibelearning.top。不要把 Banana 模型发到 /v1/images/generations。
注册与令牌
站点名 multimodal-VBL。2026-09-02 /api/status:register_enabled = true,email_verification = false,quota_display_type = USD,password_login_enabled = true。
注册
控制台开放注册。邮箱验证当前未开启。
令牌
控制台 → 令牌管理 → 创建。分组决定图片家族和可用模型。
与主站隔离
本站 Key 不能拿到 api.vibelearning.top 使用。主站 NewAPI 文档是另一页。
Authorization: Bearer sk-your-key。Key 若已带 sk- 前缀,原样放入,不要在客户端去掉前缀。
域名职责
客户端地址和请求路径是两回事。文档站、视频 API、图片 API 不共用同一套路径。
| 域名 | 职责 | 客户端怎么用 |
|---|---|---|
multimodal.vibelearning.top | 公开视频 API 与文档站 | 承载 /docs、/pricing 和全部 /v1/videos/*。 |
image1.vibelearning.top | 公开图片 API | 文生图 / 图生图发到该域名。控制台公告要求 image2 走这个地址,避免超时。 |
https://image1.vibelearning.top/docs 与 https://multimodal.vibelearning.top/docs 是同一份文档,不是两套合同。
令牌分组
创建令牌时选择的分组决定 Key 对应的模型家族和渠道合同。模型名、倍率与是否上架以令牌创建页和价格页为准。
下列是当前文档需要说明的主要分组;sale / vip 变体以令牌创建页为准。
| 分组 | 倍率 | 说明 |
|---|---|---|
banana | 1 | nanobanana 分组,支持 gemini-3.1-flash-image-preview、gemini-3-pro-image-preview。 |
image2-plus | 0.04 | web 逆向 image2/2.5 分组,支持超分 4K。 |
原生 4k | 0.1 | adobe image2/2.5。 |
az-image | 1.8 | azure 云厂商直出原生 4K。 |
oai-image | 0.3 | OpenAI 特价渠道,参考图传 URL。 |
oai-image-福利 | 0.2 | 支持 6 张参考图,非标准参数。 |
adobe-逆向-福利 | 0.07 | adobe image2/2.5。 |
grok | 0.4 | grok-image、grok-video 分组。 |
/v1/models 返回为准;不要仅凭上游模型名猜测可用性。
先选择视频模型
当前本地预览只保留 Grok 视频;是否对你的 Key 开放,以价格页和令牌模型列表为准。
Grok Video
保留 grok-imagine-video 与 grok-imagine-video-1.5-preview。分别覆盖文生/图生,以及图生/首尾帧。
视频接口
视频不是一次同步请求直接返回 MP4。客户端期待 POST /v1/videos 吐文件,这个接法是错的。
请求地址
所有公开视频模型统一:https://multimodal.vibelearning.top/v1。
调用流程
- 调用
POST /v1/videos提交任务。 - 保存返回的本地
task_id。 - 轮询
GET /v1/videos/{task_id},直到终态。 - 成功后再用
GET /v1/videos/{task_id}/content下载。
提交视频任务
curl --request POST \
--url https://multimodal.vibelearning.top/v1/videos \
--header 'Authorization: Bearer sk-your-key' \
--header 'Content-Type: application/json' \
--data '{
"model": "YOUR_VIDEO_MODEL",
"prompt": "Describe the shot, subject motion, and camera movement."
}'典型创建回包:
{
"id": "task_xxx",
"task_id": "task_xxx",
"status": "queued",
"progress": 20,
"query_endpoint": "/v1/videos/task_xxx"
}轮询任务
curl --request GET \ --url https://multimodal.vibelearning.top/v1/videos/task_xxx \ --header 'Authorization: Bearer sk-your-key'
典型成功回包:
{
"completed": true,
"failed": false,
"id": "task_xxx",
"progress": 100,
"query_endpoint": "/v1/videos/task_xxx",
"status": "completed",
"task_id": "task_xxx",
"video_url": "https://multimodal.vibelearning.top/v1/videos/task_xxx/content"
}下载视频成品
curl --request GET \ --url https://multimodal.vibelearning.top/v1/videos/task_xxx/content \ --header 'Authorization: Bearer sk-your-key' \ --output result.mp4
视频请求体
卡住的通常不是路由,而是字段怎么写。使用模型列表里的公开名,不要猜别名。
| 字段 | 含义 | 说明 |
|---|---|---|
model | 公开视频模型名 | 例如 grok-imagine-video、grok-imagine-video-1.5-preview。 |
prompt | 主提示词 | 文生必填。参考图生成时通常也保留。 |
image_url | 单张参考图 URL | Grok 1.5 preview 图生视频的首选字段。 |
duration | 时长,秒 | 不要和 seconds 同时传。 |
aspect_ratio | 画幅 | 常见 16:9、9:16、1:1。 |
resolution | 输出分辨率 | 只传该模型实际支持的档位,并与 size 一致。 |
size | 目标宽高 | 应与 ratio / resolution 保持一致。 |
generate_audio | 是否生成音频 | 只有产品为该模型开放音频时再对外暴露。 |
视频接口说明
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/videos | 创建任务。返回本地 task_id,不是 MP4。 |
| GET | /v1/videos/{task_id} | 查询状态。持续轮询直到终态。 |
| GET | /v1/videos/{task_id}/content | 下载成品。带同一个 Bearer token,任务成功后再调。 |
Grok 视频
当前 Grok 分组公开两个视频模型,都走同一公开异步路由。模型列表以令牌的 /v1/models 返回为准。
| 项目 | 值 |
|---|---|
| 域名 | https://multimodal.vibelearning.top/v1 |
| 模型 | grok-imagine-video、grok-imagine-video-1.5-preview |
grok-imagine-video 文生与图生均完成;grok-imagine-video-1.5-preview 图生与首尾帧均完成。测试使用 480p、5 秒和公网图片直链。
grok-imagine-video 支持文生和图生;grok-imagine-video-1.5-preview 当前按图生和首尾帧使用,未把它作为文生模型公开。官方 xAI 当前契约使用 grok-imagine-video-1.5,本站公开名仍以令牌模型列表为准。
请求示例
文生视频:
{
"model": "grok-imagine-video",
"prompt": "A tiger running across a grassland, cinematic daylight.",
"duration": 10,
"aspect_ratio": "16:9",
"resolution": "720p"
}1.5 preview 图生:
{
"model": "grok-imagine-video-1.5-preview",
"prompt": "Animate the character with subtle blinking, a slight head turn, and gentle hair movement. Keep the framing stable and cinematic.",
"image_url": "https://example.com/input.jpg",
"duration": 10,
"aspect_ratio": "16:9",
"resolution": "720p"
}首尾帧图生视频
当前公开兼容层使用 image_url 固定首帧,使用 last_frame_url 固定尾帧。该写法已用 grok-imagine-video-1.5-preview 实测完成。
curl -X POST "https://multimodal.vibelearning.top/v1/videos" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5-preview",
"prompt": "Create a smooth transition from the opening frame to the closing frame.",
"image_url": "https://cdn.example.com/first-frame.jpg",
"last_frame_url": "https://cdn.example.com/last-frame.jpg",
"duration": 5,
"aspect_ratio": "1:1",
"resolution": "480p"
}'image: {"url": "..."} 和 last_frame: {"url": "..."};multimodal 公共入口将上述兼容字段转换后转发。输入图片必须是服务端可直接访问的公网图片直链。状态、返回与下载
所有视频模型共用这套处理。客户端把不同模型的状态归成三类即可。
| 类型 | 等价状态 | 动作 |
|---|---|---|
| 处理中 | queued pending processing in_progress running | 继续轮询。可能长时间停在 queued 且进度固定为约 20,仍可能完成。 |
| 成功 | succeeded completed success | 改调 /content。 |
| 失败 | failed error cancelled | 停止轮询,向用户返回失败。 |
返回与下载规则
- 先保存
task_id。成功后使用返回的video_url,或/v1/videos/{task_id}/content。 - 视频用
multimodal.vibelearning.top,图片用image1.vibelearning.top。 - 不要自己拼上游地址。
- 把
/content贴进浏览器会失败:标签页不会带 Bearer token。 task_id是查询唯一键,不需要感知上游任务号。
先选择图片家族
Banana、web-image2、adobe-image2 是 image1.vibelearning.top 上并列的三套合同。两个 image2 家族都传 model=gpt-image-2;走哪套由 Key 分组决定。
Banana
分组 banana。走 generateContent 或 Chat Completions。不要打 /v1/images/generations。
web-image2
image-plus 系列。同步文生 / 图生;异步只开放文生图。
adobe-image2
分组 原生 4k。必须用 Adobe 尺寸。异步图生图已开放。不支持 mask。
https://image1.vibelearning.top。Banana 参考 Gemini 官方图片文档。图片不要走 chat/response 的空返回路径(Banana 的 Chat Completions 是已验证例外)。IMAGE2 不允许暴力、血腥、未成年、NSFW、侵权或恐怖活动相关意图;ComfyUI 不要用 SD 负面提示词。
Banana
挂在 banana 分组上的 Gemini 图片模型。已验证两条公开路径:原生 generateContent,以及 OpenAI 兼容 Chat Completions。
not supported model for image generation / only imagen models are supported。
| 模型 | 定位 | 公开单价 | 价格接口 |
|---|---|---|---|
gemini-3.1-flash-image-preview | 默认,更快更便宜 | $0.12 / 张 | 2026-09-02 model_price = 0.12,分组 banana / banana-vip |
gemini-3-pro-image-preview | 更高质量 | $0.15 / 张 | model_price = 0.15,同上 |
已验证公开路径
| 路由 | 状态 | 如何取图 |
|---|---|---|
POST /v1beta/models/{model}:generateContent | 已验证 | 读 candidates[0].content.parts 的 inlineData / inline_data |
POST /v1/chat/completions | 已验证 | 读 choices[0].message.content 里的 data:image |
POST /v1/images/generations | Banana 不支持 | Imagen 的 predict 路径 |
请求地址:https://image1.vibelearning.top。两条路径都用 Bearer。保持 generationConfig.responseModalities 为 TEXT 加 IMAGE。模型名不要去掉 -preview。
原生 generateContent
curl -X POST "https://image1.vibelearning.top/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "A single yellow banana on a white table, studio lighting, photorealistic. Square 1:1 composition."}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'OpenAI 兼容 Chat Completions
网关会转成原生 generateContent。图片在聊天消息里返回,通常是 data:image/...;base64,...。
curl -X POST "https://image1.vibelearning.top/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{
"role": "user",
"content": "A single yellow banana on a white table, studio lighting, photorealistic. Square 1:1 composition."
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
},
"stream": false
}'图生图
继续走上面两条路径。Banana 不要改用 /v1/images/edits。
原生:提示词放 text part,每张参考图一个 inline_data part。
curl -X POST "https://image1.vibelearning.top/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "Keep the same subject and restyle it as a clean product poster."},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "BASE64_IMAGE"
}
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'OpenAI 兼容:提示词放 text part,每张参考图一个 image_url part。
curl -X POST "https://image1.vibelearning.top/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Keep the same subject and restyle it as a clean product poster."},
{"type": "image_url", "image_url": {"url": "https://example.com/reference.jpg"}}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
},
"stream": false
}'image_url 必须是从服务端可直接下载的公网图片直链。推荐使用首次请求返回 HTTP 200 且 Content-Type 为图片类型的地址;需要登录、Cookie、Referer、验证码或人机验证的 URL 可能失败。客户端规则
- 原生:读
candidates[0].content.parts,兼容inlineData与inline_data,解码 base64data。 - 兼容:读
choices[0].message.content。可能是字符串或 parts 数组,抽出全部data:image。 - 读取超时至少 60 秒。成功请求常见 15 秒内返回,高峰更慢。
451 Content blocked是内容安全拦截,不是渠道故障。改提示词,不要原样重试。
web-image2
gpt-image-2 的 image-plus 系列,包括 image2-plus、image2-plus-vip、image-plus-bb。Adobe 4K 或异步图生图见 adobe-image2。
普通调用优先同步接口。只有客户端不方便保持长 HTTP 时,再走异步任务。
请求地址:https://image1.vibelearning.top/v1。使用 image-plus 系列 Key。模型名仍是 gpt-image-2。2026-09-02 价格接口 gpt-image-2 的 model_price = 1,再乘分组倍率。
公开路由
| 方法 | 路径 | 公开支持 | 用法 |
|---|---|---|---|
| POST | /v1/images/generations | 支持 | JSON。在同一响应里读 data。 |
| POST | /v1/images/edits | 支持 | multipart。同一响应读 data。 |
| POST | /v1/images/generations/tasks | 仅文生图 | JSON 与同步相同。先返回 task_id。 |
| GET | /v1/images/generations/tasks/{task_id} | 支持 | 同一个 Bearer。只能读自己用户下的任务。 |
| POST | /v1/images/edits/tasks | 当前未开放 | 改用同步 multipart /v1/images/edits。 |
| GET | /v1/images/edits/tasks/{task_id} | 当前未开放 | 没有可轮询的图生图任务。 |
文生图
curl -X POST "https://image1.vibelearning.top/v1/images/generations" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean sci-fi product poster, minimal composition, high detail",
"size": "1024x1024",
"n": 1
}'异步文生图
curl -X POST "https://image1.vibelearning.top/v1/images/generations/tasks" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean sci-fi product poster, minimal composition, high detail",
"size": "1024x1024",
"n": 1
}'创建立即返回本地任务 ID。完成后 status 变为 completed,response 里是与同步一致的 OpenAI 兼容图片响应。
curl -X GET "https://image1.vibelearning.top/v1/images/generations/tasks/task_xxx" \ -H "Authorization: Bearer sk-your-key"
单图 / 多图编辑
curl -X POST "https://image1.vibelearning.top/v1/images/edits" \ -H "Authorization: Bearer sk-your-key" \ -F "model=gpt-image-2" \ -F "prompt=请基于参考图做高精度重绘" \ -F "size=1024x1024" \ -F "n=1" \ -F "image=@./reference.png"
curl -X POST "https://image1.vibelearning.top/v1/images/edits" \ -H "Authorization: Bearer sk-your-key" \ -F "model=gpt-image-2" \ -F "prompt=Use all reference images together to create one cohesive poster." \ -F "size=1024x1024" \ -F "n=1" \ -F "image[]=@./ref1.png" \ -F "image[]=@./ref2.png" \ -F "image[]=@./ref3.png"
公网 URL 图生图
除 multipart 文件上传外,当前 image1 网关已验证支持通过公网图片 URL 进行图生图。适用分组包括 image2-plus、原生 4k 和 adobe-逆向-福利。
curl -X POST "https://image1.vibelearning.top/v1/images/edits" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Keep the subject and restyle it as a clean product poster.",
"size": "1024x1024",
"n": 1,
"images": [
{
"image_url": "https://cdn.example.com/reference.jpg"
}
]
}'HTTP 200 和图片类型的 Content-Type,不能依赖登录、Cookie、Referer、验证码或人机验证。浏览器能够打开,不代表服务端一定能够读取;不要使用 localhost、内网地址或仅本机可访问的 URL。gpt-image-2 可能返回 b64_json 或图片 URL,客户端应兼容两种形式。
输出格式
| 参数 | 含义 | 说明 |
|---|---|---|
output_format | 实际图片格式 | png / jpeg / webp |
response_format | 结果返回形式 | url 或 b64_json。只控制返回形式,不单独决定底层格式。 |
读取超时要设够长。重试前先确认上一条请求是否已经产生可计费结果。
adobe-image2
分组 原生 4k。模型名仍是 gpt-image-2。文档单价 ¥0.10 / 张。必须传 Adobe 的 size,非法尺寸直接 400。
请求地址 https://image1.vibelearning.top/v1。不要用 image-plus 系列 Key。
尺寸表
用 widthxheight 传 size。不要把 4k 写进 quality。验收看解码像素,不要只看回显 size。涉及到 1K/2K/4K 必须传正确分辨率,直接传 4k 出不了图。
| 比例 | 1K | 2K | 4K |
|---|---|---|---|
| 1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
| 5:4 | 1120x896 | 2240x1792 | 3200x2560 |
| 4:5 | 896x1120 | 1792x2240 | 2560x3200 |
| 4:3 | 1152x864 | 2304x1728 | 3264x2448 |
| 3:4 | 864x1152 | 1728x2304 | 2448x3264 |
| 3:2 | 1248x832 | 2496x1664 | 3504x2336 |
| 2:3 | 832x1248 | 1664x2496 | 2336x3504 |
| 16:9 | 1280x720 | 2560x1440 | 3840x2160 |
| 9:16 | 720x1280 | 1440x2560 | 2160x3840 |
| 21:9 | 1456x624 | 3024x1296 | 3696x1584 |
quality 取 low / medium / high。detail_level 为 1–5,会覆盖 quality。两者都不改 ¥0.10 单价。4K 读取超时至少 90 秒。
示例
curl -X POST "https://image1.vibelearning.top/v1/images/generations" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"a cinematic mountain sunrise","size":"3840x2160","quality":"high"}'curl -X POST "https://image1.vibelearning.top/v1/images/edits" \ -H "Authorization: Bearer sk-your-key" \ -F "model=gpt-image-2" \ -F "prompt=turn this photo into watercolor style" \ -F "size=2496x1664" \ -F "image=@./input.png"
curl -X POST "https://image1.vibelearning.top/v1/images/edits/tasks" \ -H "Authorization: Bearer sk-your-key" \ -F "model=gpt-image-2" \ -F "prompt=blend these images into one scene" \ -F "image[]=@./reference-a.png" \ -F "image[]=@./reference-b.png"
图生图是整体重绘,1–6 张参考图,不支持 mask。异步图生图已开放;用同一个 token 轮询 GET /v1/images/edits/tasks/{task_id},completed 后读 response.data。
Grok 图片
原站文档没有单独章节。2026-09-02 价格接口返回以下按次图片模型,分组均为 grok,端点类型 openai / openai-response。路由形态未在原文档验证,接入前先对照价格页,并用 curl 验证。
| 模型 | model_price | 备注 |
|---|---|---|
grok-imagine-image | 0.1 | 描述写明上游 $0.02/call,列表价 0.1 |
grok-imagine-image-2.0 | 0.2 | 无描述字段 |
grok-imagine-image-quality | 0.2 | 无描述字段 |
不要把这些模型的请求发到视频 /v1/videos。具体路径以控制台价格页的端点类型为准。
故障排查
先看状态码和错误原文,再对号入座。提问时提供请求时间、模型、路径、状态码、错误信息和日志 ID;令牌只保留短前后缀。
HTTP 状态码
| 状态 / 现象 | 常见原文 | 先查 |
|---|---|---|
| 400 | 非法 size、mask is not supported、字段类型错误 | Adobe 尺寸、是否传了 mask、video 是否写成字符串 |
| 401 | Invalid token / Unauthorized | Bearer 是否原样带 sk-;站点是否配错 |
| 403 | 没有权限、分组不允许 | banana / image-plus / 原生 4k 是否选对 |
| 404 | 路径不存在 | 视频域名与图片域名是否对调;Banana 是否打到 images/generations |
| 429 | 限流 | 并发、共用 Key |
| 451 | Content blocked | 改提示词,不要原样重试 |
| 超时 | 网关断开、Failed to fetch | 图片走 image1;同步超时 ≥60s,Adobe 4K ≥90s |
400 Bad Request
现象。 请求被拒绝。adobe-image2 常见非法 size,或 mask is not supported。
原因。 字段与当前家族合同不符。
处理。
- adobe-image2 只用尺寸表里的
widthxheight,不要把4k写入quality,不要传mask。 - Grok 不要同时传
seconds和duration,只保留一个数字型duration。
401 Unauthorized
现象。 401 / Invalid token。换 Key 仍失败时,优先怀疑请求没带 Authorization,或 Key 不属于本站。
原因。 网关没收到有效令牌。主站 NewAPI Key 不能打到 multimodal / image1。
处理。
- 请求头写成
Authorization: Bearer sk-xxx。已有sk-前缀时不要再剥掉。 - 令牌前后无空格。确认未过期、未被禁用。
- 用 curl 直连验证。直连成功、客户端仍 401,问题在客户端有没有把头带出去。
403 没有权限
现象。 鉴权过了,但当前分组不允许这次调用。
原因。 Banana Key 打了 gpt-image-2,或 image-plus Key 打了 Adobe 尺寸合同。
处理。 打开价格页确认模型仍存在,并核对该 Key 的分组。两个 image2 家族模型名相同,分组不同。
404 Not Found
现象。 路径不存在,或 Banana 被打到 Imagen 路由后表现为模型不支持。
处理。 视频必须是 multimodal.vibelearning.top/v1/videos。图片必须是 image1.vibelearning.top。Banana 改 generateContent 或 /v1/chat/completions。
429 Too Many Requests
现象。 限流。
处理。 降低并发,按用途拆分令牌。上游给出重置时间时等到该时刻再试,避免死循环。
451 Content blocked
现象。 Banana 返回内容安全拦截。
原因。 提示词或参考图触发安全策略,不是渠道故障。
处理。 改提示词或参考图后再发。IMAGE2 同样拦截暴力、血腥、未成年、NSFW、侵权与恐怖活动相关意图。
超时 / 连接被断开
现象。 同步图片或长任务在网关等待上限前断开。
处理。 image2 必须走 image1.vibelearning.top。Banana 超时 ≥60s,Adobe 4K ≥90s。web-image2 文生图可改异步 tasks;异步图生图请改 adobe-image2。
视频问题
创建请求没有直接返回 MP4
现象。 客户端把 POST /v1/videos 当成同步下载。
原因。 视频生成是异步任务。
处理。 提交、保存 task_id、轮询、再下载。见 三步流程。
/content 在代码里能用,浏览器打开失败
现象。 把下载地址贴进新标签页。
原因。 浏览器不会自动带 Bearer token。
处理。 通过鉴权客户端下载,不要让用户直接打开裸链接。
客户看到了上游域名或上游任务 ID
原因。 接入层把上游信息透出。
处理。 对外只展示本地 task_id 和公开路由。
grok-imagine-video-1.5-preview 报不支持文生
现象。 Text-to-video is not supported for this model.
处理。 补上 image_url,把它当图生视频模型用。
上游提示重复 duration
原因。 seconds 和 duration 同时到达把两者视为别名的兼容接口。
处理。 只使用一个数字型 duration。
图片问题
image is required
现象。 图生图没有合法 multipart 图片字段。
处理。 单图用 image,多图用重复的 image[]。文件写法用 @./reference.png,避免页面把 @reference.png 改坏。
URL 输入。 如果使用公网图片 URL,改用 JSON 的 images[].image_url 结构。URL 必须能从 multimodal/image1 服务器直接下载并返回真实图片文件;不要把 URL 直接填入 multipart 的 image 字段,也不要使用顶层 image_url。
Banana 返回 not supported model for image generation
原因。 请求打到了 /v1/images/generations。
处理。 改 generateContent 或 /v1/chat/completions,并带 generationConfig.responseModalities。
adobe-image2 返回 400 或 mask is not supported
原因。 用了 image-plus 的尺寸、把 4k 写进 quality,或传了 mask。
处理。 换 原生 4k Key,使用例如 3840x2160 的 Adobe 尺寸,不要传 mask。
图片客户端复用了视频轮询
原因。 视频任务和图片任务的结果字段不同。
处理。 图片在 status=completed 后读 response.data。视频走 /content。
web-image2 异步图生图 404
原因。 /v1/images/edits/tasks 对 web-image2 当前未开放。
处理。 同步 multipart,或改用 adobe-image2 的异步图生图。
控制台与价格
控制台
dashboard/overview。令牌、日志、绘图与任务入口以侧栏为准。
价格页
/pricing。模型、分组倍率和是否上架以该页为准。
主站 NewAPI
文本 / Claude / Codex 走 api.vibelearning.top/docs。与本站令牌、余额、域名隔离。