"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
"github.com/volcengine/volcengine-go-sdk/volcengine"
client := arkruntime.NewClientWithApiKey(
os.Getenv("ARK_API_KEY"),
arkruntime.WithBaseUrl("https://ark.cn-beijing.volces.com/api/v3"),
ctx := context.Background()
modelID := "doubao-seedance-2-0-260128"
prompt := "固定机位,近景镜头,清新自然风格。在室内自然光下,图片1中美妆博主面带笑容,向镜头介绍图片2中的面霜。博主将手里的面霜展示给镜头,开心地说“挖到本命面霜了!”;接着她一边用手指轻轻蘸取面霜展示那种软糯感,一边说“质地像云朵一样软糯,一抹就吸收”;最后她把面霜涂抹在脸颊上,展示着水润透亮的皮肤,同时自信地说“熬夜急救、补水保湿全搞定”。要求画面中人物居中,完整展示人物的整个脑袋和上半身,始终对焦人脸,人脸始终清晰,纯净无任何字幕。"
refImage1 := "asset://asset-20260401123823-6d4x2"
refImage2 := "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_edit_pic1.jpg"
videoRatio := "adaptive"
videoDuration := int64(11)
fmt.Println("----- create request -----")
createReq := model.CreateContentGenerationTaskRequest{
GenerateAudio: volcengine.Bool(generateAudio),
Ratio: volcengine.String(videoRatio),
Duration: volcengine.Int64(videoDuration),
Watermark: volcengine.Bool(showWatermark),
Content: []*model.CreateContentGenerationContentItem{
Type: model.ContentGenerationContentItemTypeText,
Text: volcengine.String(prompt),
Type: model.ContentGenerationContentItemType("image_url"),
ImageURL: &model.ImageURL{
Role: volcengine.String("reference_image"),
Type: model.ContentGenerationContentItemType("image_url"),
ImageURL: &model.ImageURL{
Role: volcengine.String("reference_image"),
createResp, err := client.CreateContentGenerationTask(ctx, createReq)
fmt.Printf("create content generation error: %v\n", err)
fmt.Printf("Task Created with ID: %s\n", taskID)
pollTaskStatus(ctx, client, taskID)
func pollTaskStatus(ctx context.Context, client *arkruntime.Client, taskID string) {
fmt.Println("----- polling task status -----")
getReq := model.GetContentGenerationTaskRequest{ID: taskID}
getResp, err := client.GetContentGenerationTask(ctx, getReq)
fmt.Printf("get content generation task error: %v\n", err)
status := getResp.Status
if status == "succeeded" {
fmt.Println("----- task succeeded -----")
fmt.Printf("Task ID: %s \n", getResp.ID)
fmt.Printf("Model: %s \n", getResp.Model)
fmt.Printf("Video URL: %s \n", getResp.Content.VideoURL)
fmt.Printf("Completion Tokens: %d \n", getResp.Usage.CompletionTokens)
fmt.Printf("Created At: %d, Updated At: %d\n", getResp.CreatedAt, getResp.UpdatedAt)
} else if status == "failed" {
fmt.Println("----- task failed -----")
if getResp.Error != nil {
fmt.Printf("Error Code: %s, Message: %s\n", getResp.Error.Code, getResp.Error.Message)
fmt.Printf("Current status: %s, Retrying in 10 seconds... \n", status)
time.Sleep(10 * time.Second)