Python SDK Documentation
Official Python SDK for InboxRisk API. Works with Python 3.7+ and supports async/await.
Installation
Install using pip or conda:
pip
pip install inboxriskconda
conda install -c inboxrisk inboxriskQuick Setup
Initialize the SDK with your API key:
from inboxrisk import InboxRisk
# Initialize client
client = InboxRisk(api_key='your_api_key_here')
# Or use environment variable
import os
client = InboxRisk() # Uses os.environ['INBOXRISK_API_KEY']💡 Tip: Store your API key in environment variables using a .env file.
Usage Examples
Email Risk Check
Synchronous email risk assessment:
from inboxrisk import InboxRisk
client = InboxRisk()
result = client.email.risk_check(
email='user@example.com'
)
print(f"Risk Score: {result['risk_score']}")
print(f"Risk Level: {result['risk_level']}")
print(f"Is Disposable: {result['is_disposable']}")
print(f"Fraud Reports: {result['fraud_reports']}")Async Operations
Use async/await for high-performance applications:
import asyncio
from inboxrisk import AsyncInboxRisk
async def check_email():
client = AsyncInboxRisk(api_key='your_api_key')
result = await client.email.risk_check(
email='user@example.com'
)
print(f"Risk Score: {result['risk_score']}")
await client.close()
asyncio.run(check_email())Disposable Email Detection
Quick check for temporary email addresses:
result = client.email.disposable_check(
email='user@tempmail.com'
)
if result['is_disposable']:
print('This is a temporary email')
print(f"Provider: {result['provider']}")
else:
print('This is a real email')Bulk Email Checking
Check multiple emails efficiently:
emails = [
'user1@example.com',
'user2@example.com',
'user3@tempmail.com'
]
result = client.email.bulk_check(emails=emails)
print(f"Total: {result['total']}")
print(f"Processed: {result['processed']}")
for email_result in result['results']:
print(f"{email_result['email']}: Risk {email_result['risk_level']}")Error Handling
Handle errors properly with exception handling:
from inboxrisk import InboxRisk
from inboxrisk.exceptions import (
InvalidEmailError,
RateLimitError,
UnauthorizedError,
InboxRiskError
)
client = InboxRisk()
try:
result = client.email.risk_check(email='user@example.com')
except InvalidEmailError:
print('Invalid email format')
except RateLimitError:
print('Rate limit exceeded')
except UnauthorizedError:
print('Invalid API key')
except InboxRiskError as e:
print(f'API Error: {e}')⚠️ Important: Always handle RateLimitError and implement exponential backoff for retries.
Django Integration
Validate email addresses during Django model save:
from django.db import models
from django.core.exceptions import ValidationError
from inboxrisk import InboxRisk
client = InboxRisk()
class User(models.Model):
email = models.EmailField()
def clean(self):
try:
result = client.email.risk_check(email=self.email)
if result['risk_level'] == 'critical':
raise ValidationError('Email is too risky')
if result['is_disposable']:
raise ValidationError('Disposable emails not allowed')
except Exception as e:
raise ValidationError(f'Email validation error: {e}')Flask Integration
Validate emails in Flask signup form:
from flask import Flask, request, jsonify
from inboxrisk import InboxRisk
app = Flask(__name__)
client = InboxRisk()
@app.route('/signup', methods=['POST'])
def signup():
email = request.json.get('email')
try:
result = client.email.risk_check(email=email)
if result['risk_level'] == 'critical':
return jsonify({'error': 'Email is too risky'}), 400
if result['is_disposable']:
return jsonify({'error': 'Disposable emails not allowed'}), 400
# Create user...
return jsonify({'message': 'Signup successful'}), 201
except Exception as e:
return jsonify({'error': str(e)}), 500