Quick Start Guide

Go from zero to protected in four steps. This guide walks you through creating an account, getting your API key, and integrating VerifyWall into your application.

1

Create an Account

Sign up for a VerifyWall account. Both plans include a 7-day free trial with full access to all features. A credit card is required — you won't be charged until the trial ends.

2

Get Your API Key

Navigate to Settings → API Keys in your dashboard and generate a new API key. Copy the key — you will need it for all API requests.

vw_live_abc123def456ghi789...

Store your API key securely. Use environment variables — never commit keys to version control.

3

Make Your First Request

Use your API key to make a test request. Send an email, IP address, or both — you get back a combined risk score with reasons for every flag.

curl -X POST https://api.verifywall.com/v1/verify \
  -H "Authorization: Bearer vw_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "ip": "203.0.113.42"}'
{
  "data": {
    "id": "a1b2c3...",
    "type": "verifications",
    "attributes": {
      "risk_score": 12,
      "risk_level": "low",
      "reasons": [],
      "email": "[email protected]",
      "ip": "203.0.113.42",
      "checks": [],
      "warnings": []
    }
  }
}

A risk_level of "low" means the subject passed all checks. See the risk scoring reference for details.

4

Integrate with Your Framework

Add VerifyWall to your signup flow. Block or flag high-risk users before they enter your system.

Laravel

// app/Http/Controllers/RegisterController.php
use Illuminate\Http\Request;

public function store(Request $request)
{
    $request->validate([
        'email' => 'required|email',
        'password' => 'required|min:8',
    ]);

    // Check risk with VerifyWall
    $response = Http::withToken(config('services.verifywall.key'))
        ->post('https://api.verifywall.com/v1/verify', [
            'email' => $request->email,
            'ip' => $request->ip(),
        ]);

    $risk = $response->json('data.attributes');

    if ($risk['risk_level'] === 'high') {
        return back()->withErrors([
            'email' => 'Registration blocked. Please contact support.',
        ]);
    }

    // Proceed with registration...
    $user = User::create([
        'email' => $request->email,
        'password' => Hash::make($request->password),
        'risk_score' => $risk['risk_score'],
    ]);

    return redirect()->route('dashboard');
}

Express.js

// routes/auth.js
import express from 'express';

const router = express.Router();

router.post('/register', async (req, res) => {
  const { email, password } = req.body;

  // Check risk with VerifyWall
  const response = await fetch('https://api.verifywall.com/v1/verify', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.VERIFYWALL_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      email,
      ip: req.ip,
    }),
  });

  const { data } = await response.json();

  if (data.attributes.risk_level === 'high') {
    return res.status(403).json({
      error: 'Registration blocked.',
    });
  }

  // Proceed with registration...
  const user = await User.create({
    email,
    password: await hash(password),
    riskScore: data.attributes.risk_score,
  });

  res.json({ user });
});

Django

# views.py
import requests
from django.conf import settings
from django.http import JsonResponse

def register(request):
    email = request.POST.get("email")
    password = request.POST.get("password")

    # Check risk with VerifyWall
    response = requests.post(
        "https://api.verifywall.com/v1/verify",
        headers={
            "Authorization": f"Bearer {settings.VERIFYWALL_API_KEY}",
        },
        json={
            "email": email,
            "ip": get_client_ip(request),
        },
    )

    data = response.json()["data"]["attributes"]

    if data["risk_level"] == "high":
        return JsonResponse(
            {"error": "Registration blocked."},
            status=403,
        )

    # Proceed with registration...
    user = User.objects.create_user(
        email=email,
        password=password,
    )

    return JsonResponse({"user": user.id})

What's next?