Email API for Automated Testing
Create temporary inboxes, receive emails, auto-extract OTP codes. One API call in your Playwright, Cypress, or Selenium tests.
Live on Product Hunt — Support us!// Create inbox
const inbox = await fetch('https://api.mcatch.dev/api/inboxes', {
method: 'POST',
headers: { 'X-API-Key': process.env.MAILCATCH_KEY }
}).then(r => r.json());
// Use inbox.address for signup
await page.fill('#email', inbox.address);
await page.click('#submit');
// Wait for OTP email
const msg = await fetch(
`https://api.mcatch.dev/api/inboxes/${inbox.id}/wait`,
{ headers: { 'X-API-Key': process.env.MAILCATCH_KEY } }
).then(r => r.json());
// msg.otp_code = "482913" ✓
await page.fill('#otp', msg.otp_code);Everything you need for email testing
Stop creating Gmail accounts for tests. MailCatch gives you programmatic email in seconds.
Instant Inboxes
Create a unique email address with one API call. Each test gets its own inbox.
Auto OTP Parsing
We extract verification codes from emails automatically. No regex needed.
Long Polling
Wait for emails with a single request. No polling loops in your test code.
Webhooks
Get notified instantly when an email arrives. Perfect for async workflows.
CI/CD Ready
Works in GitHub Actions, GitLab CI, Bitbucket Pipelines. Just add your API key.
Dashboard
View all inboxes, messages, and usage in a clean web interface.
How it works
Three steps to automated email testing. No configuration, no SMTP setup.
Create Inbox
One API call creates a unique @mcatch.dev address ready to receive emails.
POST /api/inboxesTrigger Email
Use the address in your signup, verification, or password reset flow.
page.fill("#email", inbox.address)Get Message
Wait for the email with long polling. OTP codes are auto-extracted if present.
GET /api/inboxes/{id}/waitWorks with your test framework
Add email testing to your existing tests in minutes.
import { test, expect } from '@playwright/test';
test('user signup with OTP', async ({ page, request }) => {
// 1. Create inbox
const inbox = await request.post('https://api.mcatch.dev/api/inboxes', {
headers: { 'X-API-Key': process.env.MAILCATCH_KEY }
}).then(r => r.json());
// 2. Fill signup form
await page.goto('https://myapp.com/signup');
await page.fill('#email', inbox.address);
await page.fill('#password', 'TestPass123!');
await page.click('#submit');
// 3. Wait for verification email
const message = await request.get(
`https://api.mcatch.dev/api/inboxes/${inbox.id}/wait`,
{ headers: { 'X-API-Key': process.env.MAILCATCH_KEY } }
).then(r => r.json());
// 4. Enter OTP
await page.fill('#otp-input', message.otp_code);
await page.click('#verify');
await expect(page.locator('#welcome')).toBeVisible();
});Generate test code with AI
Copy this prompt into ChatGPT, Claude, or any AI assistant — ask it to generate tests for your framework in seconds
You are integrating with MailCatch API for test email automation.
Base URL: https://api.mcatch.dev
Auth: Header "x-api-key: <YOUR_API_KEY>"
(Set as env var MAILCATCH_KEY — never paste real keys into AI assistants)
## Available endpoints:
### Create inbox
POST /api/inboxes
Response: { "id": "inbox_1", "address": "[email protected]" }
### List messages
GET /api/inboxes/:id/messages
Response: { "data": [{ "id": "msg_1", "from_address": "[email protected]", "subject": "Your OTP", "otp_code": "482901", "received_at": "2026-01-01T00:00:00Z" }] }
### Wait for message (long-poll)
GET /api/inboxes/:id/wait?timeout=30
Waits up to 30s. Returns message on success, HTTP 408 on timeout.
### Delete inbox
DELETE /api/inboxes/:id
## Typical test flow:
1. Create inbox → get address
2. Trigger action that sends email (registration, password reset, OTP)
3. GET /wait?timeout=30 — waits for the email
4. Extract OTP from otp_code field (auto-detected)
5. Use OTP in test
6. Delete inbox (cleanup)1.
Copy the prompt above
2.
Paste into ChatGPT or Claude
3.
Ask: "Generate Playwright tests"
Frequently asked questions
Everything you need to know about MailCatch.
Simple, transparent pricing
Start free. Upgrade when you need more.
Free
For personal projects and getting started
Get Started- 50 inboxes/month
- 1 API key
- 24h message retention
- Auto OTP parsing
- Long polling
Solo
For individual QA engineers
Start Solo- 200 inboxes/month
- 2 API keys
- 48h message retention
- Auto OTP parsing
- Long polling
- Priority support
Pro
For QA teams with shared workflows
Start Pro- 1,000 inboxes/month
- 5 API keys
- 7 days message retention
- 3 Workspaces
- Webhooks
- Up to 10 members
- Priority support
Team
For QA teams and CI/CD pipelines at scale
Start Team- 10,000 inboxes/month
- Unlimited API keys
- 30 days message retention
- 10 Workspaces
- Webhooks
- Unlimited members
- Dedicated support
Ready to automate your email testing?
Start free. No credit card required. Set up in under 2 minutes.