Use Case

Email Verification in an n8n Workflow

TL;DR
Verdict n8n has no disposable email node, and it does not need one. The REST API is three HTTP Request nodes, and the polling loop is a Wait node wired back into an If node.

The shape of the workflow

Any automation that signs up for something on your behalf hits the same wall: a code arrives by email and the workflow has no inbox to read. The fix is to create the address inside the workflow, so the run owns it end to end.

  1. Create inbox — HTTP Request, POST, returns the address as plain text
  2. Do the thing — whatever your workflow already did, using that address
  3. List messages — HTTP Request, GET, returns everything on the account
  4. If — did a message for this address arrive yet?
  5. Wait — 5 seconds on the false branch, then back to step 3
  6. Extract — pull the code or link out of the message body

Credentials

Register once, then create a Header Auth credential in n8n rather than pasting the key into each node. Name it something like EmptyInbox API and reuse it across every HTTP Request node in the workflow.

curl -X POST https://emptyinbox.me/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username": "n8n-automation"}'

# {"api_key": "ei...", "inbox_quota": 5}

In the credential, set the header name to Authorization and the value to Bearer ei... with your key.

Node 1: create the inbox

Method POST, URL https://emptyinbox.me/api/inbox, your Header Auth credential, and response format set to String. That last setting matters: the endpoint returns the address as plain text, and leaving the format on JSON makes the node fail on a body that is not JSON.

Reference the result downstream as {{ $json.data.trim() }}, or whatever field name you gave the string output.

Nodes 3 to 5: the polling loop

The list endpoint returns every message on the account, so filter to the address this run created.

// If node, condition (JavaScript expression)
{{ $json.some(m => m.inbox === $('Create inbox').item.json.data.trim()) }}

True branch continues to extraction. False branch goes to a Wait node set to 5 seconds, whose output connects back to the List messages node. That backward connection is the loop.

Give the loop a ceiling. n8n will happily cycle forever if the mail never arrives, so either cap the workflow with an execution timeout or keep a counter in static data and fail the run past a threshold.

Node 6: extract the code

A Set node with an expression is usually enough. For a six digit code:

{{ $json.find(m => m.inbox === $('Create inbox').item.json.data.trim())
     .text_body.match(/\b\d{6}\b/)[0] }}

For a confirmation link, match on a URL pattern instead and feed the result into an HTTP Request node that visits it. Messages also carry html_body, subject, sender and timestamp if you need to assert on more than the body text.

Cost of a scheduled workflow

One inbox credit is consumed per inbox created, not per message received. A workflow that runs hourly and creates one inbox per run spends about 720 credits a month, which is roughly $38 at bulk rates. If the runs do not each need a fresh identity, create one inbox and reuse the address across runs, which costs a single credit.

Messages are deleted after 7 days, so a long-lived reused inbox does not accumulate storage.

Frequently asked questions

Is there an official n8n node for EmptyInbox?

No, and none is needed. Every endpoint is reachable from the built-in HTTP Request node with a Header Auth credential.

Why does the create inbox node fail with a JSON parse error?

That endpoint returns the address as plain text. Set the node's response format to String rather than JSON.

How do I stop the polling loop from running forever?

Set an execution timeout on the workflow, or keep an attempt counter in workflow static data and route to an error branch once it passes your limit.

Do I need a new inbox for every workflow run?

Only if each run needs a distinct identity. Creating one inbox and reusing the address costs a single credit, and old messages still expire after 7 days.

Unblock your automation

Free tier includes 5 inboxes. No credit card required.

Get API Key