All Integrations

Fidro + Go Integration

Fraud detection for Go applications. Follow this guide to add email validation and IP intelligence in minutes.

Overview

To integrate Fidro with Go, use the standard net/http package to send a POST request to the Fidro API with the user's email and IP address. Fidro returns email validation, disposable domain checks, IP geolocation, VPN detection, and a fraud risk score in a single JSON response. Go's standard library handles everything — no third-party dependencies or SDKs are needed.

Fidro is a fraud detection API that combines email validation, IP intelligence, geolocation analysis, and Stripe chargeback prevention in a single API call. It returns a risk score with a clear recommendation — allow, review, or block — so you can stop fraud without building your own scoring logic.

1. Install Dependencies

# No external dependencies needed

You will also need a Fidro API key. Sign up for free to get one.

2. Email Validation

Send a POST request to Fidro's /v1/validate endpoint with the user's email address and optional IP. Fidro validates the email, checks for disposable domains, analyzes the IP for VPN/proxy/Tor usage, and returns a risk score with a clear recommendation — allow, review, or block.

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

type ValidateRequest struct {
	Email string `json:"email"`
	IP    string `json:"ip"`
}

type ValidateResponse struct {
	Data struct {
		RiskScore      float64 `json:"risk_score"`
		Recommendation string  `json:"recommendation"`
	} `json:"data"`
}

func validateEmail(email, ip string) (*ValidateResponse, error) {
	apiKey := os.Getenv("FIDRO_API_KEY")

	payload, _ := json.Marshal(ValidateRequest{Email: email, IP: ip})

	req, err := http.NewRequest("POST", "https://api.fidro.io/v1/validate", bytes.NewBuffer(payload))
	if err != nil {
		return nil, fmt.Errorf("creating request: %w", err)
	}

	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return nil, fmt.Errorf("sending request: %w", err)
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		return nil, fmt.Errorf("API error: %s", resp.Status)
	}

	var result ValidateResponse
	if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
		return nil, fmt.Errorf("decoding response: %w", err)
	}

	return &result, nil
}

func main() {
	result, err := validateEmail("test@example.com", "8.8.8.8")
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
		os.Exit(1)
	}

	fmt.Printf("Risk score: %.2f\n", result.Data.RiskScore)
	fmt.Printf("Recommendation: %s\n", result.Data.Recommendation)
}

3. IP Lookup

Send a POST request to Fidro's /v1/ip-lookup endpoint with an IP address. Fidro returns geolocation data (country, city, ISP), VPN and proxy detection, Tor exit node identification, and threat intelligence — all in a single API call.

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

type IPLookupRequest struct {
	IP string `json:"ip"`
}

type IPLookupResponse struct {
	Data struct {
		Country string `json:"country"`
		IsVPN   bool   `json:"is_vpn"`
	} `json:"data"`
}

func lookupIP(ip string) (*IPLookupResponse, error) {
	apiKey := os.Getenv("FIDRO_API_KEY")

	payload, _ := json.Marshal(IPLookupRequest{IP: ip})

	req, err := http.NewRequest("POST", "https://api.fidro.io/v1/ip-lookup", bytes.NewBuffer(payload))
	if err != nil {
		return nil, fmt.Errorf("creating request: %w", err)
	}

	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return nil, fmt.Errorf("sending request: %w", err)
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		return nil, fmt.Errorf("API error: %s", resp.Status)
	}

	var result IPLookupResponse
	if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
		return nil, fmt.Errorf("decoding response: %w", err)
	}

	return &result, nil
}

func main() {
	result, err := lookupIP("8.8.8.8")
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
		os.Exit(1)
	}

	fmt.Printf("Country: %s\n", result.Data.Country)
	fmt.Printf("Is VPN: %v\n", result.Data.IsVPN)
}

Next steps

Explore the full API reference, try the free email checker, or see how Fidro compares to other solutions.

Frequently Asked Questions

How do I add fraud detection to Go?
You can add fraud detection to Go by calling Fidro's REST API with a POST request containing the user's email and IP address. Fidro returns a risk score and a clear recommendation — allow, review, or block. The entire integration takes about 5 minutes using Go's standard net/http package.
Does Fidro have a Go SDK?
Fidro doesn't require an SDK. It's a standard REST API that works with Go's built-in net/http package. Just marshal your request to JSON, send a POST request, and decode the JSON response — no external dependencies needed.
Is Fidro free to use with Go?
Yes, Fidro offers a free plan with 1,000 validations per month, no credit card required. It works with any Go application, whether you're using Gin, Echo, Chi, or the standard library HTTP server.

Start catching bad signups in the next 5 minutes

Create your account, grab your API key, and send your first request. Free plan with 200 validations/month. No credit card. Cancel anytime.

Get Started Free