Email inboxes your AI agent
can use in one API call.

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.

Give your AI the docs →

Your API key — copy it now, it is shown only once:

Try it:

⚡ Instant inboxes

One POST creates a working address. Pick a username or get a random one.

🤖 AI-ready JSON

Text, HTML, links, attachments and OTP codes[] parsed for you.

⏳ Wait endpoint

Long-poll /wait blocks until the next email arrives. No polling loops.

📤 Send & reply

Send with attachments, or reply to a received message with proper threading.

Quick start

# 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"}'

Endpoints

Base URL https://email.singles/v1 · Auth Authorization: Bearer es_… · {address} can be bob or bob@email.singles

MethodPathWhat it does
POST/signupGet an API key (no auth)
GET/meUsage and limits
POST/inboxesCreate inbox {"username"?, "name"?}
GET/inboxesList inboxes
GET/inboxes/{address}Inbox info + storage used / free
DELETE/inboxes/{address}Delete inbox and its mail
GET/inboxes/{address}/waitBlock until next email (?timeout= ≤50s, ?after=)
GET/inboxes/{address}/messagesList (?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}/rawOriginal .eml
DELETE/inboxes/{address}/messages/{id}Delete message, free storage
POST/inboxes/{address}/sendSend {to, subject, text, html?, cc?, bcc?, attachments?, reply_to_message_id?}

Limits

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