Developer product
Allocate private inboxes, wait for messages, extract codes, and assert outcomes in CI — without flaky shared mailboxes.
Bounded waits with after_sequence cursors — no busy polling races.
AUTH PLAIN on 127.0.0.1:2526 with your API key. Zero Internet relay.
HMAC X-Mailby-Signature with durable retries.
Create an account → Developer console → create mb_live_… key → export as MAILBY_KEY.
curl -sS -X POST https://mailby.app/api/v1/inboxes \
-H "Authorization: Bearer $MAILBY_KEY" \
-H "Content-Type: application/json" \
-d '{"retention_seconds":3600}'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"}'curl -sS "https://mailby.app/api/v1/inboxes/$INBOX_ID/otp?timeout=60" \ -H "Authorization: Bearer $MAILBY_KEY"
| Method | Path | Purpose |
|---|---|---|
| POST | /api/v1/inboxes | Create inbox |
| GET | /api/v1/inboxes | List inboxes |
| GET | /api/v1/inboxes/{id} | Get inbox |
| DELETE | /api/v1/inboxes/{id} | Delete inbox |
| GET | /api/v1/inboxes/{id}/messages | List messages |
| GET | /api/v1/inboxes/{id}/messages/wait | Wait for next ready message |
| GET | /api/v1/inboxes/{id}/otp | Wait until OTP/code extracted |
| POST | /api/v1/inboxes/{id}/messages | Inject RFC822 or JSON test mail |
| GET | /api/v1/messages/{id} | Message detail + codes/links |
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.