Quickstart

Sign in with your email, get an inbox on your free subdomain and receive your first email. It takes about a minute.

Sign in with your email

Open the sign in page and enter your email. We send you a link and a 6 digit code; click the link or type the code. Both work once and for 15 minutes. There is no password.

The first time you sign in we create your account and a workspace. Each workspace gets a private, random code and with it its own domain, such as k7m3qz.mailbay.email. Nothing else is made until you choose what to set up first: add your own domain, or just try it, which makes your Playground. Any address under your code, for example hello@k7m3qz.mailbay.email, receives mail right away and lands in the Playground's Catch-all inbox: send it a message from any account and watch it arrive in the dashboard.

Create an API key

Apps, agents and the CLI use API keys. In the dashboard, open API keys and choose Create key. Keys start with mb_live_, are shown once, and can be limited to one inbox. Send the key as a bearer token.

curl https://api.mailbay.dev/v1/inboxes \
  -H "Authorization: Bearer $MAILBAY_API_KEY"

Create an inbox

Pick the part before the @. The inbox lives on your workspace's code domain and receives mail as soon as the request returns. Without a named inbox, the same address still reaches your Catch-all.

curl -X POST https://api.mailbay.dev/v1/inboxes \
  -H "Authorization: Bearer $MAILBAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"local_part": "support"}'
Response
{
  "id": "ibx_01jbz8w4k2q9...",
  "org_id": "org_01jbz7t0a1b2...",
  "address": "support@k7m3qz.mailbay.email",
  "local_part": "support",
  "domain": "k7m3qz.mailbay.email",
  "display_name": "Support",
  "created_at": "2026-10-13T09:40:52Z"
}

Receive an email

Send a message to the new address from any mail account, then wait for it. The wait endpoint holds the request open until a matching message arrives and returns any codes and links it finds.

curl "https://api.mailbay.dev/v1/inboxes/ibx_01jbz8w4k2q9/wait?timeout=60" \
  -H "Authorization: Bearer $MAILBAY_API_KEY"

# On the Catch-all, wait for one made up address:
curl "https://api.mailbay.dev/v1/inboxes/ibx_catchall/wait?to=signup-42@k7m3qz.mailbay.email&timeout=60" \
  -H "Authorization: Bearer $MAILBAY_API_KEY"
Agents call the same thing as the MCP tool wait_for_email. See MCP.

Use the CLI

The mailbay CLI is a single Rust binary. It is not on a package registry yet; build it from a checkout of the Mailbay repository, then sign it in with an API key.

cargo install --path crates/cli

mailbay login            # paste your API key, it is checked and saved
mailbay inbox create support
mailbay inbox list
mailbay wait ibx_01jbz8w4k2q9 --timeout 2m

It also has whoami, messages, message, threads and thread. Add --json to any command for the raw API answer.

Next: Inboxes, Messages and threads, or put the inbox on your own domain with Domains.

Something unclear or wrong? The API answers every error with a fix, and so should these docs. Back to mailbay.dev