SDKs

SDKs

Official SDKs wrap the same REST API in four common backend languages — Node.js, Python, Go, and Rust. Every SDK maps to the same documented request and response objects.

Verified packages

Each sample below calls a member verified present in the package a customer installs, not in our source tree: verifex 0.4.0 (npm), verifex 0.5.0 (PyPI), github.com/Verifex-dev/verifex-go-sdk v0.4.0 (proxy.golang.org), verifex 0.4.0 (crates.io). Checked 2026-08-19.

Branch on the clearance check, never on the risk band alone. When a result does not clear, the blockers list says why, and the vocabulary is closed: matches_found, screening_unavailable, coverage_incomplete, restricted_matches, plan_scoped_clear, exact_only_not_a_clearance.

Install and screen

Node.js: npm install verifex
import { Verifex } from "verifex";

const verifex = new Verifex({ apiKey: "vfx_your_api_key" });

const result = await verifex.screen({
  name: "Alejandro García López",
  type: "person",
  country: "MX",
});

// isClear is fail-closed: it is false unless nothing matched, every in-plan
// source was screened, the candidate set was complete and the mode could earn
// a clearance. riskLevel alone can be "clear" when none of that holds.
if (result.isClear) {
  proceed();
} else {
  escalate(result.clearBlockers); // e.g. ["exact_only_not_a_clearance"]
}
Python: pip install verifex
from verifex import VerifexClient

client = VerifexClient("vfx_your_api_key")

result = client.screen(
    "Alejandro García López",
    type="person",
    country="MX",
)

# is_clear is fail-closed; risk_level on its own is not a clearance.
if result.is_clear:
    proceed()
else:
    escalate(result.clear_blockers)  # e.g. ["coverage_incomplete"]
Go: go get github.com/Verifex-dev/verifex-go-sdk
import (
    "context"
    verifex "github.com/Verifex-dev/verifex-go-sdk"
)

client := verifex.New("vfx_your_api_key")

result, err := client.Screen(context.Background(), verifex.ScreenRequest{
    Name: "Alejandro García López",
    Type: "person",
})

// IsClear is fail-closed; RiskLevel on its own is not a clearance.
if result.IsClear() {
    proceed()
} else {
    escalate(result.ClearBlockers()) // e.g. ["restricted_matches"]
}
Rust: cargo add verifex
use verifex::{Verifex, ScreenRequest};

let client = Verifex::new("vfx_your_api_key");

let result = client
    .screen(ScreenRequest {
        name: "Alejandro García López".into(),
        type_: Some("person".into()),
        ..Default::default()
    })
    .await?;

// is_clear() is fail-closed; risk_level on its own is not a clearance.
if result.is_clear() {
    proceed();
} else {
    escalate(result.clear_blockers()); // e.g. ["plan_scoped_clear"]
}

SDK or REST

Use the official SDKs for faster integration, or call the REST API directly from any backend. The API remains REST-first, and every SDK maps to the same documented request and response objects.