ravn
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 Read the docs

Setup

Configure the HTTP Request node

There is no Ravn node to install. The built-in HTTP Request node does everything.

  1. / 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.

  2. / 02

    Set method and URL

    Method POST. URL https://api.askravn.com/v1/tools/validate_email. Swap the last part for any tool name.

  3. / 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.

  4. / 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.

  5. / 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

  1. / 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.

  2. / 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.

  3. / 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.

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, and the tool reference lists every input.

FAQ

Common questions.

All questions →

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.