Skip to main content

Official Python SDK for the Email Deliverability Intelligence API

Project description

Email Deliverability Intelligence - Python SDK

Official Python SDK for the Email Deliverability Intelligence API. Verify emails, analyze domain health, predict deliverability, and more -- all without sending test emails.

Installation

pip install emailintel

Quick Start

Synchronous

from emailintel import EmailIntelClient

client = EmailIntelClient(api_key="edi_live_your_key_here")

# Verify an email
result = client.verify_email("john@example.com", deep_scan=True)
print(f"Result: {result.result}, Confidence: {result.confidence}")

# Get domain intelligence
intel = client.get_domain_intelligence("example.com")
print(f"Provider: {intel.provider}, Risk: {intel.risk_level}")

# Find someone's email
found = client.find_email("example.com", "John", "Doe")
print(f"Email: {found.email}, Confidence: {found.confidence}")

client.close()

Asynchronous

import asyncio
from emailintel import AsyncEmailIntelClient

async def main():
    async with AsyncEmailIntelClient(api_key="edi_live_your_key_here") as client:
        result = await client.verify_email("john@example.com")
        print(f"Result: {result.result}, Confidence: {result.confidence}")

asyncio.run(main())

Context Manager

from emailintel import EmailIntelClient

with EmailIntelClient(api_key="edi_live_your_key_here") as client:
    result = client.verify_email("john@example.com")

Available Methods

Email Verification

  • verify_email(email, deep_scan=False, include_signals=False) -- Verify a single email
  • verify_batch(emails, webhook_url=None) -- Submit batch verification
  • get_batch_status(job_id) -- Check batch job status

Domain Intelligence

  • get_domain_intelligence(domain) -- Full domain intelligence
  • get_domain_pattern(domain) -- Email naming pattern detection
  • get_domain_compliance(domain) -- Bulk sender compliance check
  • get_domain_blacklist(domain, refresh=False) -- DNSBL blacklist check
  • get_domain_report(domain, format="json") -- Comprehensive domain report
  • compare_domains(domains) -- Compare 2-5 domains side-by-side
  • get_domain_reputation(domain) -- Sender reputation score (0-100)
  • get_reputation_history(domain, limit=30) -- Reputation score timeline
  • get_domain_advisor(domain) -- AI infrastructure recommendations

Email Finder

  • find_email(domain, first_name, last_name) -- Predict email address

Content Analysis

  • analyze_content(subject, body, sender_domain) -- Spam risk analysis

Predictions

  • predict_engagement(email, content_snippet=None) -- Engagement likelihood
  • predict_deliverability(sender_domain, recipient_email) -- Inbox placement prediction

Domain Monitoring

  • register_monitored_domains(domains, webhook_url, interval_seconds=21600) -- Register monitoring
  • list_monitored_domains() -- List monitored domains
  • unregister_monitored_domain(domain) -- Remove monitoring

Postmaster Tools

  • get_postmaster_data(domain) -- Combined Google + Microsoft data
  • sync_postmaster_data(domain) -- Trigger manual data sync

Error Handling

The SDK throws typed exceptions for different error conditions:

from emailintel import (
    EmailIntelClient,
    AuthenticationError,
    RateLimitError,
    InsufficientCreditsError,
    ValidationError,
    NotFoundError,
    ServerError,
)

client = EmailIntelClient(api_key="edi_live_your_key_here")

try:
    result = client.verify_email("john@example.com")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except InsufficientCreditsError:
    print("No credits remaining")
except ValidationError as e:
    print(f"Bad request: {e.details}")
except ServerError:
    print("Server error - will auto-retry")

Configuration

client = EmailIntelClient(
    api_key="edi_live_your_key_here",
    base_url="https://api.emailintel.dev",  # Custom base URL
    max_retries=3,                           # Retry transient failures
    timeout=30.0,                            # Request timeout in seconds
)

Auto-Retry

The SDK automatically retries on transient failures:

  • 429 (Rate Limited): Respects retry_after from the response
  • 5xx (Server Errors): Exponential backoff with jitter
  • 400, 401, 402, 404: Never retried (client errors)

Requirements

  • Python 3.9+
  • httpx >= 0.25.0
  • pydantic >= 2.0.0

License

MIT

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

emailintel-0.1.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emailintel-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file emailintel-0.1.0.tar.gz.

File metadata

  • Download URL: emailintel-0.1.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for emailintel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0c0603e3162ddf20c98bb82faacc38046d258c185019d6a4168b439195624a5c
MD5 39b7c50de12c888df4b1cf62ced438e6
BLAKE2b-256 dd0b48e9ab1800ce7808a00cba3d1c8e71adc065f7d6c54e620938f75a82579d

See more details on using hashes here.

File details

Details for the file emailintel-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: emailintel-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for emailintel-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18a972d3bd10cfd47d777381f133a09545baabe4a387782b665443e81eb45982
MD5 7be8849ed13e085f3626426efccc4db1
BLAKE2b-256 347256aa052ce64fdd23c5eabc5629ed91743eee0734d5582a7e7d54d29c575e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page