搜索 VisionStory 开发者文档

没有找到匹配的文档“”。

可以尝试功能或资源名称,例如 、、。

VisionStory开发者

指南

数字人形象 API

分页查询数字人形象、创建可复用的专属形象、调整各画幅的取景,并在 VisionStory 视频请求中使用其 avatar_id。

本页内容

VisionStory 数字人形象 API 为数字人视频提供出镜角色。你可以查询自己的形象或公共形象库,通过一张肖像创建可复用的专属形象,并控制专属形象在各个支持画幅中的取景。

数字人形象接口

方法路径功能
GET/api/v1/avatars分页查询专属形象或公共形象库
POST/api/v1/avatar通过图片创建专属形象
POST/api/v1/avatar/framing更新专属形象在一个画幅下的取景
DELETE/api/v1/avatar删除你的一个专属形象

查询专属形象或公共形象

每次请求只返回一种形象。GET /api/v1/avatars 默认查询当前账户拥有的形象;设置 is_public=true 后改为查询公共形象库。结果按创建时间从新到旧排列,并使用 cursor 分页:

Shell
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" "https://openapi.visionstory.ai/api/v1/avatars?is_public=false&limit=20"
Python
import os
import requests

headers = {"X-API-Key": os.environ["VISIONSTORY_API_KEY"]}
params = {"is_public": False, "limit": 20}

while True:
    response = requests.get(
        "https://openapi.visionstory.ai/api/v1/avatars",
        headers=headers,
        params=params,
        timeout=10,
    )
    data = response.json()["data"]
    for avatar in data["avatars"]:
        print(avatar["avatar_id"], avatar["default_voice_id"])
    if not data["next_cursor"]:
        break
    params["cursor"] = data["next_cursor"]

响应结构为 { "avatars": [...], "next_cursor": 0 };next_cursor=0 表示没有下一页。limit 可取 1–100,默认值为 20。专属形象会返回真实的 created_at,以及按 9:16、16:9、1:1 顺序排列的三项 framing;公共形象始终返回 framing: null。

始终从该接口返回的结果中选择 avatar_id,不要在代码中写死。要使用形象已配置的声音,请将非空的 default_voice_id 复制到 text_script.voice_id。

通过照片创建数字人形象

提交一张肖像图片,即可获得 avatar_id。图片来源必须二选一:可公开访问的 HTTPS URL,或包含 Base64 数据的 inline_data:

Shell
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"img_url": "https://your.site/portrait.jpg"}' https://openapi.visionstory.ai/api/v1/avatar

使用本地文件时,先将其编码为 Base64,再放入 inline_data:

Python
import base64
import os
import requests

headers = {"X-API-Key": os.environ["VISIONSTORY_API_KEY"]}

with open("/path/to/image.jpg", "rb") as f:
    encoded = base64.b64encode(f.read()).decode("utf-8")

payload = {"inline_data": {"mime_type": "image/jpg", "data": encoded}}
response = requests.post("https://openapi.visionstory.ai/api/v1/avatar", json=payload, headers=headers)
print(response.json()["data"]["avatar_id"])

保存返回的 avatar_id,之后需要该形象出镜的视频请求都可以使用它。

照片要求: 建议使用单人、清晰、正面的肖像,以获得更好的效果。支持 JPEG、PNG、WEBP 和 HEIC,文件不超过 10 MB。

调整形象取景

专属形象会返回三个画幅的当前取景。先读取 GET /api/v1/avatars 返回的值,每次调整一个画幅,并提交全部五个必填字段:

Shell
curl -s -X POST -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"avatar_id":"YOUR_AVATAR_ID","aspect_ratio":"9:16","zoom":1.2,"offset_x":0,"offset_y":-0.25}' https://openapi.visionstory.ai/api/v1/avatar/framing

zoom=1 表示在源图内能够完整容纳所选画幅的最宽取景;数值越大,人物越近。offset_x 和 offset_y 的范围都是 -1 到 1,其中 0 表示居中。API 会确保取景框位于源图范围内,确认其中存在清晰人脸后保存,并用于该画幅之后生成的视频。

只能调整当前账户拥有的形象。缺少源图尺寸的旧形象可能返回 framing_unavailable。源图过小、无法用于某个画幅时,该画幅的 zoom、offset_x 和 offset_y 返回 null;其 image_url 仍可使用,其他画幅也可能仍可调整。写回构图前请逐一检查画幅。如果 zoom 使裁剪区域过小,400 响应的 details 中会提供 max_zoom。当 max_zoom 为 null 时,请使用更大的源图重新创建形象,或选择构图参数不为空的画幅。

在数字人视频中使用形象

创建视频时传入 avatar_id:

JSON
{
  "model_id": "vs_character_v4",
  "avatar_id": "YOUR_AVATAR_ID",
  "text_script": { "text": "Hello!", "voice_id": "YOUR_VOICE_ID" }
}

完整的生成、轮询和下载流程见快速开始。

删除专属形象

只能删除你自己的专属形象;删除不会影响此前已使用该形象生成的视频:

Shell
curl -s -X DELETE -H "X-API-Key: $VISIONSTORY_API_KEY" "https://openapi.visionstory.ai/api/v1/avatar?avatar_id=YOUR_AVATAR_ID"