Go SDK

Generate videos from text, images, and URLs using the VCursor SDK for Go.

Installation

bash
go get github.com/JThh/vcursor/go/vcursor

Quick Start

Initialize the client and submit your first video generation task.

main.go
package main
import (
"fmt"
"log"
"github.com/JThh/vcursor/go/vcursor"
)
func main() {
client := vcursor.NewClient(vcursor.Options{APIKey: "vk-..."})
// Submit a video generation task
resp, err := client.Submit(&vcursor.SubmitRequest{
Prompt: "a cat playing piano in a jazz club",
})
if err != nil {
log.Fatal(err)
}
// Wait for completion with progress callback
result, err := client.WaitForCompletion(resp.TaskID, 0, func(p *vcursor.TaskProgress) {
fmt.Printf("%.0f%%\n", p.Data.Progress)
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result.Data.Products.URL)
}

Agent Mode

For complex tasks, use the Agent API to orchestrate multi-step generation.

agent.go
resp, err := client.SubmitAgent(&vcursor.AgentSubmitRequest{
Message: "create a 30s commercial for a coffee brand",
Duration: "30s",
AspectRatio: "16:9",
})
if err != nil {
log.Fatal(err)
}
result, err := client.WaitForAgentCompletion(resp.TaskID, 0, func(p *vcursor.AgentProgress) {
fmt.Printf("%.0f%% - %s\n", p.Progress, p.CurrentStage)
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result.VideoURL)

Concurrency Limiting

Manage your API usage with built-in concurrency checks.

go
status, err := client.CheckConcurrency("standard")
fmt.Printf("Used: %d/%.0f\n", status.Used, status.Limit)
// Client-side limit
maxConc := 10
client := vcursor.NewClient(vcursor.Options{
APIKey: "vk-...",
MaxConcurrency: &maxConc,
})