Docs / 核心概念 / 上传文件
上传文件
视频任务中的参考媒体通过 URL 传入。如果你的源文件在本地,请先上传: POST /v1/files 会返回一个托管 URL,你可以直接放入 metadata.content[]。已经位于公开 URL 上的文件可直接使用,无需上传。
#端点
POST
/v1/files以 multipart/form-data 形式发送文件,字段名为 file。
#cURL
terminalbash
curl https://relaydance.com/v1/files \
-H "Authorization: Bearer $RELAYDANCE_API_KEY" \
-F "file=@image.png"#Python
upload.pypython
import requests, os
response = requests.post(
"https://relaydance.com/v1/files",
headers={"Authorization": f"Bearer {os.environ['RELAYDANCE_API_KEY']}"},
files={"file": open("photo.jpg", "rb")},
)
result = response.json()
print(result["id"], result["url"])#Node.js
upload.tstypescript
import { readFileSync } from "fs";
const file = new Blob([readFileSync("photo.jpg")], { type: "image/jpeg" });
const form = new FormData();
form.append("file", file, "photo.jpg");
const res = await fetch("https://relaydance.com/v1/files", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.RELAYDANCE_API_KEY}` },
body: form,
});
const { id, url } = await res.json();
console.log(id, url);#响应
response.jsonjson
{
"id": "file_abc123",
"url": "https://..."
}#在视频任务中使用该 URL
把返回的 url 放入一条 metadata.content[] 条目,并在提示词中用 @image1 引用它:
img2video.pypython
import requests, os
HEADERS = {"Authorization": f"Bearer {os.environ['RELAYDANCE_API_KEY']}"}
# 1) 上传源图像
upload = requests.post(
"https://relaydance.com/v1/files",
headers=HEADERS,
files={"file": open("product.jpg", "rb")},
)
image_url = upload.json()["url"]
# 2) 提交视频任务,把该图像作为参考
resp = requests.post(
"https://relaydance.com/v1/video/generations",
headers={**HEADERS, "Content-Type": "application/json"},
json={
"model": "seedance-1-5-pro-with-audio",
"prompt": "@image1 rotates slowly on a marble pedestal, studio lighting",
"seconds": "5",
"metadata": {
"ratio": "16:9",
"resolution": "720p",
"content": [
{
"type": "image_url",
"image_url": {"url": image_url},
"role": "reference_image",
}
],
},
},
)
print(resp.json()["task_id"])