go get github.com/WaveSpeedAI/wavespeed-goRun WaveSpeed AI models with a simple API:
import wavespeed "github.com/WaveSpeedAI/wavespeed-go"
client, err := wavespeed.NewClient("your-api-key")
if err != nil {
log.Fatal(err)
}
output, err := client.Run("wavespeed-ai/z-image/turbo", map[string]any{
"prompt": "Cat",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(output.Outputs[0]) // Output URLSet your API key via environment variable (You can get your API key from https://wavespeed.ai/accesskey):
export WAVESPEED_API_KEY="your-api-key"Or pass it directly when creating the client:
client, err := wavespeed.NewClient("your-api-key")output, err := client.Run("wavespeed-ai/z-image/turbo", map[string]any{
"prompt": "Cat",
}, &wavespeed.RunOptions{
TimeoutSeconds: 36000, // Max wait time in seconds (default: 36000)
PollIntervalSeconds: 1, // Status check interval (default: 1)
EnableSyncMode: false, // Single request mode, no polling (default: false)
})Use EnableSyncMode: true for a single request that waits for the result (no polling).
Note: Not all models support sync mode. Check the model documentation for availability.
output, err := client.Run("wavespeed-ai/z-image/turbo", map[string]any{
"prompt": "Cat",
}, &wavespeed.RunOptions{
EnableSyncMode: true,
})Configure retries at the client level:
client, err := wavespeed.NewClient("your-api-key", &wavespeed.ClientOptions{
MaxRetries: 0, // Task-level retries (default: 0)
MaxConnectionRetries: 5, // HTTP connection retries (default: 5)
RetryInterval: 1, // Base delay between retries in seconds (default: 1)
})Upload images, videos, or audio files:
url, err := client.Upload("/path/to/image.png")
if err != nil {
log.Fatal(err)
}
fmt.Println(url)| Variable | Description |
|---|---|
WAVESPEED_API_KEY |
WaveSpeed API key |
MIT