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

Client 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

OptionDefaultDescription
WithAPIKeySIGNALSTACK_API_KEY envYour API key
WithTimeout30sRequest timeout
WithMaxRetries3Max retries for 429/5xx
WithBaseURLhttps://signal-stack-ten.vercel.app/v1API base URL
WithHTTPClienthttp.DefaultClientCustom HTTP client