Skip to main content

MailOdds Email Validation API

Project description

MailOdds Python SDK

The official Python client for email validation, transactional sending, and deliverability monitoring through the MailOdds API.

PyPI License: MIT API Docs

Installation

pip install mailodds

Requires Python 3.9+.

Quick Start

import os
import mailodds

configuration = mailodds.Configuration(
    host="https://api.mailodds.com/v1",
    access_token=os.environ["MAILODDS_API_KEY"],
)

with mailodds.ApiClient(configuration) as client:
    api = mailodds.EmailValidationApi(client)
    request = mailodds.ValidateRequest(email="user@example.com")
    result = api.validate_email(request)

    print(f"Status: {result.result.status}, Action: {result.result.action}")

Error Handling

from mailodds.rest import ApiException

try:
    result = api.validate_email(request)
except ApiException as e:
    print(f"API error {e.status}: {e.body}")

ApiException includes status, body, headers, and reason for debugging.

MailOdds Platform

This SDK is part of the MailOdds email deliverability platform. Explore all capabilities.

Features

  • Context manager support - Use the ApiClient as a context manager for automatic resource cleanup
  • Typed models - Every API request and response is a Python class with type hints for IDE autocompletion
  • Flexible auth - Pass API keys via configuration or environment variables
  • Bulk validation - Submit lists of up to 500,000 emails via JSON, file upload, or S3 presigned URL
  • Structured error handling - ApiException carries HTTP status codes, response bodies, and headers for precise error recovery
  • Full platform coverage - Access validation, sending, suppression lists, validation policies, and subscriber management from one package

Why MailOdds

MailOdds is a complete email deliverability platform built for developers. Every email validated or sent through MailOdds passes through 25+ real-time checks including syntax verification, DNS and MX validation, SMTP mailbox probing, disposable domain detection, and role account identification.

The platform maintains sub-200ms median response times for single validations, 99.9% API uptime, and processes bulk lists of up to 500,000 emails per job. MailOdds supports 11 language SDKs, an MCP server for AI agent integration, a CLI for local development, and a WordPress plugin for no-code deployments.

All email sending uses DKIM dual signing with automated key rotation, and the deliverability monitoring stack covers DMARC aggregate reports, blacklist surveillance across 80+ DNSBLs, and real-time sender health scoring.

API Reference

Full documentation is available at the MailOdds API Reference.

All URIs are relative to https://api.mailodds.com/v1.

