Cano API
平台首页API 设置API 文档
返回工作台

Cano API 文档

一个 API Key 调用生图、文生视频、图生视频、多图参考、音频配音、文件上传和任务查询。

Base URLhttps://cano.gewuzhihui.com创建 API Key →
快速开始认证模型上传生图视频音频任务兼容接口错误码计费

三步接入

1
创建 Key

在 API 设置页生成 Key。Key 明文只显示一次。

2
提交任务

用 JSON 或 multipart 传入模型、提示词、尺寸、时长,以及图片、视频、音频参考。

3
读取结果

通过任务查询接口拿到图片、视频链接、失败原因和真实任务状态。

认证

所有 `/api/v1/*` 接口都使用 Bearer Token。创建 Key 时必须明确选择图片、视频、音频、模型查询等 scope,并可设置生命周期积分预算与模型白名单;超出权限、预算或白名单会明确返回错误,不会替换成其他模型。

Authorization: Bearer cano_live_xxx

所有生成类 POST 请求都应传唯一的 Idempotency-Key。同一个 Key 与同一请求体会重放原任务;同一个 Key 对应不同请求体会返回 409,避免网络重试重复扣费。

模型与余额

GET/api/v1/models

查询当前可用模型、尺寸、时长、分辨率和真实参数。

GET/api/v1/balance

查询余额:返回永久积分(balance/credits)与当前订阅额度(subscription,无订阅为 null,含本期剩余和重置/到期时间)。扣费时优先消耗订阅额度。

curl -H "Authorization: Bearer $CANO_API_KEY" \
  "https://cano.gewuzhihui.com/api/v1/models?kind=VIDEO"

上传参考文件

参考图片、视频和音频可以先上传复用,也可在生成接口中直接 multipart 上传。图片建议显式使用 kind=image-reference;Seedance 2.0 视频参考使用 kind=video-reference;生成参考音频使用 kind=video-audio-reference,并实测限制为 2-15 秒。配音音色参考仍使用 kind=audio。未知用途、无法识别或扩展名与 Content-Type 冲突的文件会直接拒绝,不会静默忽略。

curl -X POST "https://cano.gewuzhihui.com/api/v1/uploads" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -F "kind=image-reference" \
  -F "file=@./ref.png"

curl -X POST "https://cano.gewuzhihui.com/api/v1/uploads" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -F "kind=video-reference" \
  -F "file=@./motion.mp4"

curl -X POST "https://cano.gewuzhihui.com/api/v1/uploads" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -F "kind=video-audio-reference" \
  -F "file=@./rhythm.wav"

生图接口

JSON/api/v1/images/generations

文生图:提供 prompt、size、n。

FORM/api/v1/images/generations

图生图:直接用 -F file=@./ref.png 上传参考图。

图片模型支持 cano-image-2 和 seedream-5.0-pro。Seedream 5.0 Pro 的 1K、2K、4K 均为 8 积分 / 张;未传尺寸时默认 1K。

curl -X POST "https://cano.gewuzhihui.com/api/v1/images/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: image-$(uuidgen)" \
  -F "model=cano-image-2" \
  -F "prompt=参考图片生成更清晰的写实产品图,保持结构比例一致" \
  -F "size=2000x2000" \
  -F "file=@./ref.png"
curl -X POST "https://cano.gewuzhihui.com/api/v1/images/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: image-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cano-image-2",
    "prompt": "一张写实产品摄影图,黑色工业塑料设备,棚拍柔光,细节清晰",
    "size": "3840x2160",
    "n": 1
  }'

Seedance 2.0 / 2.5 视频接口

TYPEtext2video

文生视频,不提交任何参考附件。

TYPEmultimodal2video

全能参考:Seedance 2.0 支持图片 0-9 张、视频 0-3 段、音频 0-3 段;Seedance 2.5 支持图片 0-30 张、视频 0-10 段、音频 0-10 段(混合参考共最多 50 个)。两者都至少包含一张图片或一段视频。

curl -X POST "https://cano.gewuzhihui.com/api/v1/videos/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: video-$(uuidgen)" \
  -F "model=seedance-2.0-mini-720p" \
  -F "type=multimodal2video" \
  -F "prompt=以参考图为首帧,产品稳定,镜头缓慢环绕,写实棚拍质感" \
  -F "duration=8" \
  -F "ratio=16:9" \
  -F "file=@./product.png"
curl -X POST "https://cano.gewuzhihui.com/api/v1/videos/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: video-$(uuidgen)" \
  -F "model=seedance-2.0-mini-720p" \
  -F "type=multimodal2video" \
  -F "prompt=参考多张产品图生成 8 秒产品展示视频,主体结构保持一致,平稳运镜" \
  -F "duration=8" \
  -F "ratio=16:9" \
  -F "images=@./front.png" \
  -F "images=@./side.png" \
  -F "images=@./detail.png"
