Programmable email inboxes for testing OTPs, signup flows, and AI agents.
Catch one-time codes from any service in real-time. Skip the disposable-inbox hassle. Start free, scale to teams.
- No credit card required
- Free forever tier
- Available via API, CLI, MCP
Built for developers
The primitives you actually need.
We boiled email-testing down to three things: create, wait, parse. Everything else is in your way.
Programmable
REST API, CLI, and Node/Python/Go SDKs. Create inboxes in milliseconds; receive structured JSON when mail arrives.
Real-time waiters
Block your test until the OTP arrives. No polling loops, no flaky waits. p95 latency under 1s end-to-end.
OTP auto-extracted
We parse the code from the email body for you. Works with 95%+ of major services out of the box.
Quickstart
Catch your first OTP in 60 seconds.
One API key. Three lines of code. Same shape across Node, Python, and curl.
import { CatchOTP } from '@catchotp/sdk';
const client = new CatchOTP({ apiKey: process.env.CATCHOTP_KEY });
const inbox = await client.inboxes.create({ mode: 'ephemeral', ttlMinutes: 10 });
// → use inbox.address as the email when signing up to the service under test
const otp = await client.inboxes.waitForOtp(inbox.id, { timeoutSeconds: 30 });
console.log(otp); // → "123456" Use cases
From CI pipelines to autonomous agents.
OTP testing
Cypress, Playwright, Jest, pytest. Drop-in helpers for your test runner.
E2E signup flows
Spin up disposable inboxes per test run. Verify signup, confirmation, and recovery emails end-to-end.
AI agent email handling
MCP-compatible. Agents can list inboxes, read messages, and act on email content as a tool.
Burner addresses
Privacy-first signups for free trials and gated content without exposing personal email.
Start receiving emails in 60 seconds.
No credit card. Free forever tier. Upgrade when you outgrow it.