Authentication¶
Chroma supports multiple authentication methods. All methods work with both self-hosted and Chroma Cloud deployments.
📁 Complete Examples: Find runnable authentication examples in the
examples/v2/authdirectory.
API v2 (Recommended)¶
Basic Authentication¶
package main
import (
    "context"
    "log"
    v2 "github.com/amikos-tech/chroma-go/pkg/api/v2"
)
func main() {
    client, err := v2.NewHTTPClient(
        v2.WithBaseURL("http://localhost:8000"),
        v2.WithAuth(v2.NewBasicAuthCredentialsProvider("admin", "password")),
    )
    if err != nil {
        log.Fatal(err)
    }
    if err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Token Authentication - Bearer¶
package main
import (
    "context"
    "log"
    v2 "github.com/amikos-tech/chroma-go/pkg/api/v2"
)
func main() {
    client, err := v2.NewHTTPClient(
        v2.WithBaseURL("http://localhost:8000"),
        v2.WithAuth(v2.NewTokenAuthCredentialsProvider("my-token", v2.AuthorizationTokenHeader)),
    )
    if err != nil {
        log.Fatal(err)
    }
    if err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Token Authentication - X-Chroma-Token¶
package main
import (
    "context"
    "log"
    v2 "github.com/amikos-tech/chroma-go/pkg/api/v2"
)
func main() {
    client, err := v2.NewHTTPClient(
        v2.WithBaseURL("http://localhost:8000"),
        v2.WithAuth(v2.NewTokenAuthCredentialsProvider("my-token", v2.XChromaTokenHeader)),
    )
    if err != nil {
        log.Fatal(err)
    }
    if err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Custom Headers¶
package main
import (
    "context"
    "log"
    v2 "github.com/amikos-tech/chroma-go/pkg/api/v2"
)
func main() {
    headers := map[string]string{
        "Authorization": "Bearer custom-token",
        "X-Custom-Header": "custom-value",
    }
    client, err := v2.NewHTTPClient(
        v2.WithBaseURL("http://localhost:8000"),
        v2.WithDefaultHeaders(headers),
    )
    if err != nil {
        log.Fatal(err)
    }
    if err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Chroma Cloud Authentication¶
package main
import (
    "context"
    "log"
    v2 "github.com/amikos-tech/chroma-go/pkg/api/v2"
)
func main() {
    client, err := v2.NewCloudClient(
        v2.WithCloudAPIKey("your-api-key"),
    )
    if err != nil {
        log.Fatal(err)
    }
    if err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
API v1 (Legacy)¶
Basic Authentication¶
package main
import (
    "context"
    "log"
    chroma "github.com/amikos-tech/chroma-go"
    "github.com/amikos-tech/chroma-go/types"
)
func main() {
    client, err := chroma.NewClient(
        chroma.WithBasePath("http://localhost:8000"),
        chroma.WithAuth(types.NewBasicAuthCredentialsProvider("admin", "password")),
    )
    if err != nil {
        log.Fatal(err)
    }
    if _, err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Token Authentication - Bearer¶
package main
import (
    "context"
    "log"
    chroma "github.com/amikos-tech/chroma-go"
    "github.com/amikos-tech/chroma-go/types"
)
func main() {
    client, err := chroma.NewClient(
        chroma.WithBasePath("http://localhost:8000"),
        chroma.WithAuth(types.NewTokenAuthCredentialsProvider("my-token", types.AuthorizationTokenHeader)),
    )
    if err != nil {
        log.Fatal(err)
    }
    if _, err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Token Authentication - X-Chroma-Token¶
package main
import (
    "context"
    "log"
    chroma "github.com/amikos-tech/chroma-go"
    "github.com/amikos-tech/chroma-go/types"
)
func main() {
    client, err := chroma.NewClient(
        chroma.WithBasePath("http://localhost:8000"),
        chroma.WithAuth(types.NewTokenAuthCredentialsProvider("my-token", types.XChromaTokenHeader)),
    )
    if err != nil {
        log.Fatal(err)
    }
    if _, err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}
Custom Headers¶
package main
import (
    "context"
    "log"
    chroma "github.com/amikos-tech/chroma-go"
)
func main() {
    headers := map[string]string{
        "Authorization": "Bearer custom-token",
        "X-Custom-Header": "custom-value",
    }
    client, err := chroma.NewClient(
        chroma.WithBasePath("http://localhost:8000"),
        chroma.WithDefaultHeaders(headers),
    )
    if err != nil {
        log.Fatal(err)
    }
    if _, err := client.Heartbeat(context.TODO()); err != nil {
        log.Fatal(err)
    }
}