GetVibe 在文本 API 旁提供异步 media job API。媒体请求路径与 OpenAI chat completions 不同:先提交生成任务,拿到 job ID,再查询状态和结果。图片、视频、音频/语音模型所需输入与计费单位不同,使用media 模型目录选择,不要假设所有模型接受同一种请求。
查看模型及其要求
可通过媒体目录或 /v1/models?type=image,video,audio 查看账号可用类型。逐项核对模型 ID、输入模态、选项、结果格式和计费单位。图片可能按输出设置计费,视频可能取决于时长和分辨率,语音模型可能按文本长度、时长或其他单位计费,不应统一按文本 token 估算。
gpt-image-2 是目录中的图像模型之一。它支持的宽高比、分辨率及生成/编辑选项以模型页和媒体文档为准。视频模型参数各异且处理更久。语音能力也按模型不同,上线前需查当前媒体列表。
提交图片生成任务
API key 保留在服务端。下面是文档化的异步文生图请求:prompt 在顶层,生成选项放在 opts 中:
curl https://getvibeapi.com/api/media/generate \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean editorial illustration of a developer desk, no text",
"opts": {"aspect_ratio":"16:9", "resolution":"1K", "mode":"text-to-image"}
}'把返回的 jobId 与自己的用户和任务记录关联。此请求启动生成,不会直接在响应中返回成品图片。
轮询或接收 webhook
小规模集成可隔一段时间查询 job endpoint,在任务进入终态后停止。状态包括 submitting、processing、success、fail 和 expired。每几毫秒轮询不会加快生成,却会增加流量。生产批次可使用文档化 webhook,并让回调处理幂等,以避免重复事件产生重复资产。
curl "https://getvibeapi.com/api/media/jobs/$JOB_ID" \
-H "Authorization: Bearer $GETVIBE_API_KEY"成功后取回结果 URL;如需长期保存,将媒体复制到自己管理的存储。失败时保留 job ID 供排查,并显示具体错误。不要对每类失败都自动重试:参数无效仍会失败,重复生成还可能产生新费用。
视频和语音需要模型专属处理
视频请求前检查时长、画面尺寸、图片条件输入和支持参数。验证远程源 URL 可被服务访问。给用户展示任务进度,因为视频处理比文本更久;批量任务使用文档化 webhook,而不是一直挂着网页请求。
语音/音频场景要区分语音合成、转录和音频理解,它们的输入输出模态不同。按模型说明选择 endpoint 与 payload,并在支持时限制文本或时长,保存播放器能处理的格式。不要承诺每个媒体模型都能生成语音。
估算预算与定义失败行为
批量生成前查看媒体模型当前价格,并按实际计费单位估算。文本模型价格不是图片或视频价格的替代。先用生产计划中的分辨率、时长和语音参数生成一个样本。记录 job ID、模型、设置、时长、终态和 usage。为昂贵或面向客户的结果设置批次上限与人工复核。
除非隐私策略允许,不要将完整 prompt 和媒体 URL 写入通用日志。限制上传大小、避免泄露凭据,并防止将私有媒体作为公开 URL 提供。编辑任务需在审核前保留原始文件。
生产清单
- 确认模型 ID、模态和输入要求。
- 密钥只放在服务端。
- 使用顶层 prompt 和模型文档中的参数。
- 持久化 job ID,让 polling/webhook 幂等。
- 定义失败与过期的处理方式。
- 按实际计费单位做预算。
- 需长期保存时复制生成结果。
上线前阅读媒体生成、媒体 webhook和媒体模型文档。公开模型和参数会变化,这些文档及实时目录是账号功能的准确来源。
安全处理源素材
图生图或以图生成视频时,按该模型文档使用上传或 URL 方式。确认远程资源无需浏览器登录即可访问。不要将含长期权限的签名 URL 复制到可能记录的 prompt 中。应用应校验内容类型和上传大小。
处理用户图片时,保留原始素材,并遵循同意与保留政策。生成结果可能包含可识别细节,分享前执行产品自己的隐私和审核规则。
围绕任务状态设计界面
提交后显示已创建,运行时显示处理中,并明确区分成功、失败和过期。如果用户离开页面,仍可从自己保存的 job ID 恢复状态。为防止连点产生重复计费,可禁用提交按钮或使用本地幂等保护。
批量页面分别显示完成、失败和待处理数量。单一 spinner 无法说明长视频是否卡住。使用有上限的 backoff polling,批次变大后改用文档化 webhook。
为结果制定保留策略
除非媒体文档承诺长期有效,否则不要把返回 URL 当作永久存储。若需保留,下载到自己的 bucket,并把新对象 ID 保存进数据库。对生成文件配置权限和用户删除流程。
记录模型 ID、选项、prompt 版本、job ID、结果对象、终态和费用。这样可回答后续支持问题,而无需在普通日志中保存敏感 prompt 或向全团队暴露媒体 URL。
