# Go SDK — API Reference

> Go SDK API reference for Aerostack — database, auth, AI, cache, and realtime methods for Go backend services and CLIs.

## Database

```go
client.DB.Query[T](ctx, sql, params...)           // []T, error
client.DB.QueryOne[T](ctx, sql, params...)         // *T, error
client.DB.Exec(ctx, sql, params...)                // error
client.DB.Batch(ctx, []aerostack.BatchStatement)   // []aerostack.BatchResult, error
```

## Cache

```go
client.Cache.Get(ctx, key, dest)                   // bool (found), error
client.Cache.Set(ctx, key, value, ttlSeconds)       // error
client.Cache.Delete(ctx, key)                       // error
client.Cache.Has(ctx, key)                          // bool, error
```

## Auth

```go
client.Auth.VerifyToken(ctx, token)                // *aerostack.User, error
```

## Storage

```go
client.Storage.Upload(ctx, aerostack.UploadInput{
    File: reader,
    Path: "uploads/file.jpg",
    ContentType: "image/jpeg",
})                                                  // aerostack.UploadResult, error

client.Storage.Delete(ctx, key)                    // error
```

## AI

```go
client.AI.Complete(ctx, aerostack.CompletionInput{
    Prompt: "Hello",
    Model: "gpt-4o-mini",
    MaxTokens: 256,
})                                                  // aerostack.CompletionResult, error

client.AI.Embed(ctx, "text to embed")               // []float64, error
```

## Queue

```go
client.Queue.Send(ctx, "job-type", payload, aerostack.QueueOptions{
    DelaySeconds: 60,
    MaxRetries: 3,
})                                                  // error
```

## Realtime

```go
client.Socket.Emit(ctx, "event", data, "room/id") // void
channel, err := client.Realtime.Channel("table")
channel.On("INSERT", func(p aerostack.RealtimePayload) { ... })
channel.Subscribe()
channel.Track(map[string]any{"userId": "123"})
channel.Unsubscribe()
```

## Secrets

```go
client.Secrets.Get(ctx, "SECRET_NAME")             // string, error
```
