chobitmail
DocsAPI Docslogin

Free · No credit card

Email inbox API
for E2E testing

Stop polling, start asserting. Create a one-time address per test, and the wait API returns the OTP and verification link the moment the email lands. Write signup and passwordless auth tests without mocks — and without sleeps, retries, or HTML parsing.

terminal
# Issue an email address

$ curl -s -X POST https://chobitmail.com/api/inboxes \
    -H "Authorization: Bearer $CHOBITMAIL_API_KEY"
{ "address": "v56m2aq5ly17piq3@chobitmail.com", … }

# Send mail to the issued address, then get the parsed body as JSON

$ curl -s "https://chobitmail.com/api/inboxes/v56m2aq5ly17piq3/messages/wait?timeout=25" \
    -H "Authorization: Bearer $CHOBITMAIL_API_KEY"
{
  "subject": "Your code",
  "codes": ["482913"],
  "links": ["https://myapp.example/verify?token=…"]
}

Features

Test with real email
Email is a special part of testing. You can mock it, but when possible you want the real thing. chobitmail receives real email.
OTP codes already extracted
Auth codes and verification links are extracted on receipt. Use them as-is without parsing the HTML body.
Issue addresses freely
Create email addresses via the API so each test can use its own. They expire and delete themselves automatically — no cleanup code needed.
Works with curl alone
Plain REST — no SDK or dedicated library required. A Playwright helper is also available, so you can write tests in a few lines.

How it works

  1. 1Create a one-time address via the API
  2. 2Have the app under test send mail to that address
  3. 3Wait for the message via the wait API and assert on the extracted OTP or link

Pricing

Free to use. Sign in with a GitHub account — no credit card required.

LimitFreeFree (domain verified)Pro ($12/mo)
Concurrent addresses1250
Messages received per day5100Unlimited
Address lifetime10 minutes10 minutesup to 24 hours

Verify your own sender domain via DNS to raise concurrent addresses and the daily message cap. Addresses are single-use, sized for one test: create → receive → assert usually takes under a minute, so the free 10-minute lifetime is deliberate.

Get started

Sign in with GitHub to start using the API.

Sign in with GitHub (free)