Messages and the address are deleted after one hour. Nothing is kept beyond that.
Building something? There's an API. Read the documentation →
How it works
- Take the address above. It already exists — nothing to create, nothing to confirm.
- Paste it into whatever signup form is asking you for an email.
- The code shows up here in large type with a copy button. You never have to open or read the message.
For your automated tests
The same service exposes an API. The route that matters is wait: it blocks until the message lands, instead of making you guess at sleep durations in your end-to-end tests.
// Playwright — a whole signup, code included const { address, id } = await sink.createInbox(); await page.fill('#email', address); await page.click('#signup'); const { message } = await sink.wait(id); // unblocks when the mail arrives await page.fill('#code', message.otp); // the code is already extracted
1,000 calls a month, no card asked. Enough to wire it into your test suite and see if it holds.
Then, when your tests start getting refused: a domain of your own is published nowhere, so it lands on no blocklist — 29 € a month.
What we deliberately don't do
These inboxes receive, full stop. You cannot reply from a disposable address, and that is on purpose: such a message would not arrive anywhere anyway.
Remote images in messages are blocked by default. HTML is rendered in isolation, with no scripts and no access to the page.
One hour, then erased. No archive, no backup, nothing to come asking us for later.