Video Generation

View as Markdown

Video Generation

Generate a Video

client.videos.generate sends POST /v1/video/generations and returns a task object containing the task ID.

1import { MeshAPI } from "meshapi-node-sdk";
2
3const client = new MeshAPI({ baseUrl: "https://api.meshapi.ai", token: "rsk_..." });
4
5const task = await client.videos.generate({
6 model: "byteplus/dreamina-seedance-2-0",
7 content: [{ type: "text", text: "A serene mountain lake at sunrise" }],
8});
9
10console.log("Task ID:", task.id);

Poll Until Complete

1let status = await client.videos.retrieve(task.id);
2
3while (status.status !== "succeeded" && status.status !== "failed") {
4 await new Promise(r => setTimeout(r, 5_000));
5 status = await client.videos.retrieve(task.id);
6 console.log("Status:", status.status);
7}
8
9if (status.status === "succeeded" && status.content) {
10 for (const item of status.content) {
11 if (item.type === "video_url") {
12 console.log("Video URL:", item.url);
13 }
14 }
15}

List Tasks

client.videos.list sends GET /v1/video/generations.

1const listing = await client.videos.list({ limit: 20 });
2console.log(`${listing.total} total tasks`);
3for (const t of listing.data) {
4 console.log(t.id, t.status);
5}

Retrieve a Task

client.videos.retrieve sends GET /v1/video/generations/{task_id}.

1const task = await client.videos.retrieve("task-id");
2console.log(task.status);

Parameters

VideoGenerationParams

FieldTypeNotes
modelstringRequired. e.g. "byteplus/dreamina-seedance-2-0"
contentVideoContentItem[]Required. Prompt content items.
durationnumber?Duration in seconds
resolutionstring?e.g. "1080p"
seednumber?Reproducibility seed

VideoContentItem

FieldTypeNotes
typestring"text" or "image_url"
textstring?Text prompt (when type="text")
image_urlstring?Image URL (when type="image_url")

VideoTaskResponse

FieldTypeNotes
idstringTask ID
statusstring"pending", "running", "succeeded", "failed"
contentarray?Output items when succeeded
errorobject?Error details when failed