← Back to inbox

Temp Mail API

Free disposable email API. No authentication, no API keys, no rate-limit hassles. Designed to be consumed by any AI agent or script.

Base URL
https://mail.atleast.my.id
Auth
None required
Rate Limit
100 req/min (burst ~25/5s)
TTL
600s (10 min)

Endpoints

POST
/api/inbox
Create a new temporary inbox
›

Request

# random address (recommended)
curl -X POST https://mail.atleast.my.id/api/inbox

# custom name
curl -X POST https://mail.atleast.my.id/api/inbox \
  -H "Content-Type: application/json" \
  -d '{"custom": "my-own-box"}'

Body (optional)

FieldTypeDescription
customstringoptionalDesired inbox name (2-64 chars, a-z/0-9/hyphen). Some names are reserved.

Response — 201 Created

{ "success": true,
  "inbox": "blue-tiger-42@atleast.my.id",
  "createdAt": "2026-08-25T00:00:00.000Z",
  "expiresAt": "2026-08-25T00:10:00.000Z",
  "ttl": 600 }
GET
/api/inbox/:name
List all messages in an inbox (max 50, newest first)
›

Request

curl https://mail.atleast.my.id/api/inbox/blue-tiger-42

Response — 200 OK

{ "success": true,
  "inbox": "blue-tiger-42@atleast.my.id",
  "messageCount": 2,
  "messages": [{
    "id": "b55fd50b3e85",
    "inbox": "blue-tiger-42",
    "from": "sender@example.com",
    "to": "blue-tiger-42@atleast.my.id",
    "subject": "Verify your account",
    "text": "Your verification code is: 123456",
    "html": "<h1>Verify</h1>",
    "date": "2026-08-25T00:00:00.000Z",
    "size": 335
  }] }

Message fields

FieldTypeDescription
idstringMessage ID (hex)
fromstringSender email address
tostringRecipient (this inbox)
subjectstringEmail subject
textstringPlain-text body (MIME-parsed)
htmlstringHTML body (MIME-parsed)
datestringISO-8601 receive timestamp
sizenumberRaw email size in bytes
GET
/api/inbox/:name/:msgId
Get a single message by ID
›

Request

curl https://mail.atleast.my.id/api/inbox/blue-tiger-42/b55fd50b3e85

Response — 200 OK

{ "success": true,
  "message": { "id": "b55fd50b3e85", "from": "sender@example.com", ... } }
GET
/api/inbox/:name/raw/:msgId
Get the raw RFC-822 email source
›

Request

curl https://mail.atleast.my.id/api/inbox/blue-tiger-42/raw/b55fd50b3e85

Response — 200 OK

Returns the raw email source as text/plain (headers + MIME body).

DELETE
/api/inbox/:name
Delete an inbox and all its messages
›

Request

curl -X DELETE https://mail.atleast.my.id/api/inbox/blue-tiger-42

Response — 200 OK

{ "success": true, "deleted": true, "messageCount": 2 }

Error Codes

ERR
Standard error format
All errors return {"error": "code", "message": "..."}
›
404 not_found 400 bad_request 429 rate_limited

Example

HTTP/1.1 404
{ "error": "not_found",
  "message": "Inbox not found or expired." }

Notes

CORS self no-store JSON Inboxes expire after 10 min Reserved names blocked

AI Agent Guide

PY
Python — create inbox & poll for a message
Simple stdlib-only recipe
›
import json, time
from urllib.request import urlopen

BASE = "https://mail.atleast.my.id"

inbox = json.load(urlopen(BASE + "/api/inbox"))["inbox"]
name = inbox.split("@")[0]
print("Send mail to:", inbox)

for _ in range(40):               # poll up to ~200s
    data = json.load(urlopen(f"{BASE}/api/inbox/{name}"))
    if data["messages"]:
        m = data["messages"][0]
        print(m["from"], "|", m["subject"])
        print(m["text"])
        break
    time.sleep(5)

A full-featured CLI client ships with the project: client/temp-mail.py

⚠️ Important: use only the local part (before @) in URL paths — GET /api/inbox/{name}, NOT GET /api/inbox/{name}@atleast.my.id.