Create a real @email.singles address instantly, receive mail as clean JSON with verification codes and links already extracted, and send email. 25 MB storage per inbox.
Your API key — copy it now, it is shown only once:
Try it:
One POST creates a working address. Pick a username or get a random one.
Text, HTML, links, attachments and OTP codes[] parsed for you.
Long-poll /wait blocks until the next email arrives. No polling loops.
Send with attachments, or reply to a received message with proper threading.
# 1. Get an API key curl -X POST https://email.singles/v1/signup # 2. Create an inbox curl -X POST https://email.singles/v1/inboxes -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" -d '{"username":"my-agent"}' # 3. Wait for the next email (returns full message with codes + links) curl "https://email.singles/v1/inboxes/my-agent/wait?timeout=50" -H "Authorization: Bearer $KEY" # 4. Send curl -X POST https://email.singles/v1/inboxes/my-agent/send -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{"to":"you@example.com","subject":"Hello","text":"Sent by my agent"}'
Base URL https://email.singles/v1 · Auth Authorization: Bearer es_… · {address} can be bob or bob@email.singles
| Method | Path | What it does |
|---|---|---|
| POST | /signup | Get an API key (no auth) |
| GET | /me | Usage and limits |
| POST | /inboxes | Create inbox {"username"?, "name"?} |
| GET | /inboxes | List inboxes |
| GET | /inboxes/{address} | Inbox info + storage used / free |
| DELETE | /inboxes/{address} | Delete inbox and its mail |
| GET | /inboxes/{address}/wait | Block until next email (?timeout= ≤50s, ?after=) |
| GET | /inboxes/{address}/messages | List (?direction=received|sent&unread=1&limit=) |
| GET | /inboxes/{address}/messages/{id} | Full message: text, html, codes, links, attachments |
| GET | /inboxes/{address}/messages/{id}/attachments/{n} | Download attachment |
| GET | /inboxes/{address}/messages/{id}/raw | Original .eml |
| DELETE | /inboxes/{address}/messages/{id} | Delete message, free storage |
| POST | /inboxes/{address}/send | Send {to, subject, text, html?, cc?, bcc?, attachments?, reply_to_message_id?} |
25 MB storage per inbox (received + sent). Mail that doesn't fit is rejected. 50 sends per day, 20 recipients per message, 100 inboxes per account.
Full reference for humans and LLMs: /llms.txt · machine spec: /openapi.json