Skip to content

Chroma Client

Chroma Cloud Client (v0.2.0+)

Options:

Options Usage Description Value Required
CloudAPIKey WithCloudAPIKey("api_key") Set Chroma Cloud API Key string Yes (default: uses CHROMA_API_KEY env var if available)
Tenant WithTenant("tenant") The default tenant to use. string Yes (default: uses CHROMA_TENANT env var if available)
Database WithDatabaseAndTenant("database","tenant") The default database and tenant (overrides any tenant set with Tenant). Option precedence is observed! string Yes (default: uses CHROMA_DATABASE env var if available)
~~Debug~~ ~~WithDebug()~~ DEPRECATED ~~Enable debug mode~~ Use WithLogger with debug level instead bool No (deprecated - use WithLogger)
Logger WithLogger(logger) Set a custom logger for HTTP request/response logging. See logging docs logger.Logger No (default: NoopLogger)
Default Headers WithDefaultHeaders(map[string]string) Set default HTTP headers for the client. These headers are sent with every request. map[string]string No (default: nil)
Custom HttpClient WithHTTPClient(http.Client) Set a custom http client. If this is set then SSL Cert and Insecure options are ignore. *http.Client No (default: Default HTTPClient)
Timeout WithTimeout(time.Duration) Set the timeout for the client. time.Duration No (default is the default HTTP client timeout duration)
package main

import (
    "context"
    "fmt"
    chroma "github.com/amikos-tech/chroma-go/pkg/api/v2"
    "log"
)

func main() {
    c, err := chroma.NewHTTPClient(
        chroma.WithCloudAPIKey("my-api-key"),
        chroma.WithDatabaseAndTenant("team-uuid", "my-database"),
        // chroma.WithDebug() is deprecated - use WithLogger instead for debug output
    )
    if err != nil {
        log.Fatalf("Error creating client: %s \n", err)
    }
    v, err := c.GetVersion(context.Background())
    if err != nil {
        log.Fatalf("Error getting version: %s \n", err)
    }
    fmt.Printf("Chroma API Version: %s \n", v)
}

Chroma Client (v0.2.0+)

Options:

Options Usage Description Value Required
API Endpoint WithBasePath("http://localhost:8000") The Chroma server base API. Non-empty valid URL string No (default: http://localhost:8000)
Tenant WithTenant("tenant") The default tenant to use. string No (default: default_tenant)
Database WithDatabaseAndTenant("database","tenant") The default database to use. string No (default: default_database)
~~Debug~~ ~~WithDebug()~~ DEPRECATED ~~Enable debug mode~~ Use WithLogger with debug level instead bool No (deprecated - use WithLogger)
Logger WithLogger(logger) Set a custom logger for HTTP request/response logging. See logging docs logger.Logger No (default: NoopLogger)
Default Headers WithDefaultHeaders(map[string]string) Set default HTTP headers for the client. These headers are sent with every request. map[string]string No (default: nil)
SSL Cert WithSSLCert("path/to/cert.pem") Set the path to the SSL certificate. valid path to SSL cert. No (default: Not Set)
Insecure WithInsecure() Disable SSL certificate verification No (default: Not Set)
Custom HttpClient WithHTTPClient(http.Client) Set a custom http client. If this is set then SSL Cert and Insecure options are ignore. *http.Client No (default: Default HTTPClient)
Auth WithAuth(v2.CredentialsProvider) Set the authentication method. The default is WithAuth(types.NewNoAuthCredentialsProvider()) CredentialsProvider No (default: NoAuth)
Timeout WithTimeout(time.Duration) Set the timeout for the client. time.Duration No (default is the default HTTP client timeout duration)
Transport WithTransport(*http.Transport) Set the transport for the client. http.RoundTripper No (default: Default HTTPClient)
package main

import (
    "context"
    "fmt"
    chroma "github.com/amikos-tech/chroma-go/pkg/api/v2"
    "log"
)

func main() {
    c, err := chroma.NewHTTPClient(
        chroma.WithBaseURL("http://localhost:8000"),
        chroma.WithDatabaseAndTenant("default_database", "default_tenant"),
        chroma.WithDefaultHeaders(map[string]string{"X-Custom-Header": "header-value"}),
        // chroma.WithDebug() is deprecated - use WithLogger instead for debug output
    )
    if err != nil {
        log.Fatalf("Error creating client: %s \n", err)
    }
    v, err := c.GetVersion(context.Background())
    if err != nil {
        log.Fatalf("Error getting version: %s \n", err)
    }
    fmt.Printf("Chroma API Version: %s \n", v)
}

Client version v0.1.4 or lower

V1 API Deprecation Notice

The V1 API has been removed in version v0.3.0 and later. To use the examples below, pin your dependency to v0.2.5 or earlier:

go get github.com/amikos-tech/[email protected]

Options:

Options Usage Description Value Required
basePath WithBasePath("http://localhost:8000") The Chroma server base API. Non-empty valid URL string No (default: http://localhost:8000)
Tenant WithTenant("tenant") The default tenant to use. string No (default: default_tenant)
Database WithDatabase("database") The default database to use. string No (default: default_database)
~~Debug~~ ~~WithDebug()~~ DEPRECATED ~~Enable debug mode~~ Use WithLogger with debug level instead bool No (deprecated - use WithLogger)
Logger WithLogger(logger) Set a custom logger for HTTP request/response logging. See logging docs logger.Logger No (default: NoopLogger)
Default Headers WithDefaultHeaders(map[string]string) Set default headers for the client. map[string]string No (default: nil)
SSL Cert WithSSLCert("path/to/cert.pem") Set the path to the SSL certificate. valid path to SSL cert. No (default: Not Set)
Insecure WithInsecure() Disable SSL certificate verification No (default: Not Set)
Custom HttpClient WithHTTPClient(http.Client) Set a custom http client. If this is set then SSL Cert and Insecure options are ignore. *http.Client No (default: Default HTTPClient)

Tenant and Database

The tenant and database are only supported for Chroma API version 0.4.15+.

Creating a new client:

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    chroma "github.com/amikos-tech/chroma-go"
)

func main() {
    client, err := chroma.NewClient(
        chroma.WithBasePath("http://localhost:8000"),
        chroma.WithTenant("my_tenant"),
        chroma.WithDatabase("my_db"),
        // chroma.WithDebug(true) is deprecated - use WithLogger instead for debug output
        chroma.WithDefaultHeaders(map[string]string{"Authorization": "Bearer my token"}),
        chroma.WithSSLCert("path/to/cert.pem"),
    )
    if err != nil {
        fmt.Printf("Failed to create client: %v", err)
    }
    // do something with client

    // Close the client to release any resources such as local embedding functions
    err = client.Close()
    if err != nil {
        fmt.Printf("Failed to close client: %v", err)
    }
}