# n8n Email Verification & Enrichment — Ravn

Canonical: https://askravn.com/integrations/n8n

Integrations · n8n

# Ravn in n8n, with the HTTP Request node

Add an HTTP Request node that POSTs JSON to https://api.askravn.com/v1/tools/validate_email (or any tool) with a Header Auth credential holding Bearer and your key, then route on the status field in the response.
[Start free: 1,000 lookups](https://askravn.com/#start) [Read the docs](https://askravn.com/docs)

Setup
## Configure the HTTP Request node
There is no Ravn node to install. The built-in HTTP Request node does everything.
- / 01
### Create the credential
In the node, set Authentication to Generic Credential Type, then Header Auth. Create a new credential with Name `Authorization` and Value `Bearer rw_live_…`. n8n stores it encrypted, outside the workflow JSON.
- / 02
### Set method and URL
Method `POST`. URL `https://api.askravn.com/v1/tools/validate_email`. Swap the last part for any tool name.
- / 03
### Send a JSON body
Turn on Send Body, choose JSON as the content type and Using JSON. Paste the body below; the expression pulls the email from the incoming item.
- / 04
### Handle misses and errors
A miss is HTTP 200 with `status: "not_found"`, so add an IF or Switch node on `{{ $json.status }}`. In the node settings, turn on Retry On Fail to ride out short 503s.
- / 05
### Run a test item
Click Test step with one email. You should see `results.status` and `results.risk_score` in the output.
Config
## JSON body and routing expressions
Paste these into the node fields. For a batch, send an array to validate_emails instead.
```
// URL
https://api.askravn.com/v1/tools/validate_email

// JSON body (Specify Body: Using JSON)
{
"email": "{{ $json.email }}"
}

// Batch: URL .../v1/tools/validate_emails, body built from all items
{
"emails": {{ JSON.stringify($input.all().map(i => i.json.email)) }}
}

// Switch node rules on the response
{{ $json.status }}              equals  ok
{{ $json.results.status }}      equals  valid
{{ $json.results.risk_score }}  is one of  A, B
```

Recipes
## Workflows to build

- / 01
### Verify signups before they reach your CRM
Webhook trigger → HTTP Request (`validate_email`) → Switch: `valid` goes on to your CRM node, `invalid` is dropped, `risky` is tagged for review.
- / 02
### Fill missing work emails
Read rows with no email → HTTP Request to `search_business_email_by_name` with `{"name": "{{ $json.name }}", "company": "{{ $json.domain }}"}` → write `results.email` and `results.confidence` back. See [the email finder](https://askravn.com/features/email-finder-api).
- / 03
### Enrich inbound domains
For each new account, call `domain_to_company` for size and industry on your own provider key (People Data Labs): one lookup per hit, nothing on a miss, and no key returns 403 `provider_key_required`. See [company enrichment](https://askravn.com/features/company-enrichment-api).
Good to know
## Splitting batch results back into items
A `validate_emails` call returns one item whose `results` field is an array of verdicts, one per unique address, each with its own `email`. Add a Split Out node on `results` to turn it back into one item per address, then merge with your original items on the email field.
Keep the credential out of shared workflow exports: n8n exports reference the credential, not its value. Field meanings are on [the email verification page](https://askravn.com/features/email-verification-api), and [the tool reference](https://askravn.com/docs#tools) lists every input.
FAQ
## Common questions.
[All questions →](https://askravn.com/faq)My n8n run fails with 429. How should I slow it down?A 429 means you hit the 5-hour fair-use window or a short rate limit, and the response carries a `Retry-After` header in seconds. Use the node’s batching option to space requests, or switch to `validate_emails` so one request covers many addresses. Plan limits are on [the pricing page](https://askravn.com/pricing).Does this work on self-hosted n8n?Yes. The HTTP Request node behaves the same on n8n Cloud and self-hosted. Your server only needs outbound HTTPS to `api.askravn.com`.Can n8n’s AI Agent use Ravn as tools?If your n8n version has an MCP client tool, point it at `https://api.askravn.com/mcp` with the same Bearer header. Otherwise give the agent HTTP Request tools configured as above.

## More in [integrations](https://askravn.com/integrations)
Every page uses the same account, plan and tools. [See pricing →](https://askravn.com/pricing)
- [Python Email Verification API ClientCall Ravn from Python with requests: one POST per tool, branch on status, retry 429 using Retry-After, and turn error codes into clear exceptions..](https://askravn.com/integrations/python)
- [Zapier Email Verification WebhookVerify and enrich emails in a Zap with the Webhooks by Zapier POST action and a Filter on the result, on Zapier plans that include Webhooks..](https://askravn.com/integrations/zapier)
- [Attio Contact Enrichment & VerificationVerify emails and fill work addresses for Attio people records: export a list to CSV, enrich with the Ravn CLI, and import the columns back..](https://askravn.com/integrations/attio)
- [Claude Contact Data ConnectorAdd Ravn to Claude as a custom connector and ask for verified emails, company facts and phone checks in plain English, on web, desktop and mobile..](https://askravn.com/integrations/claude)
- [Claude Code MCP for Email & Contact DataAdd the Ravn MCP server to Claude Code in one command, authenticate with /mcp, and install the Ravn skill so Claude Code can enrich files for you..](https://askravn.com/integrations/claude-code)
- [Clay Email Verification via HTTP APIAdd Ravn to a Clay table with the HTTP API enrichment: verify emails, find work addresses and pull company facts into new columns..](https://askravn.com/integrations/clay)
