Free disposable email API. No authentication, no API keys, no rate-limit hassles. Designed to be consumed by any AI agent or script.
# 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"}'
| Field | Type | Description | |
|---|---|---|---|
| custom | string | optional | Desired inbox name (2-64 chars, a-z/0-9/hyphen). Some names are reserved. |
{ "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 }curl https://mail.atleast.my.id/api/inbox/blue-tiger-42
{ "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
}] }| Field | Type | Description |
|---|---|---|
| id | string | Message ID (hex) |
| from | string | Sender email address |
| to | string | Recipient (this inbox) |
| subject | string | Email subject |
| text | string | Plain-text body (MIME-parsed) |
| html | string | HTML body (MIME-parsed) |
| date | string | ISO-8601 receive timestamp |
| size | number | Raw email size in bytes |
curl https://mail.atleast.my.id/api/inbox/blue-tiger-42/b55fd50b3e85
{ "success": true,
"message": { "id": "b55fd50b3e85", "from": "sender@example.com", ... } }curl https://mail.atleast.my.id/api/inbox/blue-tiger-42/raw/b55fd50b3e85
Returns the raw email source as text/plain (headers + MIME body).
curl -X DELETE https://mail.atleast.my.id/api/inbox/blue-tiger-42
{ "success": true, "deleted": true, "messageCount": 2 }HTTP/1.1 404
{ "error": "not_found",
"message": "Inbox not found or expired." }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.