Go
go get github.com/hanzoai/go-sdk/v8 — package hanzoai at the module root, one service per capability, generated from the API's own document.
go get github.com/hanzoai/go-sdk/v8import hanzoai "github.com/hanzoai/go-sdk/v8"The package name is hanzoai and it sits at the module root, beside go.mod —
which is why the import path and the package identifier differ. The module path
carries its major, /v8, as Go requires of any release past v1: without it,
go get github.com/hanzoai/go-sdk resolves v1.0.5, an older client whose
methods are spelled differently. The source lives at
hanzo-go/sdk.
Set the key:
export HANZO_API_KEY="sk-..." # from platform.hanzo.aiThe shape
One configuration, one client, one service field per capability:
package main
import (
"context"
"fmt"
"os"
hanzoai "github.com/hanzoai/go-sdk/v8"
)
func main() {
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
models, _, err := client.AiAPI.GetModels(context.Background()).Execute()
if err != nil {
panic(err)
}
fmt.Println(models)
}Every operation is a request builder: the method takes a context.Context and
returns a request you finish with .Execute(), which answers the decoded value,
the *http.Response and an error. Optional parameters are setters on the
request in between.
The service field is the capability — client.AiAPI, client.BillingAPI,
client.KmsAPI — and the method is the operation. The
reference prints the pair for each one.
The chat, embeddings and messages routes speak the OpenAI and Anthropic wire
formats, so an existing Go client for either works against
https://api.hanzo.ai/v1 with a Hanzo key. This client adds the rest of /v1.