Skip to content

Go SDK

Terminal window
go get github.com/lbframe/sdk-go

Requires Go 1.23+.

import klozeo "github.com/lbframe/sdk-go"
client := klozeo.New("sk_live_your_api_key")
// Create a lead
// Optional string fields use pointers to distinguish "not set" from "empty string"
lead, err := client.Create(ctx, &klozeo.Lead{
Name: "Acme Corp",
Source: "website",
City: "Berlin",
Email: klozeo.Ptr("contact@acme.com"),
})
// List with filters
leads, err := client.List(ctx,
klozeo.City().Eq("Berlin"),
klozeo.Rating().Gte(4.0),
klozeo.Sort(klozeo.FieldRating, klozeo.Desc),
klozeo.Limit(20),
)
// Iterate all pages (Go 1.23+ range-over-function iterator)
for lead, err := range client.Iterator(ctx, klozeo.City().Eq("Berlin")) {
if err != nil {
log.Fatal(err)
}
fmt.Println(lead.Name)
}
// Export to CSV
reader, err := client.Export(ctx, klozeo.ExportCSV)

Combine Or() with standard filters in the same List() call:

leads, err := client.List(ctx,
klozeo.City().Eq("Paris"), // AND city = Paris
klozeo.Or().Rating().Gte(4.0), // OR rating >= 4
)
import "errors"
resp, err := client.Create(ctx, &klozeo.Lead{Name: "Acme", Source: "web"})
if err != nil {
var apiErr *klozeo.APIError
if errors.As(err, &apiErr) {
switch apiErr.Code {
case klozeo.ErrRateLimit:
// retry after apiErr.RetryAfter
case klozeo.ErrNotFound:
// lead not found
case klozeo.ErrUnauthorized:
// invalid API key
}
}
}
note, err := client.AddNote(ctx, leadID, "Called back — very interested.")
notes, err := client.Notes(ctx, leadID)
err = client.DeleteNote(ctx, noteID)
// Create up to 100 leads at once
results, err := client.BatchCreate(ctx, leads)
// Delete by IDs
err = client.BatchDelete(ctx, []string{"cl_...", "cl_..."})

Full API reference: pkg.go.dev/github.com/lbframe/sdk-go