Test the emails
your users depend on
Your test suite checks everything except the email that unlocks the account. Give each test a real inbox, wait for the message, and get the OTP code or verification link back as a field.
Three calls, no sleeps
- Create an inbox with POST /inboxes. You get a fresh address that can receive mail straight away.
- Trigger your flow: sign up, reset a password or send an invite with that address.
- Wait for the code with GET /inboxes/{id}/otp?timeout=30. It returns the moment the email lands, with otp and verificationLink filled in.
# 1. Create an inbox
curl -s -X POST "https://api.blinkinbox.club/api/v1/inboxes" \
-H "Authorization: Bearer $BLINKINBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prefix": "signup", "ttlMinutes": 30}'
# → {"id":"…","address":"signup4k2j9x1a@blinkinbox.club", …}
# 2. Trigger your signup flow with that address, then wait for the code
curl -s "https://api.blinkinbox.club/api/v1/inboxes/signup4k2j9x1a@blinkinbox.club/otp?timeout=30" \
-H "Authorization: Bearer $BLINKINBOX_API_KEY"
# → {"otp":"482913","verificationLink":null,"subject":"Your code", …}Built for test suites
Wait for the email, not the clock
GET /otp and /messages/wait hold the request open until a matching email arrives (up to 60 seconds), then return immediately. No sleep(), no polling loop.
Codes and links already parsed
One-time codes like 482913 or G-4F7K2Q and verification or magic links come back as otp and verificationLink. No regex over HTML in your tests.
One inbox per test
Every test creates its own address, so parallel runs never share state or read each other’s mail. Inboxes expire on their own.
Your own domain
Some apps block disposable domains. On Pro and Scale, receive at anything@test.yourcompany.com with one MX and one TXT record.
Webhooks
Prefer push? Every new email can fire a signed email.received webhook with the code already extracted.
OpenAPI 3.1
Generate a typed client in any language, or call the REST API from cURL, Node, Python, Playwright or Cypress.
Email flows you can finally test
If your app sends it, a test can receive it and check the code, the link, the sender and the content.
Mail catcher, shared Gmail, or an API?
| Local catcher (Mailpit, MailHog) | Shared Gmail account | BlinkInbox | |
|---|---|---|---|
| Works against staging and production | No, needs your SMTP settings | Yes | Yes |
| Parallel tests | Yes | Messy: one shared inbox | Yes, one inbox per test |
| Waiting for the email | Polling | Polling, IMAP or Gmail API | One long-poll request |
| Code and link extraction | Write it yourself | Write it yourself | Built in |
| Setup | Run a container | OAuth, app passwords | An API key |