DrafterPlus Mail
Temporary inboxes

Simple disposable email for quick testing.

Create an address, receive mail, read the message, and move on. Mailboxes last 10 minutes by default.

Use this domain drafterplus.nl
MX points to mail.drafterplus.nl

Quickstart

  1. Open the app at mail.drafterplus.nl.
  2. Click Generate email, or create a custom name.
  3. Use the address anywhere that needs a temporary inbox.
  4. Keep the page open to watch incoming messages.
Mailboxes are temporary. Do not use this for passwords, recovery addresses, or anything important.

API reference

The app uses a tiny JSON API. Public inboxes work without a key. Account inboxes use your account token from /account.

Create a random address

POST /api/new
Content-Type: application/json

{"domain":"drafterplus.nl"}

Create a custom address

POST /api/new
Content-Type: application/json

{"local":"your-name","domain":"drafterplus.nl"}

Create an API-only random subdomain address

POST /api/new
Content-Type: application/json

{"local":"user","random_subdomain":true}

Create a private account address

POST /api/new
Content-Type: application/json
X-API-Key: {account_api_key}

{"local":"private-name","domain":"drafterplus.nl"}

Read public inbox

GET /api/inbox/{email}?limit=80

Check an address

GET /api/check/{email}
POST /api/check
Content-Type: application/json

{"email":"user@h34934.drafterplus.nl"}

Read private account inbox

GET /api/inbox/{email}?token={mailbox_token}
GET /api/inbox/{email}?limit=80
X-API-Key: {account_api_key}

Read message

GET /api/message/{id}
GET /api/message/{id}?raw=1
FieldDescription
emailThe generated mailbox address.
ttl_secondsMailbox lifetime in seconds.
random_subdomainTrue when the API generated an address like user@h34934.drafterplus.nl.
tokenPrivate mailbox token. Anyone with the mailbox URL containing this token can open that mailbox.
app_urlDirect app URL for the mailbox, including token for private account mailboxes.
messagesInbox results, newest first.
errorMachine-readable error code when ok is false.

Code examples

Copy these examples to create an inbox, poll messages, and read a message body.

cURL: create inbox
curl -sS https://mail.drafterplus.nl/api/new \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"domain":"drafterplus.nl"}'
cURL: custom inbox
curl -sS https://mail.drafterplus.nl/api/new \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"local":"test-name","domain":"drafterplus.nl"}'
cURL: API-only random subdomain
curl -sS https://mail.drafterplus.nl/api/new \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"local":"user","random_subdomain":true}'
cURL: create private account inbox
curl -sS https://mail.drafterplus.nl/api/new \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: dpk_your_account_key" \
  -d '{"local":"private-name","domain":"drafterplus.nl"}'
cURL: read inbox
curl -sS "https://mail.drafterplus.nl/api/inbox/silentfox31@drafterplus.nl?limit=80"
cURL: check subdomain address
curl -sS "https://mail.drafterplus.nl/api/check/user@h34934.drafterplus.nl"
cURL: read private account inbox
curl -sS "https://mail.drafterplus.nl/api/inbox/secret@drafterplus.nl?limit=80" \
  -H "X-API-Key: dpk_your_account_key"
cURL: read with mailbox token
curl -sS "https://mail.drafterplus.nl/api/inbox/secret@drafterplus.nl?token=mailbox_token_here"
Node.js: create and poll inbox
const API = "https://mail.drafterplus.nl";

async function createInbox() {
  const res = await fetch(`${API}/api/new`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ domain: "drafterplus.nl" })
  });

  const data = await res.json();
  if (!data.ok) throw new Error(data.error);
  return data.email;
}

async function readInbox(email) {
  const res = await fetch(`${API}/api/inbox/${encodeURIComponent(email)}?limit=80`);
  const data = await res.json();
  if (!data.ok) throw new Error(data.error);
  return data.messages;
}

const email = await createInbox();
console.log("Inbox:", email);

setInterval(async () => {
  const messages = await readInbox(email);
  console.log("Messages:", messages.length);
}, 5000);
Node.js: random subdomain inbox
const API = "https://mail.drafterplus.nl";

const res = await fetch(`${API}/api/new`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ local: "user", random_subdomain: true })
});

const data = await res.json();
if (!data.ok) throw new Error(data.error);

console.log(data.email); // user@h34934.drafterplus.nl
console.log(data.app_url);
Node.js: create private inbox with API key
const API = "https://mail.drafterplus.nl";
const key = "dpk_your_account_key";

const res = await fetch(`${API}/api/new`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-Key": key
  },
  body: JSON.stringify({ local: "private-name", domain: "drafterplus.nl" })
});

const data = await res.json();
if (!data.ok) throw new Error(data.error);

console.log(data.email);
console.log(data.app_url);
Node.js: private inbox with API key
const API = "https://mail.drafterplus.nl";
const key = "dpk_your_account_key";
const email = "secret@drafterplus.nl";

const res = await fetch(`${API}/api/inbox/${encodeURIComponent(email)}?limit=80`, {
  headers: { "X-API-Key": key }
});
const data = await res.json();

if (!data.ok) throw new Error(data.error);
console.log(data.messages);
Node.js: read one message
const API = "https://mail.drafterplus.nl";
const messageId = "0QT3F9ur71xs20KxRkmSyh";

const res = await fetch(`${API}/api/message/${encodeURIComponent(messageId)}`);
const data = await res.json();

if (!data.ok) throw new Error(data.error);

console.log(data.message.Subject || data.message.subject);
console.log(data.message.Text || data.message.text || data.message.HTML || data.message.html);

Output examples

Example JSON output from common API calls.

