MailCheck Developer Documentation
Official SDKs AvailableIntegrate sub-50ms email validation, 40M+ disposable burner domain blocking, typo autocorrection, and DNS MX server verification directly into your web applications, mobile apps, and backend registration pipelines.
failSilent: true ensures network blips never crash genuine user registrations.Official Client SDKs
Install our battle-tested, high-performance client libraries for Node.js, Python, and Flutter with built-in sub-50ms caching, fail-safe fallbacks, and 1-line framework integrations.
@fadsync/mailcheck-edge
Ultra-fast Express & Connect middleware with LRU caching, failSilent error recovery, and full TypeScript declarations.
fadsync-mailcheck
Sync & Async httpx client with drop-in FastAPI route guards and Django model validators.
flutter_fadsync_email_validator
Pre-styled Flutter text field widget with real-time debounce, visual typo autocorrect chips, and live MX indicators.
Node.js & Express SDK (@fadsync/mailcheck-edge)
Designed for high-concurrency Node.js microservices, Next.js API routes, and Express authentication handlers. Includes sub-50ms in-memory TTL caching and a 1-line route middleware.
Installation & Setup
Key Features
- 1-Line Express Guard:
app.post('/signup', mailCheckGuard(), handler) - Zero Dependencies: Lightweight client with built-in HTTP agent pooling.
- Fail-Safe Resilience:
failSilent: trueprevents downtime during upstream outages. - TypeScript Support: Full autocomplete for
ValidationResultand options.
Python, FastAPI & Django SDK (fadsync-mailcheck)
Comprehensive Python package supporting synchronous (FadSyncMailCheck) and asynchronous (AsyncFadSyncMailCheck) workflows using httpx.
Installation & Extras
Key Features
- FastAPI Route Dependency: Drop-in
FastAPIEmailGuardreturning 422 on burner emails. - Django Field Validator: Add
validators=[FadSyncEmailValidator()]to model fields. - Pydantic v1 & v2 Models: Ready for modern async backends and schemas.
- PEP 561 Compliant: Bundled with
py.typedfor full IDE typing.
Flutter Mobile SDK (flutter_fadsync_email_validator)
A drop-in Flutter UI widget (FadSyncEmailFormField) featuring live debounced validation, loading spinners, domain typo chips, and full integration with Flutter Form validation.
Installation
Key Features
- Pre-Built UI Widget: Replaces standard
TextFormFieldwith zero extra layout code. - Interactive Typo Chips: Suggests fixes (e.g. user@gamil.com ➔ user@gmail.com) with 1-tap replacement.
- Configurable Debounce: Prevents excessive network calls while the user is actively typing.
AI Assistant Setup Prompts
Cursor · Claude · ChatGPT · CopilotUsing an AI coding assistant? Copy and paste these pre-tuned prompts into your editor to integrate FadSync MailCheck into your codebase in seconds.
Node.js / Express AI Setup Prompt
JavaScript / ExpressFastAPI / Python AI Setup Prompt
Python / FastAPIDjango Form & Model Validator Prompt
Python / DjangoFlutter Mobile Signup Form Prompt
Dart / FlutterDirect API Key Authentication
Every request to the FadSync MailCheck API is authenticated via your private FadSync API key. You can pass the key using standard HTTP headers:
| Header Format | Example | Description |
|---|---|---|
| Authorization | Bearer YOUR_FADSYNC_API_KEY | Standard OAuth2 / Bearer token header (Recommended) |
| X-API-Key | YOUR_FADSYNC_API_KEY | Alternative direct header for legacy HTTP clients |
Quickstart
1. Create your account at mailcheck.fadsync.com to obtain your live API key.
2. Choose an official SDK (@fadsync/mailcheck-edge, fadsync-mailcheck, or flutter_fadsync_email_validator) or send raw HTTP requests.
3. Check incoming email inputs during signup or checkout to reject disposable spam before creating user records.
/api/v1/verify
Verifies a single email address against 40M+ disposable burner domains, checks RFC syntax, performs DNS MX mail server lookups, and calculates a comprehensive risk score.
Body Parameters (JSON)
The email address to validate. e.g. user@trashmail.com.
Response Body (JSON)
200 OK{
"email": "user@trashmail.com",
"is_valid_format": true,
"is_disposable": true,
"is_free_provider": false,
"is_role_account": false,
"risk_score": 95,
"typo_fix": null,
"domain_details": {
"domain": "trashmail.com",
"has_valid_mx": true,
"mx_records": ["mx.trashmail.com"]
}
}/api/v1/bulk
Validate up to 1,000 email addresses in a single high-throughput batch request. Perfect for CSV cleaning, list hygiene, and bulk database audits.
Body Parameters
Array of emails to validate. e.g. ["user1@gmail.com", "fake@trashmail.com"].
Response Body
200 OK{
"results": [
{
"email": "user1@gmail.com",
"is_disposable": false,
"risk_score": 5
},
{
"email": "fake@trashmail.com",
"is_disposable": true,
"risk_score": 95
}
]
}/api/v1/domain
Audit an entire domain to check disposable status, active MX records, and mail infrastructure without querying a specific mailbox.
Query Parameters
The domain to inspect. e.g. trashmail.com.
Response Body
200 OK{
"domain": "trashmail.com",
"is_disposable": true,
"has_valid_mx": true,
"mx_records": ["mx.trashmail.com"],
"risk_score": 95
}cURL & Raw HTTP
Integrate directly using raw HTTP requests from terminal scripts, microservices, or webhook triggers.
curl -X POST https://mailcheck.fadsync.com/api/v1/verify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_FADSYNC_API_KEY" \
-d '{"email": "alex.hunter@gmail.com"}'PHP & Laravel Integration
Clean native PHP integration using curl_init() or Laravel Http::withToken().
// Laravel 9+ / 10+ / 11+
use Illuminate\Support\Facades\Http;
$response = Http::withToken(env('FADSYNC_API_KEY'))
->post('https://mailcheck.fadsync.com/api/v1/verify', [
'email' => $request->input('email')
]);
if ($response->json('is_disposable') === true) {
return back()->withErrors(['email' => 'Disposable emails are not permitted.']);
}Go (Golang) Integration
Fast and concurrent Go email validation using standard net/http client.
package main
import (
"bytes"
"encoding/json"
"net/http"
"os"
)
func verifyEmail(email string) (*http.Response, error) {
reqBody, _ := json.Marshal(map[string]string{"email": email})
req, _ := http.NewRequest("POST", "https://mailcheck.fadsync.com/api/v1/verify", bytes.NewBuffer(reqBody))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer " + os.Getenv("FADSYNC_API_KEY"))
client := &http.Client{}
return client.Do(req)
}Error Handling & Rate Limits
The FadSync API returns standard HTTP status codes. When using our official SDKs (@fadsync/mailcheck-edge or fadsync-mailcheck), you can enable failSilent: true to ensure your application continues running smoothly even if rate limits are reached.
| Status | Error Code | Description |
|---|---|---|
| 200 OK | - | Email checked successfully. |
| 400 Bad Request | INVALID_EMAIL_FORMAT | Email string is empty or violates RFC syntax. |
| 401 / 403 | AUTH_FAILED | Missing or invalid FadSync API Key. |
| 429 Too Many Requests | QUOTA_EXCEEDED | Monthly quota limit reached (200 requests on Free Plan). |
