Sign in

TestTau docs

One place for public disposable mail, signed-in private sender mail, webhook capture, schema assertions, and automation endpoints.

Public vs private

Public mailSend to <name>@mail.testtau.com. Anyone who knows the inbox name can open it. Use this for anonymous QA, smoke tests, and throwaway signups.
Private mailSign in, register one sender address, and create an API key. Mail from that sender is stored separately and requires Authorization: Bearer <key> to read.
Public hooksSend requests to https://hook.testtau.com/<hookId>. Anyone who knows the hook id can inspect captures.
Private hooksSign in and create one private hook. Sending to the capture URL is open, but inspecting, replaying, configuring, wiping, and API reads require the hook key.

Mail

Send mail to any address at mail.testtau.com; read it in the browser or wait for it from CI.

Quick start

checkout-qa@mail.testtau.com
https://mail.testtau.com/i/checkout-qa

Wait from automation

The wait endpoint long-polls for up to 15 seconds and returns the newest matching message.

curl "https://mail.testtau.com/i/checkout-qa/api/wait?timeout=15000&subject=Verify&text=884201"

Supported filters are from, to, subject, preview, text, hasAttachments, and after (epoch milliseconds).

Signed-in private sender mail

Free accounts can register one sender email and generate a mail API key. When TestTau receives mail from that sender, it stores the message in a private inbox instead of the anonymous public inbox.

Public inboxAnyone with the inbox URL can read and delete messages. Best for random QA and smoke tests.
Private sender inboxMail from your registered sender is stored separately and requires Authorization: Bearer <key>.
# Sender: you@example.com
login-smoke@mail.testtau.com

# Browser viewer
https://mail.testtau.com/private/i/login-smoke

# Paste the key in the browser. TestTau stores it in tab session storage
# and sends it as an Authorization header, not in the URL.

# API
curl -H "Authorization: Bearer $TESTTAU_KEY" \
  "https://mail.testtau.com/private/i/login-smoke/api/list"

Mail API

curl "https://mail.testtau.com/i/checkout-qa/api/quota"
curl "https://mail.testtau.com/i/checkout-qa/api/list"
curl "https://mail.testtau.com/i/checkout-qa/api/message/<messageId>"
curl "https://mail.testtau.com/i/checkout-qa/api/message/<messageId>/json"
curl -X DELETE "https://mail.testtau.com/i/checkout-qa/api/message/<messageId>"
curl -X DELETE "https://mail.testtau.com/i/checkout-qa/api/all"

The message JSON endpoint returns the parsed email content: sender, recipient, subject, preview, plain text, HTML, attachment metadata, and download links for the raw .eml plus each attachment.

{
  "id": "01...",
  "fromAddr": "sender@example.com",
  "toAddr": "checkout-qa@mail.testtau.com",
  "subject": "Verify your email",
  "textBody": "Your code is 884201",
  "htmlBody": "<p>Your code is <strong>884201</strong></p>",
  "attachments": [
    {
      "id": "01...",
      "filename": "receipt.pdf",
      "contentType": "application/pdf",
      "sizeBytes": 12000,
      "downloadUrl": "/i/checkout-qa/api/message/01.../attachment/01..."
    }
  ],
  "links": {
    "raw": "/i/checkout-qa/api/message/01.../raw"
  }
}

Mail limits

Message size25 MiB
Attachment size5 MiB
Attachments per message10
Stored messages per inbox100
Signed-in private senders1 sender email per account
HTTP API rate limit120 requests/minute per IP
Inbound sender limit100 messages/hour per sender address
Inbound domain limit500 messages/hour per sender domain
Retention48 h