> ## Documentation Index
> Fetch the complete documentation index at: https://bisibility.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Go SDK

> Install and authenticate the Go SDK, then list projects.

## Install

```bash theme={null}
go get bisibility.com/sdk-go
```

## Authenticate

Keep the API root and credential in environment variables:

```bash theme={null}
export BISIBILITY_API_KEY="your-api-key"
export BISIBILITY_BASE_URL="https://your-host.example/api/v1"
```

The client accepts project API keys and
[personal access tokens](/docs/docs/api/personal-access-tokens).

## List projects

The runnable quickstart constructs the client and begins with a real read against
`GET /projects`:

{/* Generated from examples/go/quickstart/main.go (region client-usage). Do not edit. */}

```go theme={null}
apiKey, err := requiredEnv("BISIBILITY_API_KEY")
if err != nil {
	return err
}
baseURL, err := requiredEnv("BISIBILITY_BASE_URL")
if err != nil {
	return err
}

client, err := bisibility.NewClient(
	bisibility.WithAPIKey(apiKey),
	bisibility.WithBaseURL(baseURL),
)
if err != nil {
	return err
}

ctx := context.Background()
var keywordID string
defer func() {
	if keywordID == "" {
		return
	}
	fmt.Printf("Deleting keyword %s\n", keywordID)
	if _, deleteErr := client.DeleteKeyword(ctx, keywordID); deleteErr != nil && err == nil {
		err = deleteErr
	}
}()

fmt.Println("Listing projects")
projects, err := client.ListProjects(ctx)
if err != nil {
	return err
}
```

See [Projects](/docs/docs/api/projects#list-projects) for the request and response
contract.

## Next steps

The [Go SDK source](https://github.com/CorgiCorner/bisibility-sdk-go) contains
the complete client surface and typed resources. Use the
[API reference](/docs/docs/api/overview) to choose the next operation.