curl -X POST "https://cano.gewuzhihui.com/api/v1/videos/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: video-$(uuidgen)" \
  -F "model=seedance-2.0-mini-720p" \
  -F "type=multimodal2video" \
  -F "prompt=保持产品外观,参考视频动作和音频节奏推进镜头" \
  -F "duration=8" \
  -F "ratio=16:9" \
  -F "images=@./product.png" \
  -F "videos=@./motion.mp4" \
  -F "audios=@./rhythm.wav"
import os
import uuid
import requests

with open("product.png", "rb") as image, open("rhythm.wav", "rb") as audio:
    response = requests.post(
        "https://cano.gewuzhihui.com/api/v1/videos/generations",
        headers={
            "Authorization": f"Bearer {os.environ['CANO_API_KEY']}",
            "Idempotency-Key": f"video-{uuid.uuid4()}",
        },
        data={
            "model": "seedance-2.0-mini-720p",
            "type": "multimodal2video",
            "prompt": "保持产品外观,按参考音频节奏推进镜头",
            "duration": "8",
            "ratio": "16:9",
        },
        files=[
            ("images", ("product.png", image, "image/png")),
            ("audio_files[]", ("rhythm.wav", audio, "audio/wav")),
        ],
        timeout=60,
    )

payload = response.json()
response.raise_for_status()
assert payload["data"]["refAudioCount"] == 1, payload
print(payload["data"]["id"], payload["data"]["multipart"])

multipart 推荐字段为 images、videos、audios;同时兼容 Python 常见的 audio_files[]、reference_audios 等文件字段。服务端会按文件真实类型归类;字段声明与文件类型冲突、文件误传到文本字段或未知普通参数都会直接返回 400。成功响应中的 refAudioCount 和 multipart 是本次实际接收结果,客户端应在创建任务后校验。 除 multipart 上传外,也可用 JSON 的 refImageUrls、refVideoUrls、refAudioUrls 传外部 HTTPS 地址。视频和音频会在创建任务前真实下载并验证,生成参考音频每段必须为 2-15 秒。 音频仅用于节奏、动作、情绪或口型参考,最终旁白与配乐仍应使用音频接口或工作流 TTS / Compose。 尺寸 / 时长必须取自 GET /api/v1/models 返回的可选值,不支持的参数会报 VALIDATION_ERROR,不会静默降级。 旧客户端传 image2video 时会作为兼容别名执行,但响应中的实际 type 为 multimodal2video,并返回 modeAliasApplied=true。

下表为大额充值 8 折后的最低价。2.0 括注 API 对标价,2.5 展示国际版页面当前真实积分消耗。任务按模型基础价积分扣费(1 元 = 10 积分),优惠在充值:常态 9 折、大额最低 8 折。

模型价格适用
seedance-2.0-mini-720p低至 0.40 元 / 秒API 对标价 0.60 元/秒最低引流档,VIP 优先通道,不用排队
seedance-2.0-fast-vip-720p低至 0.64 元 / 秒API 对标价 0.80 元/秒速度档,稳定快速出片
seedance-2.0-vip-720p低至 0.72 元 / 秒API 对标价 0.99 元/秒对齐 API 720p 画质档
seedance-2.0-vip-1080p低至 1.68 元 / 秒API 对标价 2.48 元/秒高清交付,对齐 API 1080p
seedance-2.5-480p低至 0.72 元 / 秒国际版当前消耗 51 积分/秒4-30 秒,最多 30 图 + 10 视频 + 10 音频
seedance-2.5-720p低至 1.44 元 / 秒国际版当前消耗 111 积分/秒4-30 秒,最多 30 图 + 10 视频 + 10 音频

音频配音与音乐

GET/api/v1/audio/voices

查询已配置音色。配音必须显式传 voiceName 或 voiceId,不会自动替换默认音色。

POST/api/v1/audio/speech

创建配音任务,支持 JSON 传 voiceReferenceKey 或 multipart 传 voiceReference 音频文件;完成后在 /api/v1/jobs/:id 的 audios 中返回音频链接。

POST/api/v1/audio/music

创建音乐任务。duration 可传 auto,音乐创作统一固定 3 积分,不按时长变化。

curl -H "Authorization: Bearer $CANO_API_KEY" \
  "https://cano.gewuzhihui.com/api/v1/audio/voices"
curl -X POST "https://cano.gewuzhihui.com/api/v1/audio/speech" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: speech-$(uuidgen)" \
  -F "model=cano-voiceover" \
  -F "text=这里是一段产品介绍配音。" \
  -F "voiceName=yangguang-xiaonanhai" \
  -F "voiceReference=@./voice.wav" \
  -F "speechSpeed=1.0"
curl -X POST "https://cano.gewuzhihui.com/api/v1/audio/music" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: music-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cano-music",
    "prompt": "干净、科技感、适合产品介绍的背景音乐,无人声",
    "duration": "auto"
  }'

