跳到正文

API 文档 · 素材

素材上传

单文件、分片、URL 导入与创建素材。

素材先上传到平台,再在任务的 inputs 里通过 asset_id 引用,同一素材可在多个任务中重复使用。单个文件最大 2 GiB;上传会话在 1 小时内有效(见返回的 expires_at)。

单文件上传

文件不超过 100 MB 时,POST /v1/uploads 返回 method: "single" 与预签名的 upload_url。用 PUT 上传文件本体,并带上返回的 headers,然后调用 complete。

content_type 请填文件的真实类型(如 image/png)。不是图片、视频、音频格式的类型会按 application/octet-stream 保存;平台入库时按文件头识别真实格式,不看扩展名和声明的类型。

分片上传

更大的文件返回 method: "multipart",并给出 part_size(通常为 16.0 MB)与 part_count:

  1. 调用 POST /v1/uploads/{id}/parts,传 { "part_numbers": [1, 2, …] },每次最多 100 个,返回 { "parts": [{ "part_number": 1, "url": "…" }] }。
  2. 按顺序切片后 PUT 每个分片,记录响应头中的 ETag。
  3. 调用 complete,传 { "parts": [{ "part_number": 1, "etag": "…" }] }。

URL 导入

POST /v1/assets 传 source_url 代替 upload_id,平台从该地址拉取文件:仅支持 http / https 公网地址,文件不超过 250 MB,需在 60 秒内下载完成。只有拉取并保存成功后素材才会长期保存;拉取失败时状态变为 failed,status_reason 给出原因。

创建素材

POST /v1/assets 的 name 必填(最长 200 字符),group_id 可选;trust_class 声明素材类型,默认 normal,虚拟人物与真人照片见素材类型与真人认证。 素材类型创建后不能修改。

素材状态

status含义
上传中URL 导入:正在拉取文件
处理中平台在探测格式、尺寸与时长
可用可在任务中使用
需授权声明为真人(real_person)的素材,需完成真人授权
失败格式不符、拉取失败或校验值不一致,见 status_reason
删除中已申请删除;仍被进行中的任务引用时,任务结束后清理

在素材变为 available 之前提交任务,会返回 422 asset_not_ready(可重试)。

# 1. 申请上传
curl https://api.aitoken.tools/v1/uploads \
  -H "Authorization: Bearer $AITOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"hero.png","content_type":"image/png","size_bytes":1832211}'

# 2. 把文件 PUT 到返回的 upload_url(带上返回的 headers)
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/png" --data-binary @hero.png

# 3. 完成上传
curl -X POST https://api.aitoken.tools/v1/uploads/upl_xxx/complete \
  -H "Authorization: Bearer $AITOKEN_API_KEY" \
  -H "Content-Type: application/json" -d '{}'

# 4. 创建素材
curl https://api.aitoken.tools/v1/assets \
  -H "Authorization: Bearer $AITOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"upload_id":"upl_xxx","name":"hero"}'