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.
# 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
- 1Create a one-time address via the API
- 2Have the app under test send mail to that address
- 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.
| Limit | Free | Free (domain verified) | Pro ($12/mo) |
|---|---|---|---|
| Concurrent addresses | 1 | 2 | 50 |
| Messages received per day | 5 | 100 | Unlimited |
| Address lifetime | 10 minutes | 10 minutes | up 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.