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

# Go SDK Configuration

> Learn how to configure and instantiate the Edgee Go SDK.

The Edgee Go SDK provides flexible ways to instantiate a client. All methods support automatic fallback to environment variables if configuration is not fully provided.

## Overview

The `NewClient` function accepts multiple input types:

* `nil` - reads from environment variables
* `string` - API key string
* `*Config` - Configuration struct (type-safe)
* `map[string]interface{}` - Plain map (flexible)

## Method 1: Environment Variables (Recommended for Production)

The simplest and most secure approach is to use environment variables. The SDK will automatically read `EDGEE_API_KEY` and optionally `EDGEE_BASE_URL`.

```go theme={"dark"}
import "github.com/edgee-ai/go-sdk/edgee"

func main() {
    // Reads from EDGEE_API_KEY and EDGEE_BASE_URL environment variables
    client, err := edgee.NewClient(nil)
    if err != nil {
        log.Fatal(err)
    }
}
```

## Method 2: String API Key (Quick Start)

For quick testing or simple scripts, pass the API key directly as a string:

```go theme={"dark"}
import "github.com/edgee-ai/go-sdk/edgee"

// API key only (uses default base URL: https://edgee.io)
client, err := edgee.NewClient("your-api-key")
if err != nil {
    log.Fatal(err)
}
```

**Note**: The base URL can also come from `EDGEE_BASE_URL`; otherwise it defaults to `https://edgee.io`. To use a custom base URL, use Method 3.

## Method 3: Configuration Struct (Type-Safe)

For better type safety and IDE support, use the `Config` struct:

```go theme={"dark"}
import "github.com/edgee-ai/go-sdk/edgee"

// Full configuration
client, err := edgee.NewClient(&edgee.Config{
    APIKey:  "your-api-key",
    BaseURL: "https://edgee.io", // optional, defaults to https://edgee.io
})
if err != nil {
    log.Fatal(err)
}
```

## Configuration Priority

The SDK uses the following priority order when resolving configuration:

1. **Constructor argument** (if provided)
2. **Environment variable** (if constructor argument is missing)
3. **Default value** (for `base_url` only, defaults to `https://edgee.io`)

## Complete Examples

> [accordion] Additional configuration recipes
>
> ### Example 1: Production Setup
>
> ```go theme={"dark"}
> // .env file
> // EDGEE_API_KEY=prod-api-key
> // EDGEE_BASE_URL=https://edgee.io
>
> package main
>
> import (
>     "log"
>     "github.com/joho/godotenv"
>     "github.com/edgee-ai/go-sdk/edgee"
> )
>
> func main() {
>     godotenv.Load()
>     client, err := edgee.NewClient(nil)
>     if err != nil {
>         log.Fatal(err)
>     }
>     // Use client
> }
> ```
>
> ### Example 2: Multi-Environment Setup
>
> ```go theme={"dark"}
> package main
>
> import (
>     "log"
>     "os"
>     "github.com/edgee-ai/go-sdk/edgee"
> )
>
> func createClient() (*edgee.Client, error) {
>     env := os.Getenv("ENVIRONMENT")
>     if env == "" {
>         env = "development"
>     }
>
>     switch env {
>     case "production":
>         return edgee.NewClient(nil) // Use environment variables
>     case "staging":
>         return edgee.NewClient(&edgee.Config{
>             APIKey:  os.Getenv("EDGEE_API_KEY"),
>         })
>     default:
>         return edgee.NewClient(&edgee.Config{
>             APIKey:  "dev-api-key",
>             BaseURL: "https://au.edgee.io",
>         })
>     }
> }
>
> func main() {
>     client, err := createClient()
>     if err != nil {
>         log.Fatal(err)
>     }
>     // Use client
> }
> ```

## Troubleshooting

### "EDGEE\_API\_KEY is not set" Error

**Problem**: The SDK can't find your API key.

**Solutions**:

1. Set the environment variable:
   ```bash theme={"dark"}
   export EDGEE_API_KEY="your-api-key"
   ```

2. Pass it directly:
   ```go theme={"dark"}
   client, err := edgee.NewClient("your-api-key")
   ```

3. Use Config struct:
   ```go theme={"dark"}
   client, err := edgee.NewClient(&edgee.Config{
       APIKey: "your-api-key",
   })
   ```

### Custom Base URL Not Working

**Problem**: Your custom base URL isn't being used.

**Check**:

1. Verify the base URL in your configuration
2. Check whether an explicit constructor URL takes precedence over `EDGEE_BASE_URL`
3. Ensure you're using the correct configuration method

```go theme={"dark"}
// This will use the BaseURL from Config struct
client, err := edgee.NewClient(&edgee.Config{
    APIKey:  "key",
    BaseURL: "https://custom.example.com",
})

// This will use EDGEE_BASE_URL env var if set, otherwise default
client, err := edgee.NewClient("key")
```

## Related Documentation

* [Go SDK Overview](https://www.edgee.ai/docs/llm-router/sdk/go.md) - Complete SDK documentation
* [API Reference](https://www.edgee.ai/docs/llm-router/api-reference.md) - REST API documentation
* [Quickstart Guide](https://www.edgee.ai/docs/quickstart.md) - Get started with Edgee


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.