Inbox routing
Catch-all addressing
Use one-off addresses per test run and keep scenarios fully isolated.
Early access for teams building email-heavy products
Capture every test message, inspect the raw payload, and assert on delivery flows without spinning up SMTP infrastructure or leaking messages into real inboxes.
# Fetch the latest captured email
curl https://api.mailtestapi.com/v1/emails?limit=1 \
-H "Authorization: Bearer $API_KEY"
# Response
{
"items": [{
"id": "a1b2c3d4-...",
"sender": "noreply@yourapp.com",
"recipient": "signup-42@mailtestapi.com",
"subject": "Verify your email",
"status": "received",
"receivedAt": "2026-04-17T19:00:00Z"
}]
} MailTestAPI gives you fast read access to the exact message your app generated.
Inbox routing
Use one-off addresses per test run and keep scenarios fully isolated.
Payload access
Inspect headers, HTML, plain text, and attachment metadata without guesswork.
Automation
Assert on verification emails, password resets, and notifications with the same API.
Why teams use MailTestAPI
The core product is small on purpose: capture messages reliably, inspect them deeply, and make your tests deterministic.
Send to any address at mailtestapi.com and capture messages automatically, with no mailbox provisioning or routing setup.
Create, list, inspect, annotate, and remove emails through predictable JSON endpoints that work well in scripts and test suites.
Read parsed HTML, plain text, raw MIME, headers, and attachment metadata when you need to debug the exact shape of a message.
Organize captured emails with notes and metadata so QA runs, support reproductions, and regression checks stay easy to revisit.
Authenticate with Bearer tokens or X-API-Key headers and keep access isolated per account or team workflow.
Generate clients from the published schema and plug MailTestAPI into any stack without a custom wrapper.
How it works
MailTestAPI stays out of your way: get a key, send a message to a catch-all address, then assert on the result over HTTP.
Sign in to the dashboard, generate a key, and keep it scoped to the workflow or environment you want to test.
Point your app or test harness at any address ending in @mailtestapi.com and MailTestAPI captures the message automatically.
Fetch the latest message, inspect the body or headers, and assert on the exact content your users would receive.
API surface
The landing page is simple because the product is simple. Everything is JSON, the endpoints are obvious, and the payloads are made for automation.
/v1/emails List and filter captured emails
/v1/emails Create a message through the API
/v1/emails/:id Read full email details and content
/v1/emails/:id Update notes and metadata
/v1/emails/:id Remove captured test data
const response = await fetch(
"https://api.mailtestapi.com/v1/emails?recipient=user-42@mailtestapi.com&limit=1",
{
headers: {
Authorization: `Bearer ${process.env.MAILTESTAPI_KEY}`,
},
},
);
const { items } = await response.json();
expect(items[0].subject).toBe("Verify your email"); Use the same request shape in a local test run, CI job, or quick debugging script.
Pricing
Free while MailTestAPI is in early access. Paid plans are reserved for team workflows and higher-volume automation.
Free
$0
During early access
Pro
Soon
For teams and CI pipelines
Ready to stop guessing about transactional email?
Start with the free early-access tier, generate an API key, and wire MailTestAPI into your next signup, password reset, or notification flow.