跳到主要内容

视频生成 · 代码示例

Python​

只依赖 requests:pip install requests。

import time

import requests

BASE_URL = "https://www.apophiscode.com"
API_KEY = "sk-你的密钥"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}


def create_video(payload: dict) -> str:
resp = requests.post(f"{BASE_URL}/v1/videos", headers=HEADERS, json=payload, timeout=60)
resp.raise_for_status()
return resp.json()["id"]


def wait_video(task_id: str, interval: int = 15, timeout: int = 3 * 3600) -> dict:
deadline = time.time() + timeout
while time.time() < deadline:
resp = requests.get(f"{BASE_URL}/v1/videos/{task_id}", headers=HEADERS, timeout=30)
resp.raise_for_status()
task = resp.json()
if task["status"] == "completed":
return task
if task["status"] == "failed":
raise RuntimeError(task.get("error", {}).get("message", "生成失败"))
time.sleep(interval)
# 超时不代表失败:保留 task_id,稍后继续查询,不要重新提交
raise TimeoutError(f"任务 {task_id} 仍在生成中")


def download_video(task_id: str, path: str) -> None:
with requests.get(f"{BASE_URL}/v1/videos/{task_id}/content", headers=HEADERS, stream=True, timeout=300) as resp:
resp.raise_for_status()
with open(path, "wb") as f:
for chunk in resp.iter_content(chunk_size=1 << 20):
f.write(chunk)


if __name__ == "__main__":
task_id = create_video({
"model": "MiniMax-H3-768p-按秒",
"prompt": "清晨,阳光穿过森林,镜头缓慢向前推进",
"seconds": "6",
"size": "1280x720",
})
print("任务已提交:", task_id)
wait_video(task_id)
download_video(task_id, "video.mp4")
print("已保存 video.mp4")

Node.js​

Node 18 及以上自带 fetch:

const BASE_URL = "https://www.apophiscode.com";
const HEADERS = { Authorization: "Bearer sk-你的密钥", "Content-Type": "application/json" };

const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

async function main() {
const created = await fetch(`${BASE_URL}/v1/videos`, {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
model: "Seedance2.0-720p-按次-903",
prompt: "一只橘猫在窗台上伸懒腰",
duration: 5,
aspect_ratio: "9:16",
}),
}).then((r) => r.json());
if (!created.id) throw new Error(JSON.stringify(created));

for (;;) {
await sleep(15000);
const task = await fetch(`${BASE_URL}/v1/videos/${created.id}`, { headers: HEADERS }).then((r) => r.json());
if (task.status === "completed") break;
if (task.status === "failed") throw new Error(task.error?.message ?? "生成失败");
}

const video = await fetch(`${BASE_URL}/v1/videos/${created.id}/content`, { headers: HEADERS });
await require("node:fs/promises").writeFile("video.mp4", Buffer.from(await video.arrayBuffer()));
console.log("已保存 video.mp4");
}

main();