The temp email API built for your test suite
Create, read, and delete disposable inboxes programmatically. Perfect for CI/CD pipelines, QA automation, and staging environments.
Everything you need, nothing you don't
A clean REST API designed for automated testing from day one.
Instant Inbox Creation
One POST request returns a unique email address. No auth flow, no setup wizard — just an inbox.
Webhook Support
Get notified the moment an email arrives. Perfect for async test flows that can't afford to poll.
Auto-Cleanup
Inboxes auto-delete after expiry. No manual teardown in your test suite — zero leaked state.
OTP Auto-Parsing
Verification codes are extracted automatically into a parsed_otp field. No regex needed.
Integrate in minutes, not days
Real-world test code you can copy-paste into your project today.
// __tests__/signup.test.ts (Jest + fetch)
import { describe, it, expect } from '@jest/globals';
const API = 'https://api.openinbox.io/api/v1';
const KEY = process.env.OPENINBOX_API_KEY!;
describe('User signup flow', () => {
it('sends a verification email and confirms the account', async () => {
// 1 — Create a disposable inbox
const inbox = await fetch(`${API}/inbox`, {
method: 'POST',
headers: { 'X-API-Key': KEY },
}).then(r => r.json());
// 2 — Register with the temp address
await fetch('https://yourapp.com/api/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: inbox.email,
password: 'Test1234!',
}),
});
// 3 — Poll for the verification email (arrives in < 5 s)
let emails: any[] = [];
for (let i = 0; i < 10; i++) {
await new Promise(r => setTimeout(r, 2000));
emails = await fetch(`${API}/inbox/${inbox.id}/emails`, {
headers: { 'X-API-Key': KEY },
}).then(r => r.json());
if (emails.length) break;
}
expect(emails.length).toBeGreaterThan(0);
expect(emails[0].subject).toContain('Verify');
// 4 — Extract OTP (auto-parsed by OpenInbox)
const otp = emails[0].parsed_otp;
expect(otp).toBeDefined();
// 5 — Confirm account
const confirm = await fetch('https://yourapp.com/api/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: inbox.email, code: otp }),
}).then(r => r.json());
expect(confirm.verified).toBe(true);
});
});Built for the tests you actually write
See how teams use OpenInbox across their testing stack.
Pricing for developers
Start free — upgrade when you need higher limits or webhooks.
Pro
7-day free trial
- 3,000 API requests/day
- 10 concurrent inboxes
- Webhook notifications
- Auto-parsed OTP codes
- Up to 3 custom domains
- Priority support
Business
- 10,000 API requests/day
- Unlimited inboxes
- Webhook notifications
- Auto-parsed OTP codes
- Up to 10 custom domains
- Dedicated support
All plans include: HTTPS only, zero data retention after expiry, GDPR compliant. See full plan comparison →
Works with your existing stack
Get your free API key in 30 seconds
No credit card required. Create an account, grab your key, and start testing.