Email API for QA & test automation

Disposable inboxes
for your test suite.

Create a throwaway mailbox in one call, then waitForMessage() blocks until the verification email lands so you can assert on the code — no polling, no flake. Real-time, server-to-server. Webhooks too, if you'd rather push.

Free to start · 10 credits · no card required

signup.spec.ts
// signup.spec.ts
import {
  createTempyClient, extractCode
} from '@tempy/api-client';

const tempy = createTempyClient({
  apiKey: process.env.TEMPY_KEY
});

// spin up an inbox, block until mail lands
const inbox = await tempy.createMailbox();
const msg = await tempy.waitForMessage(
  inbox.email,
  { subjectContains: 'verify' }
);

// assert on the OTP — no polling, no flake
expect(extractCode(msg)).toBe('558213');

New · MCP server

Give your AI agent an inbox.

Connect Claude, Cursor or VS Code to tempy.email. Your agent can create a disposable address, sign up with it, wait for the verification email and read back the code on its own.

“Sign up on staging.myapp.com with a fresh inbox and tell me if the verification email arrives.”

  1. In Claude, open Settings → Connectors → Add custom connector. Name it tempy email, paste the URL below and click Continue.
  2. Under Authentication pick Sign in now, and under OAuth client pick Register automatically (Claude detects both), then click Add.
  3. Sign in to tempy.email and click Allow. No API key needed.
connector URL
https://api.tempy.email/mcp

Built for test automation

Every flow that sends an email — testable.

Signup & onboarding tests

Register a fresh user in every E2E run with a real, unique inbox — no shared test accounts, no flaky cleanup.

Email verification & OTP

waitForMessage() blocks until the confirmation email or one-time code lands, then hands it to you to assert on — right in your test.

Password-reset flows

Trigger a reset, waitForMessage() for it, follow the link — the whole loop, automated, no sleep() in sight.

Deliverability & webhooks

Prefer push? Point a webhook at your ingest endpoint and get every message as JSON. Your call — wait or webhook.

Why teams pick tempy

The disposable-email tools you know, with a real API.

One call, no flake

waitForMessage() blocks until the email arrives and returns it — or fails deterministically on timeout. No poll loops to hand-roll.

Real-time delivery

Mail is visible in milliseconds — no “wait 30s and retry”.

Choose the address

Deterministic local parts for stable, collision-free test fixtures.

Send & reply

Reply to a message from the API to test two-way flows.

Webhooks too

Have a public ingest endpoint? Get every message pushed as JSON instead.

Credits, not subscriptions

1 credit = 1 mailbox. Reads and waits are always free. Start free with 10, no card.

Ship your signup tests today.

Start free — 10 credits, no card. Create your first mailbox in the Playground, then drop the API into CI.