Skip to content

Go Client (client-go)

Module: github.com/ai-mpathyminds/yaagents-client-go Full API reference: github.com/ai-mpathyminds/yaagents-client-go

Install

Terminal window
go get github.com/ai-mpathyminds/yaagents-client-go@v0.3.0

Minimal example — clarification handling

package main
import (
"context"
"errors"
"fmt"
"log"
client "github.com/ai-mpathyminds/yaagents-client-go"
)
func main() {
c := client.New(
"http://localhost:8120",
client.WithToken("demo-token"),
client.WithTenantID("tenant-001"),
)
ctx := context.Background()
// First call: missing required field
result, err := c.Campaigns().ByID("cmp-123").Optimizations().Create(ctx, map[string]any{})
if err != nil {
var clarErr *client.ClarificationRequiredError
if errors.As(err, &clarErr) {
fmt.Println("Missing fields:")
for _, inp := range clarErr.RequiredInputs {
fmt.Printf(" - %s (%s)\n", inp.Name, inp.Question)
}
// Re-submit with the required field
result, err = c.Campaigns().ByID("cmp-123").Optimizations().Create(ctx, map[string]any{
"goal": "ctr",
})
}
if err != nil {
log.Fatal(err)
}
}
if result.Err() == nil {
fmt.Printf("Created: %+v\n", result.Data())
}
}

Error-type switching

var (
clarErr *client.ClarificationRequiredError
validErr *client.ValidationFailedError
forbidErr *client.ForbiddenError
)
switch {
case errors.As(err, &clarErr):
// prompt user for clarErr.RequiredInputs
case errors.As(err, &validErr):
// surface validErr.Errors to caller
case errors.As(err, &forbidErr):
// permission denied
default:
log.Fatal(err)
}

Key API symbols

SymbolKindPurpose
client.New(baseURL, opts...)constructorRoot client
client.WithToken(token)optionBearer token
client.WithTenantID(id)optionX-Tenant-ID header
c.Campaigns().ByID(id).Optimizations().Create(ctx, body)methodPOST /campaigns/{id}/optimizations
(*AgenticResult).Err()methodNon-nil for every non-success outcome
(*AgenticResult).Data()methodDecoded response body on success

Run against campaign-api-go

Terminal window
cd examples/campaign-api-go && docker compose up -d
curl -X POST http://localhost:8120/campaigns/cmp-1/optimizations \
-H "Authorization: Bearer demo-token" \
-H "X-Tenant-ID: tenant-001" \
-H "Content-Type: application/json" \
-d '{"goal": "ctr"}'
# → 201 application/json

See Examples for the full five-flow walkthrough.