Developer product

Test Inbox Cloud

Allocate private inboxes, wait for messages, extract codes, and assert outcomes in CI — without flaky shared mailboxes.

Wait API

Bounded waits with after_sequence cursors — no busy polling races.

SMTP capture

AUTH PLAIN on 127.0.0.1:2526 with your API key. Zero Internet relay.

Signed webhooks

HMAC X-Mailby-Signature with durable retries.

Quickstart

Create an account → Developer console → create mb_live_… key → export as MAILBY_KEY.

1. Create an inbox

curl -sS -X POST https://mailby.app/api/v1/inboxes \
  -H "Authorization: Bearer $MAILBY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"retention_seconds":3600}'

2. Inject a test message (HTTP)

curl -sS -X POST https://mailby.app/api/v1/inboxes/$INBOX_ID/messages \
  -H "Authorization: Bearer $MAILBY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subject":"Verify","text":"Your code is 424242"}'

3. Wait for OTP

curl -sS "https://mailby.app/api/v1/inboxes/$INBOX_ID/otp?timeout=60" \
  -H "Authorization: Bearer $MAILBY_KEY"

API surface

MethodPathPurpose
POST/api/v1/inboxesCreate inbox
GET/api/v1/inboxesList inboxes
GET/api/v1/inboxes/{id}Get inbox
DELETE/api/v1/inboxes/{id}Delete inbox
GET/api/v1/inboxes/{id}/messagesList messages
GET/api/v1/inboxes/{id}/messages/waitWait for next ready message
GET/api/v1/inboxes/{id}/otpWait until OTP/code extracted
POST/api/v1/inboxes/{id}/messagesInject RFC822 or JSON test mail
GET/api/v1/messages/{id}Message detail + codes/links

Auth & plans

All /api/v1/* calls require Authorization: Bearer $MAILBY_KEY. Free accounts get limited API access; webhooks and SMTP capture unlock on Developer (and higher) plans.

Local SMTP capture: 127.0.0.1:2526 — AUTH PLAIN password = API key; RCPT must be an inbox you created.