Domain Onboarding Verification API

Verify Customer Domains During Onboarding Without Treating Every Unusual Setup as an Error

A real onboarding check needs context. Some domains have weak security, while others are configured for a specific mail role. Veldica gives you the evidence you need to approve a domain or send it to review.

The White House example on this page shows a common case: no main mail record, but strong security signals elsewhere. Our API catches these details so you don't block good customers.

Overview

A real onboarding check needs context. Some domains have weak security, while others are configured for a specific mail role. Veldica gives you the evidence you need to approve a domain or send it to review.

Who uses this
SaaS Teams Onboarding Customers

Teams that need more than a rigid 'pass/fail' check because edge cases create false alarms and support tickets.

What they need
Approve, Warn, or Review

A structured report that helps your product make the right choice instead of using a rigid, basic rule.

Why Veldica is different
It Understands Nuance

Our engine can tell if a domain is set up to only send mail, not receive it, which stops unnecessary errors during signup.

Current workflow

This is how most manual onboarding works, which often creates extra work for support teams.

  1. A customer adds their domain to your app.
  2. Your team checks for basic records like MX, SPF, and DMARC.
  3. If a record is missing, your team has to guess if it's a mistake or intentional.
  4. Customers get different answers depending on which support agent they talk to.
  5. Future checks mean starting the whole investigation over from the beginning.

Where it breaks

The problem isn't just seeing the records; it's knowing what they actually mean for that specific customer.

  • Some domains intentionally don't receive mail, so a missing record shouldn't always be a block.
  • Your signup system needs a specific explanation to show the customer, not just technical jargon.
  • A good system needs to know the difference between a real security gap and a unique setup.
  • The same result needs to work for signup checks, support help, and fixing errors.

Replacement model

The Veldica model checks once, understands the setup, and gives you a consistent result every time.

Manual Check

Read the records and try to guess what the domain is doing with its email.

Free Audit

Run a quick check during signup and save the result with the customer's account.

Review Details

Use the risk level and top findings to automatically group cases into approve, warn, or review.

Fast Action

If a domain needs a fix, use the Pro tools to get a plan instead of writing one by hand.

Verified request

This is the request you can add to your domain signup or verification step.

Request
curl -H 'content-type: application/json' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: email-domain-trust-auditor.p.rapidapi.com' \
  -X POST 'https://email-domain-trust-auditor.p.rapidapi.com/v1/free/audits/domain' \
  -d '{
    "domain": "whitehouse.gov"
  }'

If a domain needs a closer look, use the same request with our Pro tools.

Verified response

The White House example shows why nuance matters. It is not a rigid 'pass' or 'fail,' and the API tells you exactly why it needs a review.

Free audit result

A structured report for a unique onboarding case.

{
  "domain": "whitehouse.gov",
  "score": 79,
  "grade": "B",
  "risk_level": "medium",
  "mail_flow_profile": "apex_outbound_or_subdomain_mail_possible",
  "assessment_confidence": "medium",
  "top_findings": [
    {
      "id": "mx.apex_missing_outbound_possible",
      "check": "mx",
      "status": "warn",
      "severity": "medium",
      "title": "Apex MX Missing",
      "fix": "Check if this domain is meant to receive mail. If not, a 'Null MX' should be used to stay safe."
    },
    {
      "id": "tls_rpt.missing",
      "check": "tls_rpt",
      "status": "warn",
      "severity": "medium",
      "title": "TLS-RPT Record Missing",
      "fix": "Add a text record to help report any encryption errors."
    }
  ]
}
Fix-plan result

A plan showing why this case needs a review, not just an automatic patch.

{
  "domain": "whitehouse.gov",
  "manual_review_needed": [
    {
      "issue_id": "mx.apex_missing_outbound_possible",
      "priority": "p2",
      "dns_name": "whitehouse.gov",
      "operation": "review",
      "proposed_value_template": "Confirm if this domain should receive mail before adding new records."
    }
  ],
  "template_remediations": [
    {
      "issue_id": "tls_rpt.missing",
      "priority": "p2",
      "dns_name": "_smtp._tls.whitehouse.gov",
      "operation": "add",
      "proposed_value_template": "v=TLSRPTv1; rua=mailto:"
    }
  ]
}

Output interpretation

The most important question isn't 'did a record exist?' It's 'what should our app do next?'

  • Use our 'mail flow' notes before blocking a domain for a missing record. This example shows the domain might only be sending mail.
  • Use the risk level and confidence score to make better decisions. This stops you from blocking good setups by mistake.
  • We provide top recommendations for the customer and notes for your team. This helps you give better support without being a DNS expert.
  • When a customer comes back after a fix, run the check again to confirm the new setup is correct.

Production Usage: SaaS Signup Pipeline

This is how a product team can turn the results into an automated signup process.

  1. A user enters their domain during the signup process.
  2. Your app runs a free audit and saves the score and findings.
  3. If the score is high, the domain is approved. If the evidence is mixed, it is flagged for review with our explanation.
  4. Your support team can then get a fix-plan to give the customer exact steps to follow.
  5. Once the customer updates their DNS, your app re-checks the domain to confirm it's now approved.
Example logic
if response["mail_flow_profile"] == "apex_outbound_or_subdomain_mail_possible":
    status = "review"
elif response["risk_level"] == "low":
    status = "approve"
else:
    status = "warn_or_block"

Tool comparison

Other tools might tell you if a record exists, but they lack the smarts needed for a smooth signup.

Basic Tools

Good for one record, but they don't help you decide what to do next for the customer.

Basic Checkers

Fine for a quick look, but they don't give your app a structured report it can act on.

Manual Review

It works, but it's slow and leads to different results for different customers.

Keep Exploring

Use the Workflow Library to browse more guides, comparisons, and integration examples to continue your evaluation.

Start with a smart onboarding check

Give your app a better way to approve, warn, and review customer domains.