Go SDK Documentation
Official Go SDK for InboxRisk API. Built for high-performance applications with concurrent request support.
Installation
Install using go get:
go get github.com/inboxrisk/go-sdkRequires Go 1.16 or higher. The SDK is production-ready with full concurrent request support.
Quick Setup
Initialize the SDK:
package main
import (
"github.com/inboxrisk/go-sdk"
)
func main() {
// Initialize client
client, err := inboxrisk.NewClient(&inboxrisk.Config{
APIKey: "your_api_key_here",
})
if err != nil {
panic(err)
}
// Or use environment variable
client, err := inboxrisk.NewClient(nil)
// Uses os.Getenv("INBOXRISK_API_KEY")
}💡 Tip: Store your API key in environment variables for production.
Usage Examples
Email Risk Check
Comprehensive email risk assessment:
package main
import (
"context"
"fmt"
"github.com/inboxrisk/go-sdk"
)
func main() {
client, _ := inboxrisk.NewClient(nil)
result, err := client.Email.RiskCheck(
context.Background(),
&inboxrisk.RiskCheckRequest{
Email: "user@example.com",
},
)
if err != nil {
panic(err)
}
fmt.Printf("Risk Score: %d\n", result.RiskScore)
fmt.Printf("Risk Level: %s\n", result.RiskLevel)
fmt.Printf("Is Disposable: %v\n", result.IsDisposable)
}Disposable Email Detection
Quick check for temporary emails:
result, err := client.Email.DisposableCheck(
context.Background(),
&inboxrisk.DisposableCheckRequest{
Email: "user@tempmail.com",
},
)
if err != nil {
panic(err)
}
if result.IsDisposable {
fmt.Printf("Provider: %s\n", result.Provider)
}Concurrent Requests
Handle multiple emails concurrently:
package main
import (
"context"
"sync"
"github.com/inboxrisk/go-sdk"
)
func main() {
client, _ := inboxrisk.NewClient(nil)
emails := []string{
"user1@example.com",
"user2@example.com",
"user3@example.com",
}
var wg sync.WaitGroup
results := make([]*inboxrisk.RiskCheckResponse, len(emails))
for i, email := range emails {
wg.Add(1)
go func(idx int, addr string) {
defer wg.Done()
result, _ := client.Email.RiskCheck(
context.Background(),
&inboxrisk.RiskCheckRequest{
Email: addr,
},
)
results[idx] = result
}(i, email)
}
wg.Wait()
}Bulk Email Checking
Check multiple emails in a single request:
result, err := client.Email.BulkCheck(
context.Background(),
&inboxrisk.BulkCheckRequest{
Emails: []string{
"user1@example.com",
"user2@example.com",
"user3@example.com",
},
},
)
if err != nil {
panic(err)
}
for _, emailResult := range result.Results {
fmt.Printf("%s: %s\n",
emailResult.Email,
emailResult.RiskLevel,
)
}Error Handling
Handle errors using Go's error handling pattern:
package main
import (
"errors"
"github.com/inboxrisk/go-sdk"
)
func checkEmail(email string) error {
client, _ := inboxrisk.NewClient(nil)
result, err := client.Email.RiskCheck(
context.Background(),
&inboxrisk.RiskCheckRequest{Email: email},
)
if err != nil {
var apiErr *inboxrisk.APIError
if errors.As(err, &apiErr) {
// Handle API errors
switch apiErr.Code {
case "INVALID_EMAIL":
return errors.New("invalid email format")
case "RATE_LIMITED":
return errors.New("rate limit exceeded")
default:
return errors.New("API error")
}
}
return err
}
return nil
}⚠️ Important: Implement proper error handling and retry logic for production applications.
Advanced Configuration
client, err := inboxrisk.NewClient(&inboxrisk.Config{
APIKey: "your_api_key",
BaseURL: "https://api.inboxrisk.com",
Timeout: 30 * time.Second,
MaxRetries: 3,
HTTPClient: &http.Client{
Timeout: 30 * time.Second,
},
})
if err != nil {
panic(err)
}