Go SDK
The SignalStack Go SDK provides a strongly typed client using standard net/http withcontext.Context support for cancellation and timeouts.
Installation
Code
go get github.com/signalstack/sdk-goClient initialization
Code
import "github.com/signalstack/sdk-go"
// Using environment variable
client := signalstack.NewClient()
// Explicit configuration
client := signalstack.NewClient(
signalstack.WithAPIKey("ssk_live_YOUR_API_KEY"),
signalstack.WithTimeout(30 * time.Second),
signalstack.WithMaxRetries(3),
)Verify a business
Code
ctx := context.Background()
result, err := client.VerifyBusiness(ctx, signalstack.VerifyBusinessInput{
CompanyName: "Acme Corp",
Jurisdiction: "us_de",
Officers: true,
Filings: true,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %s
", result.Status) // "active"
fmt.Printf("Trust score: %.2f
", result.TrustScore) // 0.94
for _, officer := range result.Officers {
fmt.Printf(" %s — %s
", officer.Name, officer.Role)
}Analyze a document
Code
result, err := client.VerifyDocument(ctx, signalstack.VerifyDocumentInput{
Source: signalstack.DocumentSourceURL,
Content: "https://example.com/report.pdf",
CheckDeepfakes: true,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("AI probability: %.2f
", result.AIGeneratedProbability) // 0.87
fmt.Printf("Flags: %v
", result.ManipulationFlags)
// ["ai_generated_text", "metadata_stripped"]Verify media provenance
Code
result, err := client.VerifyMedia(ctx, signalstack.VerifyMediaInput{
URL: "https://example.com/photo.jpg",
CheckDeepfakes: true,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Authenticity: %s
", result.Authenticity) // "manipulated"
fmt.Printf("Deepfake score: %.2f
", result.DeepfakeScore) // 0.94
fmt.Printf("Provenance: %s
", result.ProvenanceSource)
// "https://original-source.com/photo.jpg"Verify a claim
Code
result, err := client.VerifyClaim(ctx, signalstack.VerifyClaimInput{
Claim: "Water boils at 100°C at sea level",
Sources: []string{"web", "wikipedia", "semantic_scholar"},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Verdict: %s
", result.Verdict) // "true"
fmt.Printf("Trust score: %.2f
", result.TrustScore) // 0.97
for _, evidence := range result.Evidence {
fmt.Printf(" [%s] %s
", evidence.Source, evidence.Snippet)
}Error handling
Code
import "github.com/signalstack/sdk-go/serrors"
result, err := client.VerifyClaim(ctx, input)
if err != nil {
var rateLimit *serrors.RateLimitError
if errors.As(err, &rateLimit) {
log.Printf("Rate limited. Retry after %ds", rateLimit.RetryAfter)
return
}
var auth *serrors.AuthenticationError
if errors.As(err, &auth) {
log.Fatal("Check API key")
}
var validation *serrors.ValidationError
if errors.As(err, &validation) {
log.Printf("Validation: %+v", validation.Details)
return
}
log.Fatalf("Unexpected error: %v", err)
}Configuration
| Option | Default | Description |
|---|---|---|
WithAPIKey | SIGNALSTACK_API_KEY env | Your API key |
WithTimeout | 30s | Request timeout |
WithMaxRetries | 3 | Max retries for 429/5xx |
WithBaseURL | https://signal-stack-ten.vercel.app/v1 | API base URL |
WithHTTPClient | http.DefaultClient | Custom HTTP client |