All Endpoints
Class Method HTTP request Description
BulkValidationApi cancel_job POST /v1/jobs/{job_id}/cancel Cancel a job
BulkValidationApi create_job POST /v1/jobs Create bulk validation job (JSON)
BulkValidationApi create_job_from_s3 POST /v1/jobs/upload/s3 Create job from S3 upload
BulkValidationApi create_job_upload POST /v1/jobs/upload Create bulk validation job (file upload)
BulkValidationApi delete_job DELETE /v1/jobs/{job_id} Delete a job
BulkValidationApi get_job GET /v1/jobs/{job_id} Get job status
BulkValidationApi get_job_results GET /v1/jobs/{job_id}/results Get job results
BulkValidationApi get_presigned_upload POST /v1/jobs/upload/presigned Get S3 presigned upload URL
BulkValidationApi list_jobs GET /v1/jobs List validation jobs
EmailSendingApi deliver_batch POST /v1/deliver/batch Send to multiple recipients (max 100)
EmailSendingApi deliver_email POST /v1/deliver Send a single email
EmailValidationApi validate_batch POST /v1/validate/batch Validate multiple emails (sync)
EmailValidationApi validate_email POST /v1/validate Validate single email
SendingDomainsApi create_sending_domain POST /v1/sending-domains Add a sending domain
SendingDomainsApi delete_sending_domain DELETE /v1/sending-domains/{domain_id} Delete a sending domain
SendingDomainsApi get_sending_domain GET /v1/sending-domains/{domain_id} Get a sending domain
SendingDomainsApi get_sending_domain_identity_score GET /v1/sending-domains/{domain_id}/identity-score Get domain identity score
SendingDomainsApi get_sending_stats GET /v1/sending-stats Get sending statistics
SendingDomainsApi list_sending_domains GET /v1/sending-domains List sending domains
SendingDomainsApi verify_sending_domain POST /v1/sending-domains/{domain_id}/verify Verify domain DNS records
SubscriberListsApi confirm_subscription GET /v1/confirm/{token} Confirm subscription
SubscriberListsApi create_list POST /v1/lists Create a subscriber list
SubscriberListsApi delete_list DELETE /v1/lists/{list_id} Delete a subscriber list
SubscriberListsApi get_list GET /v1/lists/{list_id} Get a subscriber list
SubscriberListsApi get_lists GET /v1/lists List subscriber lists
SubscriberListsApi get_subscribers GET /v1/lists/{list_id}/subscribers List subscribers
SubscriberListsApi subscribe POST /v1/subscribe/{list_id} Subscribe to a list
SubscriberListsApi unsubscribe_subscriber DELETE /v1/lists/{list_id}/subscribers/{subscriber_id} Unsubscribe a subscriber
SuppressionListsApi add_suppression POST /v1/suppression Add suppression entries
SuppressionListsApi check_suppression POST /v1/suppression/check Check suppression status
SuppressionListsApi get_suppression_audit_log GET /v1/suppression/audit Get suppression audit log
SuppressionListsApi get_suppression_stats GET /v1/suppression/stats Get suppression statistics
SuppressionListsApi list_suppression GET /v1/suppression List suppression entries
SuppressionListsApi remove_suppression DELETE /v1/suppression Remove suppression entries
SystemApi get_telemetry_summary GET /v1/telemetry/summary Get validation telemetry
SystemApi health_check GET /health Health check
ValidationPoliciesApi add_policy_rule POST /v1/policies/{policy_id}/rules Add rule to policy
ValidationPoliciesApi create_policy POST /v1/policies Create policy
ValidationPoliciesApi create_policy_from_preset POST /v1/policies/from-preset Create policy from preset
ValidationPoliciesApi delete_policy DELETE /v1/policies/{policy_id} Delete policy
ValidationPoliciesApi delete_policy_rule DELETE /v1/policies/{policy_id}/rules/{rule_id} Delete rule
ValidationPoliciesApi get_policy GET /v1/policies/{policy_id} Get policy
ValidationPoliciesApi get_policy_presets GET /v1/policies/presets Get policy presets
ValidationPoliciesApi list_policies GET /v1/policies List policies
ValidationPoliciesApi test_policy POST /v1/policies/test Test policy evaluation
ValidationPoliciesApi update_policy PUT /v1/policies/{policy_id} Update policy
All Models

Other SDKs

Language Package Source
Python PyPI GitHub
TypeScript npm GitHub
PHP Packagist GitHub
Java GitHub GitHub
Go pkg.go.dev GitHub
C# / .NET GitHub GitHub
Ruby RubyGems GitHub
Kotlin GitHub GitHub
Rust crates.io GitHub
Swift GitHub GitHub
Dart / Flutter pub.dev GitHub

Resources

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

mailodds-2.1.0.tar.gz (287.3 kB view details)

Uploaded Source

Built Distribution

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

mailodds-2.1.0-py3-none-any.whl (905.4 kB view details)

Uploaded Python 3

File details

Details for the file mailodds-2.1.0.tar.gz.

File metadata

  • Download URL: mailodds-2.1.0.tar.gz
  • Upload date:
  • Size: 287.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mailodds-2.1.0.tar.gz
Algorithm Hash digest
SHA256 f627e96e07ea059f95a6b05fa6a0ce81afb3a3bf47782365e5397d2be9689b1b
MD5 805874b188c8c09372a00839f610c3e0
BLAKE2b-256 84fff6abf5d521afddf099db385356d7e5ce1079440b633ecc387bf0e65963ae

See more details on using hashes here.

File details

Details for the file mailodds-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: mailodds-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 905.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mailodds-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b97bac8aac6ecca9a71c8b042d56a794bd73ba3aac3dfe762a3de3838ac387f2
MD5 2dc58e2ab4eacbabcbd9c5b8cc406897
BLAKE2b-256 a3a60d673373a9dbc603bfa12e44a7bf0cbca37814796c31aea644586a5e7991

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