Skip to content

وارد wārid — arriving; inbound.

Your tests send it.
Waridex catches it.

Disposable inboxes and authenticators for automated tests. The message lands, the code is pulled out, your assertion runs.

curl …/v1/inboxes/$INBOX_ID/wait -d extract=otpReceived in 1.9s

Works with the test stack you already runWorks with

Three calls, one straight line from trigger to assert.

Read the quickstart
  1. Create an inbox

    One request returns an inbox with a domain of its own. Tag it with the run, so one call deletes it and its mail when the run ends.

    POST /v1/inboxes → signup-k3f9x2.waridex.email
  2. Trigger your flow

    Sign up, request the reset, place the order, with any address under the domain. Your app sends mail like it always does.

    user1@signup-k3f9x2.waridex.email
  3. Wait and assert

    One call holds until the message lands, then returns the message's index fields with the code or link already extracted.

    GET …/wait?extract=otp → 482913

Everything your app sends, inbound.

Email and authenticator codes come through one API and one dashboard, with the code already pulled out.

Authenticator

A virtual authenticator app for MFA flows. Paste the setup key, read the code.

Acme · sara@acme.io Current code · 22s left294 118
  • TOTP with SHA-1, SHA-256 or SHA-512
  • Waits for a fresh window near expiry
  • A log of every code served

Built for the assert, not the inbox.

Wait, don't poll
One call holds until the message arrives or your timeout passes, and returns it with the code or link already extracted.
An inbox per test
Parallel runs never collide. Tag a run's inboxes and delete them, with their mail, in one call when it ends.
Extraction you can explain
Codes come from patterns you pin per sender and from deterministic scoring. When nothing fits, the error lists every candidate and why it lost.
Every layer of the message
The text and HTML on request, and the raw message with its headers and attachments as a download.
Keys scoped to the job
Give CI exactly the permissions it needs, per workspace.
Every error has a page
A failure answers with a problem type that links to its own page here, such as wait.timeout.
Verify your email address signup-k3f9x2
Verification code482913
The extracted panel of a received message, as the dashboard shows it: the verification code and the links found in the message.

Shared inboxes and SMTP catchers were never built for CI.

A shared mailbox, a self-hosted catcher and Waridex compared
Per monthShared Gmail accountSelf-hosted catcherWaridex
Parallel test runsCollide on one addressWork, if you filter by addressOne inbox per run
Waiting for the messagePoll IMAP, hopePoll its APIOne long-poll call
Getting the code outRegex the HTMLRegex the HTMLAlready extracted
Runs from CIApp passwords, 2FA promptsExpose a port, keep it patchedHTTPS and an API key
Who maintains itWhoever set it upYour teamUs

Free to start. Priced by emails, not by seats.

Free

For side projects and trying it out.

$0 per workspace per month

  • 100 emails per month
  • 1 day of retention
  • 2 pinned patterns
  • Unlimited members and inboxes
Start free

Team

For teams running email tests in CI.

$29 per workspace per month

  • 5,000 emails per month
  • 30 days of retention
  • Unlimited pinned patterns
  • Unlimited members and inboxes
Start with Team

Business

For larger QA teams and longer retention.

$79 per workspace per month

  • 25,000 emails per month
  • 90 days of retention
  • Unlimited pinned patterns
  • Unlimited members and inboxes
Start with Business
Compare plans in detail

Questions engineers ask first.

Something missing? Email us and a human who wrote the code will answer.

Does my app need any changes?
No. Your app sends email exactly as it does today. The only thing that changes is the address your test signs up with, which Waridex hands you.
How fast do messages show up?
Mail is accepted over SMTP and parsed in-process, so the wait call returns as soon as the message is in, usually within a couple of seconds of your app sending. The exact number depends on your sending provider.
What do you do with the raw email?
The raw message is stored so you can download it with its headers and attachments, then deleted after your workspace's retention period. Nothing is shared between workspaces or organisations.
Can I use my own domain for inboxes?
Inboxes live on the Waridex receiving domain, each under a domain of its own such as signup-k3f9x2.waridex.email.
Is there a rate limit?
Yes, per API key: 60 wait calls and 600 other calls a minute, sized so a normal CI run never hits it. Beyond it the API answers 429 with a Retry-After header.

Your first inbox is one call away.

Create an account, copy your key, and receive a test email in the time it takes to read this sentence.