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 variablesstring- 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.
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:
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:
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:
- Constructor argument (if provided)
- Environment variable (if constructor argument is missing)
- Default value (for
base_urlonly, defaults tohttps://edgee.io)
Complete Examples
Additional configuration recipes
Example 1: Production Setup
// .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
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:
-
Set the environment variable:
export EDGEE_API_KEY="your-api-key" -
Pass it directly:
client, err := edgee.NewClient("your-api-key") -
Use Config struct:
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:
- Verify the base URL in your configuration
- Check whether an explicit constructor URL takes precedence over
EDGEE_BASE_URL - Ensure you're using the correct configuration method
// 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 - Complete SDK documentation
- API Reference - REST API documentation
- Quickstart Guide - Get started with Edgee