🎉 Limited Time Offer: 30% OFF First Month!

Use code at checkout - Valid on all plans

View Plans

🌐 Custom Domains Now Available!

Receive emails at [email protected] — available on all paid plans

Learn More
Developer-first

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.

terminal
# Create an inbox in one call
$ curl -s -X POST https://api.openinbox.io/api/v1/inbox \
-H "X-API-Key: $OPENINBOX_API_KEY"
# Response
{
"id": "a1b2c3d4",
"email": "[email protected]",
"expires_at": "2026-04-07T12:00:00Z"
}

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.

Node.js
// __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.

Free tier includes API access for testing — no credit card required
Most Popular
ProAPI

Pro

$7/mo

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

Business

$15/mo
  • 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

JestPytestPlaywrightCypressPostmanSeleniumGitHub ActionsGitLab CI
Used in CI pipelines across 40+ countries — pure HTTPS, no SMTP ports, works everywhere.

Get your free API key in 30 seconds

No credit card required. Create an account, grab your key, and start testing.