HTTP 409 · 报价变动
确认 error.code 是 model_price_changed,将新报价展示给用户并等待确认。确认后用返回的 model / price_revision 更新请求;本次未创建任务,可保留原业务编号重发。
从获取客户密钥,到提交图片和视频任务,再到读取结果。按顺序完成一次完整接入。
当前页面所在站点Base URL 填到域名或端口即可,不加 /v1。外部应用使用本站创建的客户密钥。
图片和视频采用异步任务:先确认报价,再提交一次,保存任务编号并持续查询。本文档示例只提供复制与下载,不会在页面中执行生成。
/v1/models已开通模型、价格与能力约束
POST/v1/images创建图片任务
POST/v1/videos创建图片或视频任务
GET/v1/videos/{task_id}查询进度、结果与结算状态
GET/v1/tasks/by-client-request-id按业务编号找回原任务
GET/v1/usage/logs实际消费与额度退回明细
当前调用接口覆盖图片与视频任务。模型广场中的聊天、音频或其他能力标签,不代表本站已开放对应的聊天、SSE 流式接口。
API 使用 Bearer 认证。将密钥保存在自己应用的服务端环境变量中;不要写入网页代码、公开仓库或移动端安装包。
加载示例…加载示例…下文使用 NUOMI_BASE_URL 和 NUOMI_API_KEY。同一账户的有效客户密钥可以查询该账户的任务;它们不能访问其他账户的任务、素材或账单。
/v1/modelsBearer 认证提交前读取模型列表,使用返回的完整 id,同时保存 price_revision。向用户展示单价和预计用量,确认后再创建任务。
加载示例…加载示例…| 字段 | 用于决定什么 |
|---|---|
id / kind | 准确模型名称,以及 image 或 video 类型。 |
price_cny / billing_unit | 人民币单价文本;task 按次,second 按生成秒数。图片始终按次。 |
price_revision | 本次报价版本,提交时原样填写;不要自行计算或缓存为永久值。 |
allowed_aspect_ratios / allowed_quality / allowed_sizes | 可用比例、质量和尺寸。空的尺寸列表表示应省略 size。 |
min_seconds / max_seconds / fixed_seconds / duration_options | 时长范围、固定时长和可选时长集合。 |
reference_limits | 图片、视频、音频参考素材的最少和最多数量。 |
模型广场与可调用模型有区别。GET /api/catalog 是公开展示目录;GET /v1/models 和 GET /api/pricing 返回本站当前已开通的调用模型。调用前应以后两者为准。
/v1/images选择 kind: "image" 的模型,将它的名称和报价版本填入请求。以下占位值必须替换;参考素材和质量字段可按需增加。
加载示例…加载示例…新任务返回 HTTP 202,保存 id。同一业务编号、相同有效参数的重试返回原任务和 HTTP 200。图片也可使用 POST /v1/videos 创建,类型由模型决定。
图片的 seconds 省略或设为字符串 "1",不能填写 mySeconds。默认质量取模型 allowed_quality 的第一项。
/v1/videos选择 kind: "video" 的模型,按模型声明选择真实时长。视频当前支持 16:9 和 9:16。
加载示例…加载示例…示例的 4 秒只适用于允许该时长的模型。若返回 fixed_seconds,必须使用固定秒数;若 duration_options 非空,必须从中选择。服务端会处理模型所需的时长字段归一化。
| 参数 | 类型 / 必填 | 说明 |
|---|---|---|
model | string / 是 | 从 /v1/models 复制的完整模型 ID。 |
prompt | string / 是 | 非空提示词,最多 32,000 个字符。 |
client_request_id | string / 二选一 | 稳定业务编号,最多 191 字符;也可由 Idempotency-Key 请求头提供。 |
price_revision | string / 核价必需 | 对应模型返回的 64 位报价版本。原样传入。 |
aspect_ratio | string / 可选 | 从 allowed_aspect_ratios 选择;图片默认 1:1,视频默认 16:9。 |
seconds | string / 视频必填 | 实际生成秒数的整数字符串,例如 "4"。图片为 "1"。 |
mySeconds | string / 按模型 | 带独立 -Ns 时长标记的模型可用;通常直接提供实际 seconds 即可。 |
quality | string / 可选 | 仅接受模型 allowed_quality 中的值。 |
size | string / 可选 | 必须是 allowed_sizes 中的值,例如 1280x720。未配置时省略。 |
reference_image_urls | string[] / 可选 | 图片参考地址,数量必须符合模型约束。 |
reference_videos | string[] / 可选 | 视频参考地址;不接受参考视频的模型会拒绝该输入。 |
reference_audios | string[] / 可选 | 音频参考地址,数量必须符合模型约束。 |
-Ns 标记的模型,使用 seconds,省略 mySeconds。-Ns 的模型,本站可接收实际 seconds 并归一化;显式传参也可使用 seconds: "1" 与 mySeconds: "实际秒数"。fixed_seconds;所需最少参考图数量从 reference_limits.min_images 读取。-nv 模型不接受参考视频,传入会返回参数错误。参考字段兼容 image_urls / images、video_urls / videos、audio_urls / audios,但同一类的规范字段和别名只能填写一种。建议始终使用表格中的规范字段。
只发送本站支持的字段。不要从其他平台的请求体直接附带 resolution、persist、stream 或 bypass_face_check;未知字段会返回参数错误。
真实生成使用可公开直接读取的 HTTP(S) 文件地址。不要传电脑路径、blob:、内网地址、需要登录的网页或仅当前浏览器能打开的地址。按模型的参考类型和数量限制提交。
加载示例…/workbench/api/uploadsBearer 认证上传接口用于按账户保存素材。查询参数为 model、kind(image / video / audio)和 filename,请求体是文件的原始字节,不是 JSON 或 multipart 表单。模型必须支持该参考类型。
加载示例…当前默认上限为图片 20 MiB、视频 100 MiB、音频 50 MiB。支持 PNG、JPEG、WebP、GIF,MP4 / MOV,MP3 / WAV / M4A;类型、文件内容与扩展名必须匹配。
成功返回 id、type、name、mime、size、私有预览地址 preview_url 和本站引用标识 reference_url。素材与预览只能由所属账户访问。
私有上传成功不等于已获得公网生成地址。当前本机上传的 reference_url 用于私有素材管理与模拟流程;尚未配置公网素材存储时,真实生成会返回 upload_public_storage_required。此时请使用自己的公网文件直链,或联系运营确认素材存储已开通。不要把 preview_url 当作公网地址。
提示词中的 @图片1、@视频1、@音频1 对应各类数组中的顺序。引用前应先提供该编号的素材;不要引用不存在的编号。
为一笔生成业务分配稳定、唯一的 client_request_id,在请求前保存编号与完整参数。也可使用 Idempotency-Key 请求头;两者同时提供时必须一致。编号最多 191 字符,不能含控制字符。
| 情况 | 本站行为与处理方法 |
|---|---|
| 新编号、有效请求 | 创建新任务,返回 HTTP 202。保存返回的 id。 |
| 同一账户、同编号、相同有效参数 | HTTP 200 返回原任务,不再次创建或重复预留费用。 |
| 同编号、不同有效参数 | HTTP 409,error.code: invalid_request,message: idempotency_conflict。应找回原任务,不要覆盖原参数。 |
| 连接中断、提交超时或 5xx | 先用原编号查找;查询暂时失败不代表任务没创建。必要时保持原编号与原参数重试。 |
| 原任务已失败,决定重新生成 | 先查清失败原因并重新确认报价;创建新业务编号。旧编号仍指向旧任务。 |
/v1/tasks/by-client-request-id加载示例…查询参数按 URL 规则编码。任务归属于客户账户,同账户下的有效密钥可以查询;不存在或不属于该账户时返回 404。查到后取 id || task_id 继续查询任务状态。
请始终保留自己的业务编号和返回任务编号。不要把一次网络错误变成一个新编号,这可能创建另一笔任务。
本站在创建前核对当前报价,并在转发前复核。新请求中的 price_revision 应来自用户最后确认的模型报价;缺少报价版本也可能触发报价确认错误。
加载示例…确认 error.code 是 model_price_changed,将新报价展示给用户并等待确认。确认后用返回的 model / price_revision 更新请求;本次未创建任务,可保留原业务编号重发。
若任务的 error.code 为价格或模型变动,原任务已经结束。刷新模型和报价,用户确认后使用新的业务编号重新生成。
不要在收到价格变动后自动按新价格继续调用。410 model_unavailable 表示模型已不可用;503 price_check_unavailable 表示暂时无法核价,保留业务信息并稍后查询或重试。
/v1/videos/{task_id}图片也可使用 GET /v1/images/{task_id}。建议每 3–5 秒查询一次;遵守接口速率限制。部分接入模式由首次任务查询启动处理,创建后应按任务编号继续查询。
加载示例…加载示例…queued / processing:继续等待。未记录实际百分比时 progress 为 null;完成时为 100。completed:读取结果地址。视频优先用 video_url,再兼容 url / result_url;图片使用 url / result_url。failed:读取任务内的 error。预留额度按任务结算结果退回,先处理原因再决定是否新建任务。billing.state 的 reserved 表示预留额度,charged 表示已扣费,released 表示预留已退回。人民币金额以文本返回,最多保留 6 位小数。
下载示例后放进自己的服务端项目。助手不在导入时创建任务;调用生成函数前,仍需完成参数检查、保存业务编号和用户报价确认。
将已经向用户展示并确认的请求保存为 confirmed-request.json,包含当时的 price_revision 与稳定业务编号,再运行以下服务端代码。收到价格变动错误时应暂停,交回用户确认。
加载示例…加载示例…完整助手将 HTTP 错误与任务失败分开处理,保留任务编号,提供有限次数的轮询。轮询达到上限只表示停止本次等待,不会取消原任务或自动重新生成。
展开后加载本地示例文件…展开后加载本地示例文件…/v1/balance返回 currency、可用余额 available 和预留额度 reserved。工作台与客户 API 共用钱包。
/v1/usage/logs按账户读取已结算消费或额度退回。参数包括 page、limit(1–100)、模型名称 model、entry_type(all / consume / release)、UNIX 秒数 start_time / end_time,以及 group=default。时间范围按结算时间筛选。
加载示例…结果含 data、total、分页字段和 summary。summary.total_spent 是整个筛选结果的实际消费合计;额度退回条目的 cost 为 0,退回金额单独放在 billing.released_amount。未采集的 Token 或速率数据返回 null。
HTTP 错误通常是 { "error": { "code": "…", "message": "…" } }。查询参数的框架校验可能返回 HTTP 422 与 detail 数组。HTTP 200 的任务对象仍可能是 status: "failed",需要单独检查。
| HTTP | 常见代码 | 处理方法 |
|---|---|---|
| 400 | invalid_request / invalid_json / unknown_model / invalid_price_revision / invalid_endpoint | 按错误信息修正参数,重新查询已开通模型;不要自动换编号反复提交。 |
| 401 | invalid_api_key | 检查本站客户密钥是否正确、有效,并使用 Bearer 请求头。 |
| 402 | insufficient_balance | 核对可用余额,在同一站点充值后再提交。 |
| 404 | task_not_found | 确认任务编号、站点和账户。提交曾超时时,按原业务编号找回。 |
| 409 | model_price_changed 或 invalid_request | 分别按“价格变动”或“业务编号冲突”流程处理。 |
| 410 | model_unavailable | 模型已不可用,刷新模型列表并重新选择。 |
| 413 | body_too_large / upload_too_large | 缩小请求或素材文件,遵守对应上限。 |
| 422 | 查询参数校验 | 检查参数类型、范围与时间格式。 |
| 429 | rate_limit_exceeded / too_many_pending_tasks | 降低频率或等待已有任务结束,按原编号恢复,不盲目创建新任务。 |
| 503 | not_configured / price_check_unavailable / upload_public_storage_required | 对应配置、核价或素材存储暂不可用。保留任务信息,稍后重查或联系运营。 |
当前站点、客户密钥、模型与报价版本、业务编号、参考素材、提交和轮询。先在自己的测试环境验证恢复流程,再向客户开放。