This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
WaveSpeed Go SDK - Official Go SDK for WaveSpeedAI inference platform.
# Run all tests
go test -v ./...
# Run a single test file
go test -v ./api
# Run a specific test
go test -v -run TestRunSuccess ./api# Build the package
go build ./...# Format code
go fmt ./...
# Run linter
go vet ./...
# Update dependencies
go mod tidyEntry point: import "github.com/WaveSpeedAI/wavespeed-go"
The SDK provides a simple client for running models:
output, err := wavespeed.Run("model-id", map[string]any{"input": "data"}, 0, 0, false, 0)
outputs := output["outputs"].([]any)Key modules in api/:
client.go- Client implementationapi.go- Global Run and Upload functions
Client- Main client struct with configurationapi.NewClient(apiKey, baseURL, connectionTimeout, maxRetries, maxConnectionRetries, retryInterval)- Create new client
- Sync Mode: Single request that waits for result
- Retry Logic: Configurable task-level and connection-level retries
- Timeout Control: Per-request and overall timeouts
- File Upload: Direct file upload to WaveSpeed storage
Client-level configuration via api.NewClient:
apiKey- API key (or fromWAVESPEED_API_KEY)baseURL- API base URL (default: https://api.wavespeed.ai)connectionTimeout- Connection timeout in seconds (default: 10.0)maxRetries- Task-level retries (default: 0)maxConnectionRetries- HTTP connection retries (default: 5)retryInterval- Base retry delay in seconds (default: 1.0)
Per-request configuration via Run parameters:
timeout- Override timeoutpollInterval- Override poll intervalenableSyncMode- Use sync modemaxRetries- Override retry count
WAVESPEED_API_KEY- API key
Tests are located in:
config_test.go- Configuration testsapi/client_test.go- API client tests
Coverage:
- Client initialization
- Run method with different options
- Sync mode
- Retry logic
- Upload functionality