API Documentation

Simple REST API to detect disposable emails. 25 free requests/day.

πŸ€–
Using an AI agent? Point Cursor, Claude, ChatGPT, or any coding agent at 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.

Parameters

ParameterTypeDescription
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

Disposable Email

{ "temp": true }

Legitimate Email

{ "temp": false }

Code Examples

cURL
Python
JavaScript
PHP
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

GET /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_today": 18,
  "limit": 25,
  "reset": "midnight UTC"
}

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 tier: 25 requests per day. Resets at midnight UTC.

When you exceed your limit, you'll receive a 429 response:

{
  "error": "Rate limit exceeded",
  "message": "You have exceeded your daily limit of 25 requests",
  "limit": 25,
  "used": 25,
  "reset": "midnight UTC"
}

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:

ListEffect 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

StatusResponseMeaning
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.