Create inbox response
{
  "ok": true,
  "email": "silentfox31@drafterplus.nl",
  "ttl_seconds": 600,
  "domain": "drafterplus.nl"
}
Random subdomain response
{
  "ok": true,
  "email": "user@h34934.drafterplus.nl",
  "ttl_seconds": 600,
  "domain": "h34934.drafterplus.nl",
  "random_subdomain": true,
  "visibility": "public",
  "app_url": "https://mail.drafterplus.nl/user@h34934.drafterplus.nl"
}
Private account inbox response
{
  "ok": true,
  "email": "private-name@drafterplus.nl",
  "token": "mailbox_token_here",
  "visibility": "private",
  "saved_to_account": true,
  "no_expiry": true,
  "app_url": "https://mail.drafterplus.nl/?mail=private-name%40drafterplus.nl&token=mailbox_token_here"
}
Inbox response
{
  "ok": true,
  "email": "silentfox31@drafterplus.nl",
  "count": 1,
  "messages": [
    {
      "id": "0QT3F9ur71xs20KxRkmSyh",
      "from": "noreply@example.com",
      "subject": "Verify your account",
      "snippet": "Your verification code is 123456"
    }
  ]
}
Address check response
{
  "ok": true,
  "email": "user@h34934.drafterplus.nl",
  "domain": "h34934.drafterplus.nl",
  "valid": true,
  "available": true,
  "reserved": false,
  "visibility": "public",
  "random_subdomain": true
}
Error response
{
  "ok": false,
  "error": "email_in_use"
}

Custom Domains

You can add your own custom domains to receive temporary mail. Setting it up is simple:

  1. Go to the Account Page.
  2. Enter your domain (e.g. yourdomain.com) under the **Domains** tab and click **Add Domain**.
  3. Copy the generated DNS records (TXT and MX records) and add them to your domain provider's DNS settings.
  4. Click the **Verify now** button. Once verified, the domain will be active.
  5. To create mailboxes on your custom domain, simply select it from the dropdown in the creation panel or use it via the API.

Public vs. Private Domains

By default, verified custom domains are Private to Token. Only your account (using your account API key) can generate new email addresses on them.

You can click Make Public on the Account Page to publish the domain. Once public, anyone using mail.drafterplus.nl can generate email addresses on your custom domain without needing an account or API key.

Every 5 minutes, our system verifies all active custom domains. If DNS records are removed or fail verification, the domain will be unpublished and returned to pending status automatically.

Domain Sharing Token

If you want to keep your domain private but still allow specific external applications or users to create temporary inboxes on it, you can share your Domain Token (onboarding token) found on the Account Page. This token grants address generation rights without giving away your master Account API Key.

API Usage with Custom Domains

Create addresses on your verified custom domain using your master Account API Key:

POST /api/new
Content-Type: application/json
X-API-Key: {your_account_api_key}

{"local":"custom-user","domain":"yourdomain.com"}

Alternatively, create addresses on a private custom domain using a **Domain Token** (no Account API Key required):

POST /api/new
Content-Type: application/json

{
  "local": "anonymous-user",
  "domain": "yourdomain.com",
  "domain_token": "dpo_your_domain_token_here"
}

Gmail Integration

You can generate temporary inboxes using real gmail.com (and googlemail.com) addresses to test signups on platforms that block custom domain extensions.

Prerequisites

Before you can generate Gmail addresses, you must enable Gmail integration. Go to the Account Page, click on the **Mails** tab, and toggle Gmail generation **ON**.

Key Rules & Lifetimes

  • Lifetimes: Homepage and public API generations last for 5 minutes (300 seconds). Account panel generations last for 10 minutes (600 seconds).
  • No Permanent Mode: Gmail temporary inboxes cannot be set to permanent/saved indefinitely. They will automatically expire.
  • Limits: Each account is restricted to a maximum of 10 active (unexpired) Gmail mailboxes at any given time.
  • Auto-Generated Names: Due to Gmail address format availability, local parts (usernames) are dynamically auto-generated under the hood. You cannot choose a custom local name for Gmail mailboxes.

Gmail API Generation Examples

To create a Gmail temporary mailbox anonymously or via your account, send a POST request with the domain parameter set to gmail.com:

POST /api/new
Content-Type: application/json

{"domain":"gmail.com"}

Example response payload:

{
  "ok": true,
  "email": "inbox.test.user.abc+temp_x9@gmail.com",
  "ttl_seconds": 300,
  "expires_after_seconds": 300,
  "token": "32_character_mailbox_secret_token_here",
  "domain": "gmail.com",
  "visibility": "public",
  "saved_to_account": false,
  "no_expiry": false,
  "app_url": "https://mail.drafterplus.nl/inbox.test.user.abc+temp_x9@gmail.com?token=..."
}

Rate limits

There is one simple public API rate limit. If a request is blocked, the API returns {"ok":false,"error":"rate_limited"}.

ActionLimit
All public API requests180 requests per 60 seconds

Limitations

  • Creating inboxes is protected against spam bursts.
  • Temporary mailboxes expire after 10 minutes.
  • Account mailboxes are private, saved without expiry, and require either the account API key or the mailbox token.
  • Accounts can store up to 100 mailboxes.
  • Anyone with a private mailbox URL that includes the token can open that mailbox.
  • Reserved names like admin, root, and noreply are blocked.
  • Mail is meant for testing and short-lived signups.
  • Random subdomain addresses are API-only. The normal app does not generate them from the UI.

Troubleshooting

The inbox stays empty

Check that the address is spelled exactly right and that the sender has actually delivered the message.

The address cannot be created

Use lowercase letters, numbers, dots, dashes, or underscores. Try another name if it is reserved or already active.

The app feels stuck

Refresh the page and generate a new mailbox. The API is stateless enough that a fresh session is usually enough.