Async Python SDK for ValidKit Email Verification API - Built for AI Agents
Project description
ValidKit Python SDK
Async Python SDK for ValidKit Email Verification API - Built for AI Agents and high-volume applications.
Features
- 🚀 Fully Async: Built on aiohttp for maximum performance
- 🤖 AI-Agent Optimized: Token-efficient responses and agent-friendly formats
- 📦 Batch Processing: Verify up to 10,000 emails in a single request
- 🔄 Smart Retries: Automatic retry logic with exponential backoff
- 🌊 Connection Pooling: Efficient connection reuse for high throughput
- 📊 Progress Tracking: Real-time progress updates for large batches
- 🪝 Webhook Support: Async webhook handling for batch results
- 🔍 Type Safety: Full type hints and Pydantic models
Full API Documentation: https://api.validkit.com/docs/openapi.json
Installation
pip install validkit
Quick Start
import asyncio
from validkit import AsyncValidKit
async def main():
# Initialize the client
async with AsyncValidKit(api_key="your_api_key") as client:
# Single email verification
result = await client.verify_email("user@example.com")
print(f"Valid: {result.valid}")
# Batch verification
emails = ["user1@example.com", "user2@example.com", "user3@example.com"]
results = await client.verify_batch(emails)
for email, result in results.items():
print(f"{email}: {result.valid}")
asyncio.run(main())
Advanced Usage
Batch Processing with Progress
async def verify_large_batch():
async with AsyncValidKit(api_key="your_api_key") as client:
emails = ["email{}@example.com".format(i) for i in range(10000)]
# Process with progress callback
async def progress_callback(processed, total):
print(f"Progress: {processed}/{total} ({processed/total*100:.1f}%)")
results = await client.verify_batch(
emails,
chunk_size=1000,
progress_callback=progress_callback
)
valid_count = sum(1 for r in results.values() if r.valid)
print(f"Valid emails: {valid_count}/{len(emails)}")
Webhook Support
# Start async batch job with webhook
job = await client.verify_batch_async(
emails=large_email_list,
webhook_url="https://your-app.com/webhook/validkit",
webhook_headers={"Authorization": "Bearer your_token"}
)
print(f"Batch job started: {job.id}")
print(f"Check status at: {job.status_url}")
Custom Configuration
from validkit import AsyncValidKit, ValidKitConfig
config = ValidKitConfig(
api_key="your_api_key",
base_url="https://api.validkit.com",
timeout=30,
max_retries=3,
max_connections=100,
rate_limit=10000 # requests per minute
)
async with AsyncValidKit(config=config) as client:
# Your code here
pass
Response Format
Single Email Response
{
"valid": true,
"email": "user@example.com",
"format": {"valid": true},
"disposable": {"valid": true, "value": false},
"mx": {"valid": true, "records": ["mx1.example.com"]},
"smtp": {"valid": true}
}
Batch Response (Compact Format)
{
"user1@example.com": {"v": true, "d": false},
"user2@example.com": {"v": false, "r": "invalid_format"},
"user3@example.com": {"v": true, "d": true}
}
Where:
v: valid (boolean)d: disposable (boolean)r: reason (string, only if invalid)
Agent-Optimized Features
Token-Efficient Mode
# Get compact responses (80% smaller)
result = await client.verify_email(
"user@example.com",
format="compact"
)
Multi-Agent Tracing
# Include trace headers for multi-agent debugging
result = await client.verify_email(
"user@example.com",
trace_id="agent_123_task_456"
)
Error Handling
from validkit.exceptions import (
ValidKitAPIError,
RateLimitError,
InvalidAPIKeyError,
BatchSizeError
)
try:
result = await client.verify_email("invalid-email")
except ValidKitAPIError as e:
print(f"API Error: {e.message}")
print(f"Error Code: {e.code}")
print(f"Status Code: {e.status_code}")
Rate Limiting
The SDK automatically handles rate limiting with smart backoff:
# SDK will automatically retry with exponential backoff
results = await client.verify_batch(
large_email_list,
auto_retry=True # Default: True
)
Examples
Check the examples/ directory for more detailed examples:
basic_usage.py- Simple verification examplesbatch_processing.py- Large batch processing patternswebhook_handler.py- Webhook endpoint implementationagent_integration.py- AI agent integration patternserror_handling.py- Comprehensive error handling
Requirements
- Python 3.8+
- aiohttp
- pydantic
License
MIT License - see LICENSE file for details.
Performance Tips
- Use batch verification for multiple emails (up to 10,000 per request)
- Enable connection pooling (default) for high-throughput applications
- Set appropriate timeouts based on your batch size
- Use webhooks for large async batches to avoid long-running requests
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone the repository
git clone https://github.com/ValidKit/validkit-python-sdk.git
cd validkit-python-sdk
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest
Support
- 📖 Documentation: https://docs.validkit.com
- 🔧 API Reference: https://api.validkit.com/docs/openapi.json
- 🐛 Issues: https://github.com/ValidKit/validkit-python-sdk/issues
- 📧 Email: support@validkit.com
- 💬 Discord: Join our community
Built with ❤️ for AI agents by ValidKit
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file validkit-1.1.1.tar.gz.
File metadata
- Download URL: validkit-1.1.1.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf2c30d3adfd7550228aa23bb49c3b22b1324cc3cb31563a23c245cd28bebd5a
|
|
| MD5 |
05cbe44c8ad2c268a40e62dba68b9cfa
|
|
| BLAKE2b-256 |
e49b3dbb34a2119229cd02314cb4a40a7bb1473599f1a6555f2e64a0a71f4807
|
File details
Details for the file validkit-1.1.1-py3-none-any.whl.
File metadata
- Download URL: validkit-1.1.1-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cf3d7a76038ae2b74c1be5ed58c2a49e0e334ceb158776f1dbf0880610959e1
|
|
| MD5 |
e6e2ed8ce545460a196fb61622c4ead9
|
|
| BLAKE2b-256 |
c424852d16c7c7444b91850bd20d6b3983655ff1eda652f9619fb2d721535d6b
|