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.
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.
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.
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.
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?
- Read the full API reference — explore all endpoints, parameters, and response formats.
- Understand rate limits — learn how rate limiting works for each plan.
- Handle errors gracefully — implement proper error handling for all API responses.