Python SDK
Official Python client library
Package: verifyforge
Installation
pip install verifyforge
Quick Start
from verifyforge import VerifyForge
client = VerifyForge(api_key="your_api_key_here")
result = client.validate("user@example.com")
if result.data.is_valid:
print(f"✓ Email is valid!")
print(f"Reachability: {result.data.reachability}")
Single Email Validation
result = client.validate("test@example.com")
print(f"Valid: {result.data.is_valid}")
print(f"Disposable: {result.data.disposable}")
print(f"Role Account: {result.data.role_account}")
print(f"Reachability: {result.data.reachability}")
# Check MX records
for mx in result.data.mx_records_list:
print(f"MX: {mx.exchange} (priority: {mx.priority})")
Bulk Email Validation
Validate up to 100 emails in a single request:
emails = [
"user1@example.com",
"user2@example.com",
"user3@example.com",
]
result = client.validate_bulk(emails)
print(f"Total: {result.summary.total}")
print(f"Duplicates removed: {result.summary.duplicates_removed}")
print(f"Credits used: {result.credits_used}")
for item in result.results:
status = "✓" if item.is_valid else "✗"
print(f"{status} {item.email}")
Error Handling
from verifyforge import (
VerifyForge,
AuthenticationError,
InsufficientCreditsError,
ValidationError,
)
client = VerifyForge(api_key="your_api_key")
try:
result = client.validate("test@example.com")
except AuthenticationError:
print("Invalid API key")
except InsufficientCreditsError:
print("Not enough credits")
except ValidationError as e:
print(f"Validation error: {e.message}")
Context Manager
Automatically manages the session:
with VerifyForge(api_key="your_api_key") as client:
result = client.validate("test@example.com")
print(f"Valid: {result.data.is_valid}")
Configuration
client = VerifyForge(
api_key="your_api_key",
base_url="https://verifyforge.com", # Optional
timeout=30, # Optional, in seconds
)
Type Hints
Full type hints for better IDE support:
from verifyforge import ValidationResponse, BulkValidationResponse
result: ValidationResponse = client.validate("test@example.com")
bulk_result: BulkValidationResponse = client.validate_bulk(emails)
API Reference
Constructor
VerifyForge(api_key: str, base_url: str = "https://verifyforge.com", timeout: int = 30)
Parameters:
api_key(str): Your API keybase_url(str, optional): Base URL, defaults to"https://verifyforge.com"timeout(int, optional): Timeout in seconds, defaults to30
Methods
validate(email: str) -> ValidationResponse
Validate a single email address.
Raises:
ValidationError: Invalid email formatInsufficientCreditsError: Insufficient creditsAPIError: Validation failed
validate_bulk(emails: List[str]) -> BulkValidationResponse
Validate up to 100 email addresses.
Raises:
ValidationError: Invalid email list or exceeds 100 emailsInsufficientCreditsError: Insufficient creditsAPIError: Validation failed
Response Types
ValidationResponse
@dataclass
class ValidationResponse:
success: bool
data: ValidationResult
credits_used: int
remaining_credits: int
validation_duration: Optional[int]
api_version: Optional[str]
ValidationResult
@dataclass
class ValidationResult:
email: str
is_valid: bool
syntax: SyntaxValidation
mx_records_list: List[MXRecord]
smtp: SMTPAnalysis
disposable: bool
role_account: bool
free_provider: bool
reachability: str # "safe", "risky", "invalid", "unknown"
suggestion: Optional[str]
gravatar: Optional[Gravatar]
Exceptions
All exceptions inherit from VerifyForgeError:
AuthenticationError: Invalid API key (401)InsufficientCreditsError: Insufficient credits (402)ValidationError: Request validation failed (400)RateLimitError: Rate limit exceeded (429)APIError: General API error (5xx)
Requirements
- Python 3.8+
- requests >= 2.31.0
