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.
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
Authorizationand ValueBearer rw_live_…. n8n stores it encrypted, outside the workflow JSON. - / 02
Set method and URL
Method
POST. URLhttps://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.statusandresults.risk_scorein the output.
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, BWorkflows to build
- / 01
Verify signups before they reach your CRM
Webhook trigger → HTTP Request (
validate_email) → Switch:validgoes on to your CRM node,invalidis dropped,riskyis tagged for review. - / 02
Fill missing work emails
Read rows with no email → HTTP Request to
search_business_email_by_namewith{"name": "{{ $json.name }}", "company": "{{ $json.domain }}"}→ writeresults.emailandresults.confidenceback. See the email finder. - / 03
Enrich inbound domains
For each new account, call
domain_to_companyfor size and industry on your own provider key (People Data Labs): one lookup per hit, nothing on a miss, and no key returns 403provider_key_required. See company enrichment.
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, and the tool reference lists every input.
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.
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
Every page uses the same account, plan and tools. See pricing →