Multimodal

视频与图片生成 API 文档

本页只覆盖 multimodal-VBL 的公开视频与图片接口。视频请求走 multimodal.vibelearning.top,图片请求走 image1.vibelearning.top。始终使用返回的本地 task_id 和本地 /content,不要自己拼上游地址。

开放注册 邮箱验证未开启 额度显示 USD 版本 output-format-20260828 最后核对:2026-09-02 状态 / 价格接口

快速开始

视频是异步任务。图片按家族走同步或异步。最短路径如下。

  1. 创建令牌并选分组控制台 → 令牌管理。Banana 用 banana;web-image2 用 image-plus 系列;adobe-image2 用 原生 4k。视频分组以创建页实时选项为准。
  2. 确认域名视频发到 https://multimodal.vibelearning.top/v1。图片发到 https://image1.vibelearning.top。两个域名不混用。
  3. 先跑通一条请求视频按下方公开视频模型示例提交;图片用 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-image2POST /v1/images/generations 或 /editsimage-plus 系列 Key。模型名 gpt-image-2。异步图生图未开放。
adobe-image2POST /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 变体以令牌创建页为准。

分组倍率说明
banana1nanobanana 分组,支持 gemini-3.1-flash-image-preview、gemini-3-pro-image-preview。
image2-plus0.04web 逆向 image2/2.5 分组,支持超分 4K。
原生 4k0.1adobe image2/2.5。
az-image1.8azure 云厂商直出原生 4K。
oai-image0.3OpenAI 特价渠道,参考图传 URL。
oai-image-福利0.2支持 6 张参考图,非标准参数。
adobe-逆向-福利0.07adobe image2/2.5。
grok0.4grok-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。

调用流程

  1. 调用 POST /v1/videos 提交任务。
  2. 保存返回的本地 task_id。
  3. 轮询 GET /v1/videos/{task_id},直到终态。
  4. 成功后再用 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单张参考图 URLGrok 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
当前实测(2026-09-27) 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"
  }'
与 xAI 官方契约的对应 xAI 官方 REST 结构使用 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。

控制台公告 image2 请求地址走 https://image1.vibelearning.top。Banana 参考 Gemini 官方图片文档。图片不要走 chat/response 的空返回路径(Banana 的 Chat Completions 是已验证例外)。IMAGE2 不允许暴力、血腥、未成年、NSFW、侵权或恐怖活动相关意图;ComfyUI 不要用 SD 负面提示词。

Banana

挂在 banana 分组上的 Gemini 图片模型。已验证两条公开路径:原生 generateContent,以及 OpenAI 兼容 Chat Completions。

不要发到 /v1/images/generations 该路由只接受 Imagen,Banana 会返回 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/generationsBanana 不支持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
  }'
公网 URL 要求 Banana 的 image_url 必须是从服务端可直接下载的公网图片直链。推荐使用首次请求返回 HTTP 200 且 Content-Type 为图片类型的地址;需要登录、Cookie、Referer、验证码或人机验证的 URL 可能失败。

客户端规则

  • 原生:读 candidates[0].content.parts,兼容 inlineData 与 inline_data,解码 base64 data。
  • 兼容:读 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"
      }
    ]
  }'
公网图片 URL 要求 URL 必须能够从 multimodal/image1 服务器直接访问并下载。首次请求应返回 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 出不了图。

比例1K2K4K
1:11024x10242048x20482880x2880
5:41120x8962240x17923200x2560
4:5896x11201792x22402560x3200
4:31152x8642304x17283264x2448
3:4864x11521728x23042448x3264
3:21248x8322496x16643504x2336
2:3832x12481664x24962336x3504
16:91280x7202560x14403840x2160
9:16720x12801440x25602160x3840
21:91456x6243024x12963696x1584

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-image0.1描述写明上游 $0.02/call,列表价 0.1
grok-imagine-image-2.00.2无描述字段
grok-imagine-image-quality0.2无描述字段

不要把这些模型的请求发到视频 /v1/videos。具体路径以控制台价格页的端点类型为准。

故障排查

先看状态码和错误原文,再对号入座。提问时提供请求时间、模型、路径、状态码、错误信息和日志 ID;令牌只保留短前后缀。

HTTP 状态码

状态 / 现象常见原文先查
400非法 size、mask is not supported、字段类型错误Adobe 尺寸、是否传了 mask、video 是否写成字符串
401Invalid token / UnauthorizedBearer 是否原样带 sk-;站点是否配错
403没有权限、分组不允许banana / image-plus / 原生 4k 是否选对
404路径不存在视频域名与图片域名是否对调;Banana 是否打到 images/generations
429限流并发、共用 Key
451Content blocked改提示词,不要原样重试
超时网关断开、Failed to fetch图片走 image1;同步超时 ≥60s,Adobe 4K ≥90s

400 Bad Request

现象。 请求被拒绝。adobe-image2 常见非法 size,或 mask is not supported。

原因。 字段与当前家族合同不符。

处理。

  1. adobe-image2 只用尺寸表里的 widthxheight,不要把 4k 写入 quality,不要传 mask。
  2. Grok 不要同时传 seconds 和 duration,只保留一个数字型 duration。

401 Unauthorized

现象。 401 / Invalid token。换 Key 仍失败时,优先怀疑请求没带 Authorization,或 Key 不属于本站。

原因。 网关没收到有效令牌。主站 NewAPI Key 不能打到 multimodal / image1。

处理。

  1. 请求头写成 Authorization: Bearer sk-xxx。已有 sk- 前缀时不要再剥掉。
  2. 令牌前后无空格。确认未过期、未被禁用。
  3. 用 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。与本站令牌、余额、域名隔离。

提交问题时请提供 请求时间、模型名称、接口路径、HTTP 状态码、错误信息和日志 ID。令牌只保留短前后缀,不要发送完整 Key。