任务查询与取消

GET/api/v1/jobs/:id

查询任务状态、错误信息、图片结果、视频结果和音频结果。

DELETE/api/v1/jobs/:id

QUEUED 任务会立即取消并全额退回;RUNNING / SUBMITTED 进入 CANCEL_REQUESTED,等待上游终态后按已发生真实成本结算。

curl -H "Authorization: Bearer $CANO_API_KEY" \
  "https://cano.gewuzhihui.com/api/v1/jobs/cmxxx"

创建任务的响应含 id、status、cost(本次预扣积分)。 状态流转:QUEUED → RUNNING →(异步上游)SUBMITTED → SUCCEEDED / FAILED;取消中为 CANCEL_REQUESTED,完成后为 CANCELLED。响应同时记录 requested / effective / provider / model / size / duration / aliasApplied,便于核对实际执行参数。失败时返回 errorClass 与 errorMessage。

兼容接口(newapi / OpenAI 格式,根 /v1)

为方便把 new-api / one-api 等聚合器和 OpenAI 风格客户端直接接到 Cano,根目录 /v1 提供 newapi 兼容端点(与原生 /api/v1 互不影响)。 Base URL 直接填 https://cano.gewuzhihui.com,聚合器会自动拼 /v1/...。Key 推荐用 sk- 格式。

GET/v1/models

模型列表:生图 id 有 gpt-image-2 / seedream-5.0-pro / seedream-5.0 / seedream-4.7;视频 id 为 seedance-2.0-*、seedance-2.5-480p 与 seedance-2.5-720p;音频 id 为 cano-voiceover / cano-music。

curl -H "Authorization: Bearer $CANO_API_KEY" \
  "https://cano.gewuzhihui.com/v1/models"
POST/v1/images/generations

生图(同步):返回 { created, data:[{ url, width, height }] }。model 和 size 必须使用模型列表声明的真实可用值;Seedream 5.0 Pro 默认 1K。

curl -X POST "https://cano.gewuzhihui.com/v1/images/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: compat-image-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5.0-pro",
    "prompt": "一只橘猫坐在窗台,柔和晨光",
    "size": "1024x1024"
  }'
POST/v1/video/generations

创建视频任务(异步,newapi 格式):返回 { task_id, status }。除 model/prompt/duration/width/height 外,支持 images(最多 9)、videos(最多 3)、audios(最多 3)HTTPS URL 数组;音频仍需图片或视频视觉参考。

curl -X POST "https://cano.gewuzhihui.com/v1/video/generations" \
  -H "Authorization: Bearer $CANO_API_KEY" \
  -H "Idempotency-Key: compat-video-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-mini-720p",
    "prompt": "橘猫在窗台伸懒腰,镜头缓慢推近",
    "duration": 5,
    "width": 1280,
    "height": 720
  }'
# 返回 { "task_id": "cm...", "status": "queued" }
GET/v1/video/generations/:task_id

查询视频任务:{ task_id, status, url, format, metadata }。status 取值 queued/in_progress/completed/failed。

curl -H "Authorization: Bearer $CANO_API_KEY" \
  "https://cano.gewuzhihui.com/v1/video/generations/<task_id>"
# 完成时 { "task_id":"...","status":"completed","url":"https://...mp4","format":"mp4","metadata":{...} }

说明:生图为同步(内部轮询出图,最长约 4 分钟);生视频为异步任务,先建任务拿 task_id,再轮询查询直到 completed。聚合器请把渠道超时设大一些。

错误码

统一错误结构:{ "success": false, "error": { "code": "...", "message": "...", "requestId": "..." } },响应头也包含 x-request-id。按 code 处理,余额不足与频率限制建议退避重试。

CodeHTTP触发场景
UNAUTHORIZED401API Key 缺失、错误、已停用或已过期
INSUFFICIENT_CREDITS402余额(订阅额度 + 永久积分)不足以创建任务
VALIDATION_ERROR400参数非法:尺寸/时长不支持、参考媒体数量或格式不符、缺必填项
NOT_FOUND404模型不可用,或任务 id 不属于当前账号
RATE_LIMITED429触发频率限制,建议指数退避后重试
UPSTREAM_ERROR502上游生成失败;按是否已受理付费任务结算或退款
INTERNAL500服务端异常,可稍后重试

计费与充值

视频模型目录中的秒价为基础价。请求实际包含参考视频时,按即梦平台视频参考秒价计费,最终积分按ceil(参考视频秒价 × (生成秒数 + 参考视频实测总秒数))计算。仅图片参考、仅音频参考或无参考视频时维持基础价。

API 充值折扣
任意金额9 折生图与生视频通用余额,日常开发、脚本调用、低频测试
1000 元86 折约 1163 元原价额度,小团队批量生成
2000 元83 折约 2410 元原价额度,内容团队、工作流接入
3000 元8 折约 3750 元原价额度,高频 API、客户项目交付