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 inboxrisk
conda
conda install -c inboxrisk inboxrisk

Quick 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