Video Generation

View as Markdown

Video Generation

Generate a Video

client.Videos.Generate sends POST /v1/video/generations and returns a *CreateVideoGenerationResponse containing the task ID.

1import (
2 "fmt"
3 meshapi "github.com/aifiesta/meshapi-go-sdk"
4)
5
6text := "A serene mountain lake at sunrise"
7
8task, err := client.Videos.Generate(ctx, meshapi.VideoGenerationParams{
9 Model: "byteplus/dreamina-seedance-2-0",
10 Content: []meshapi.VideoContentItem{
11 {Type: "text", Text: &text},
12 },
13})
14if err != nil {
15 log.Fatal(err)
16}
17
18fmt.Println("Task ID:", task.ID)

Poll Until Complete

1import "time"
2
3for {
4 status, err := client.Videos.Retrieve(ctx, task.ID)
5 if err != nil {
6 log.Fatal(err)
7 }
8 fmt.Println("Status:", status.Status)
9 if status.Status == "succeeded" || status.Status == "failed" {
10 break
11 }
12 time.Sleep(5 * time.Second)
13}

List Tasks

client.Videos.List sends GET /v1/video/generations.

1limit := 20
2listing, err := client.Videos.List(ctx, &meshapi.ListVideoGenerationsParams{
3 Limit: &limit,
4})
5if err != nil {
6 log.Fatal(err)
7}
8
9fmt.Printf("%d total tasks\n", listing.Total)
10for _, t := range listing.Data {
11 fmt.Println(t.ID, t.Status)
12}

Retrieve a Task

client.Videos.Retrieve sends GET /v1/video/generations/{task_id}.

1task, err := client.Videos.Retrieve(ctx, "task-id")
2if err != nil {
3 log.Fatal(err)
4}
5fmt.Println(task.Status)

Parameters

VideoGenerationParams

FieldTypeNotes
ModelstringRequired. e.g. "byteplus/dreamina-seedance-2-0"
Content[]VideoContentItemRequired. Prompt content items.
Duration*intDuration in seconds
Resolution*stringe.g. "1080p"
Seed*intReproducibility seed

VideoContentItem

FieldTypeNotes
Typestring"text" or "image_url"
Text*stringText prompt (when Type="text")
ImageURL*stringImage URL (when Type="image_url")

VideoTaskResponse

FieldTypeNotes
IDstringTask ID
Statusstring"pending", "running", "succeeded", "failed"
Content[]VideoTaskContentOutput items when succeeded
Error*VideoTaskErrorError details when failed