Skip to content

Quickstart

Sign up at app.validationcheck.net, open API keys, and create a key. You’ll see it once, so copy it somewhere safe.

  • vc_test_… keys are free and return test answers. Start here.
  • vc_live_… keys run real checks and use credits. They’re available once your email address is verified.
Terminal window
curl https://api.validationcheck.net/v1/email \
-H "Authorization: Bearer $VC_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "valid@test.validationcheck.net"}'
// Node 18+, Deno, Bun, Workers
const res = await fetch("https://api.validationcheck.net/v1/email", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.VC_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ email: "jane@example.com" }),
});
const { data } = await res.json();
if (data.recommendation.action === "block") rejectSignup();
import os, requests
res = requests.post(
"https://api.validationcheck.net/v1/email",
headers={"Authorization": f"Bearer {os.environ['VC_KEY']}"},
json={"email": "jane@example.com"},
timeout=15,
)
data = res.json()["data"]
print(data["verdict"]["status"], data["risk"]["score"])
<?php
$ch = curl_init("https://api.validationcheck.net/v1/email");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("VC_KEY"), "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["email" => "jane@example.com"]),
]);
$data = json_decode(curl_exec($ch), true)["data"];
echo $data["recommendation"]["action"];
body := strings.NewReader(`{"email": "jane@example.com"}`)
req, _ := http.NewRequest("POST", "https://api.validationcheck.net/v1/email", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("VC_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
var out struct {
Data struct {
Recommendation struct{ Action string } `json:"recommendation"`
} `json:"data"`
}
json.NewDecoder(res.Body).Decode(&out)
fmt.Println(out.Data.Recommendation.Action)
require "net/http"
require "json"
uri = URI("https://api.validationcheck.net/v1/email")
res = Net::HTTP.post(uri, { email: "jane@example.com" }.to_json,
"Authorization" => "Bearer #{ENV["VC_KEY"]}", "Content-Type" => "application/json")
puts JSON.parse(res.body)["data"]["recommendation"]["action"]

ValidationCheck is a plain REST API: HTTPS, JSON in and out, and your key in the Authorization: Bearer … header. The examples above are all the same request, so anything that can send an HTTP request works, including no-code tools (see Integrations).

Base URL https://api.validationcheck.net
Lookups POST /v1/email, /v1/phone, /v1/phone/type, /v1/ip, /v1/domain/age, /v1/domain/email-auth, /v1/check with a JSON body
Account GET /v1/account
Auth Authorization: Bearer vc_live_… (or vc_test_…)
Errors Non-2xx status with {"success": false, "error": {"code": …}} (codes)

The full machine-readable spec is at /openapi.json (OpenAPI 3.1). Import it into Postman, Insomnia, or Bruno for a ready-made collection, or feed it to a code generator for a typed client. Every endpoint is also in the API reference.

Branch on data.recommendation.action:

Action Meaning
approve Accept it.
verify Probably fine; confirm with a code or a verification email.
review Accept with care, or add friction.
block Don’t accept it.

data.verdict says what we found and data.risk says how risky it is; see Responses.