REST API · Free · No API key · No signup

A free disposable email REST API, no key required.

Create a throwaway mailbox and read its mail programmatically. One POST returns an address and a token — no signup, no API key. Poll for messages or stream them over a WebSocket. Perfect for scripts, tests, and AI agents that need to receive verification codes.

Why this one

  • No API key — POST once and you get an address plus a bearer token.
  • No signup, no account, no card. Free.
  • Real-time: stream new mail over WebSocket, or just poll.
  • Drive the same mailbox from the CLI, the MCP server, or the web.

Quick start

1 · Create a mailbox

curl
# create a mailbox — no auth, no key
curl -X POST https://smails.dev/api/mailbox
# → { "address": "a8f3@smails.dev", "token": "a8f3@smails.dev.s3cr3t" }

2 · Read the mail

curl
# list messages with the returned token
curl https://smails.dev/api/mailbox/messages \
  -H "Authorization: Bearer <token>"

# read one message — full parsed body (text + html)
curl https://smails.dev/api/mailbox/messages/<id> \
  -H "Authorization: Bearer <token>"

3 · Or stream it live

javascript
// stream new-mail notifications
const ws = new WebSocket(
  "wss://smails.dev/api/mailbox/connect?token=" + token
);
ws.onmessage = (e) => {
  const msg = JSON.parse(e.data);
  if (msg.type === "new_email") fetchMessages();
};

Endpoints

POST
/api/mailbox

Create a mailbox → { address, token }

no auth
GET
/api/mailbox/messages

List messages

GET
/api/mailbox/messages/:id

Read a message (full parsed body)

DELETE
/api/mailbox/messages/:id

Delete a message

WS
/api/mailbox/connect?token=

Stream new-mail notifications

Authenticate every request except create with Authorization: Bearer <token>. The token is {address}.{secret} — keep it; it's the only way back into the mailbox.

Good to know

Receive-only

smails receives mail — verification codes, magic links, confirmations. It can't send or reply, so it's not for two-way threads.

Self-expiring

A mailbox is wiped after 7 days of inactivity. Any request renews it, so active inboxes stay alive.

Build with it.

Extracting a code in an agent? See reading verification codes, or plug in the MCP server.