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-sdk

Requires 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) }