Verify emails in n8n
n8n can call ValidReach with the HTTP Request node. A ValidReach community node package also exists in our repository, but it is not published to npm or listed in the n8n verified community-node directory, so this guide uses the HTTP Request node that every install already has.
Create the credential
In n8n add a Header Auth credential: name it ValidReach, set the header name to Authorization and the value to Bearer YOUR_API_KEY. Keep it in n8n’s credential store rather than in node parameters, because the key can spend credits.
Set up the HTTP Request node
Use method POST, URL https://validreach.dev/api/v1/verify/single, the Header Auth credential above, and send the body as JSON. Expression example: {"email": "{{ $json.email }}"}.
For a free check of a known disposable domain use https://validreach.dev/api/v1/verify/disposable with the same body. For the balance use method GET on https://validreach.dev/api/v1/credits.
POST https://validreach.dev/api/v1/verify/single
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{"email":"{{ $json.email }}"}Use the result
Add an IF node on {{ $json.data.status }}. Continue only for valid; decide catchall, risky and role by your policy; send invalid and disposable to a suppression path; retry unknown later when {{ $json.data.retryable }} is true (unknown is not billed).
The API returns HTTP 402 when the account is out of credits and 429 when rate limited. Enable "Never Error" on the node only if a failed check should not stop the workflow, and handle the error field explicitly.
Community node status
A community node package (verify, disposable, bulk up to 50, credits) is built and tested in our repository and runs inside n8n, but it is not on npm and not in the verified directory yet. Until it is published, use the HTTP Request node above.