Create Sub-Account
Copy
Ask AI
result, err := client.SubAccounts.Create(context.TODO(), zavudev.SubAccountCreateParams{
Name: zavudev.String("Client ABC"),
ExternalID: zavudev.String("client_123"),
CreditLimit: zavudev.Int(100000), // $1,000.00 in cents
Metadata: map[string]interface{}{
"plan": "enterprise",
"region": "us-east",
},
})
if err != nil {
panic(err)
}
// Save this — only shown once
fmt.Println(result.SubAccount.APIKey)
fmt.Println(result.SubAccount.ID)
fmt.Println(result.SubAccount.Status) // active
The
APIKey field is only included in the creation response. Store it securely.Get Sub-Account
Copy
Ask AI
result, err := client.SubAccounts.Get(context.TODO(), "jx7abc123def456")
if err != nil {
panic(err)
}
fmt.Println(result.SubAccount.Name)
fmt.Println(result.SubAccount.Status)
fmt.Println(result.SubAccount.TotalSpent)
fmt.Println(result.SubAccount.CreditLimit)
List Sub-Accounts
Copy
Ask AI
result, err := client.SubAccounts.List(context.TODO(), zavudev.SubAccountListParams{
Limit: zavudev.Int(50),
})
if err != nil {
panic(err)
}
for _, sub := range result.Items {
fmt.Printf("%s: $%.2f spent\n", sub.Name, float64(sub.TotalSpent)/100)
}
// Paginate
nextPage, err := client.SubAccounts.List(context.TODO(), zavudev.SubAccountListParams{
Limit: zavudev.Int(50),
Cursor: result.NextCursor,
})
Update Sub-Account
Copy
Ask AI
result, err := client.SubAccounts.Update(context.TODO(), "jx7abc123def456", zavudev.SubAccountUpdateParams{
CreditLimit: zavudev.Int(200000), // Increase to $2,000
Metadata: map[string]interface{}{
"plan": "enterprise-plus",
},
})
if err != nil {
panic(err)
}
fmt.Println(result.SubAccount.CreditLimit) // 200000
Suspend a Sub-Account
Copy
Ask AI
client.SubAccounts.Update(context.TODO(), "jx7abc123def456", zavudev.SubAccountUpdateParams{
Status: zavudev.String("inactive"),
})
// Re-activate later
client.SubAccounts.Update(context.TODO(), "jx7abc123def456", zavudev.SubAccountUpdateParams{
Status: zavudev.String("active"),
})
Get Sub-Account Balance
Copy
Ask AI
balance, err := client.SubAccounts.GetBalance(context.TODO(), "jx7abc123def456")
if err != nil {
panic(err)
}
fmt.Printf("Team balance: $%.2f\n", float64(balance.Balance)/100)
fmt.Printf("Sub-account spent: $%.2f\n", float64(balance.TotalSpent)/100)
fmt.Printf("Credit limit: $%.2f\n", float64(balance.CreditLimit)/100)
fmt.Println(balance.IsSubAccount) // true
Deactivate Sub-Account
Copy
Ask AI
result, err := client.SubAccounts.Deactivate(context.TODO(), "jx7abc123def456")
if err != nil {
panic(err)
}
fmt.Printf("Keys revoked: %d\n", result.KeysRevoked)
API Keys
List API Keys
Copy
Ask AI
result, err := client.SubAccounts.APIKeys.List(context.TODO(), "jx7abc123def456")
if err != nil {
panic(err)
}
for _, key := range result.Items {
fmt.Printf("%s (%s...): %s\n", key.Name, key.KeyPrefix, key.Environment)
}
Create API Key
Copy
Ask AI
result, err := client.SubAccounts.APIKeys.Create(context.TODO(), "jx7abc123def456", zavudev.SubAccountAPIKeyCreateParams{
Name: zavudev.String("Production Key"),
Environment: zavudev.String("live"),
})
if err != nil {
panic(err)
}
// Save this — only shown once
fmt.Println(result.APIKey.Key)
Revoke API Key
Copy
Ask AI
err := client.SubAccounts.APIKeys.Revoke(context.TODO(), "jx7abc123def456", "key_id_here")
if err != nil {
panic(err)
}
