Disposable Email Detection API Documentation
Reference documentation for checking an email address or domain with one authenticated REST request. The API returns a simple temp boolean for signup protection, with 100 free lifetime checks to test your integration.
tempmailchecker.com/agent-setup — these docs as a single markdown file, ready for LLMs.
Endpoint: GET /check
Base URL
https://tempmailchecker.com
The legacy us.tempmailchecker.com and asia.tempmailchecker.com hostnames remain fully supported as aliases of the main endpoint — existing integrations keep working without changes.
Authentication
Include your API key in the request header:
X-API-Key: your_api_key
Get your free API key on the signup page. Keep the key on your backend; never expose it in browser JavaScript, mobile binaries, or public repositories.
Parameters
| Parameter | Type | Description |
|---|---|---|
email |
string | Full email address to check |
domain |
string | Or just the domain (alternative) |
Use either email or domain. The domain is extracted automatically from emails.
Response schema
Disposable Email
{ "temp": true }
Legitimate Email
{ "temp": false }
Code Examples
curl "https://tempmailchecker.com/check?email=user@tempmail.com" \
-H "X-API-Key: YOUR_API_KEY"
import requests
resp = requests.get(
"https://tempmailchecker.com/check",
params={"email": "user@tempmail.com"},
headers={"X-API-Key": "YOUR_API_KEY"}
)
if resp.json()["temp"]:
print("Blocked: disposable email")
const resp = await fetch(
"https://tempmailchecker.com/check?email=user@tempmail.com",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { temp } = await resp.json();
if (temp) console.log("Blocked");
$ch = curl_init("https://tempmailchecker.com/check?email=user@tempmail.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: YOUR_API_KEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
if ($data["temp"]) echo "Blocked";
Check Usage
Check your current usage. No authentication header required—just pass your key as a query parameter.
Request
curl "https://tempmailchecker.com/usage?key=YOUR_API_KEY"
Response (free plan)
{
"usage": 18,
"limit": 100,
"reset": null
}
Response (paid plans)
Paid plans have a monthly quota instead of a daily limit. reset is the date your quota renews.
{
"usage_this_month": 1204,
"limit": 3000,
"reset": "2026-08-09"
}
Rate Limits
Free trial: 100 lifetime requests. This quota does not reset.
When you exceed your limit, you'll receive a 429 response:
{
"error": "Rate limit exceeded",
"message": "Your free trial is exhausted. Please upgrade to a paid plan: https://tempmailchecker.com/",
"upgrade": "https://tempmailchecker.com/",
"limit": 100,
"used": 100
}
Need more? Paid plans start at $12/month for 3,000 requests — see pricing.
Custom Blacklist & Whitelist
Paid plans can override the global database with per-account domain lists, managed in the dashboard:
| List | Effect on /check |
|---|---|
| Whitelist | Domain always returns {"temp": false}, even if it's in our database |
| Blacklist | Domain always returns {"temp": true}, even if we consider it legitimate |
Evaluation order: your whitelist → your blacklist → global database. Changes take effect immediately. Domains can be added individually or bulk-imported. Lists are currently managed through the dashboard; key-authenticated list endpoints are on the roadmap.
Status Codes & Errors
| Status | Response | Meaning |
|---|---|---|
200 |
{"temp": true|false} |
Success |
400 |
{"error": "Missing email or domain parameter"} |
No email or domain provided |
401 |
{"error": "API key required", "temp": null} |
Missing X-API-Key header |
401 |
{"error": "Invalid API key", "temp": null} |
API key not recognized |
429 |
{"error": "Rate limit exceeded", ...} |
Plan quota reached — upgrade or wait for reset |
Tip: decide whether your signup flow should fail open (allow the signup) or fail closed (block it) when the API returns an error — most integrations fail open.
Detection scope and limitations
The temp field answers one question: does the submitted email or domain match a known disposable or temporary-mail provider in the current database? A false result does not prove that a mailbox exists, that it will accept mail, or that the user is trustworthy.
Keep disposable detection separate from rules for free providers, privacy relays, plus-addressing, role accounts, IP reputation, and SMTP mailbox verification. See the signup-blocking guide for false-positive handling, testing, and fallback policy.