Developer Documentation

Build with IntoDNS.AI

Integrate DNS security and email deliverability checks into your applications, CI/CD pipelines, and monitoring systems.

Quick Start

Your First API Call

curl "https://intodns.ai/api/scan/quick?domain=example.com"

No authentication required for basic usage. Rate limited to 10 requests/minute.

Common Use Cases

CI/CD Integration

Validate DNS configuration before deploying to production

GitHub Actions
name: DNS Validation
on: [push]
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - name: Check DNS Security
        run: |
          SCORE=$(curl -s \
            "https://intodns.ai/api/scan/quick?domain=$DOMAIN" \
            | jq -r '.score')
          if [ "$SCORE" -lt 80 ]; then
            echo "DNS score too low: $SCORE"
            exit 1
          fi
        env:
          DOMAIN: ${{ secrets.DOMAIN }}
GitLab CI
dns-check:
  script:
    - apk add --no-cache curl jq
    - RESULT=$(curl -s "https://intodns.ai/api/scan/quick?domain=$DOMAIN")
    - SCORE=$(echo $RESULT | jq -r '.score')
    - if [ "$SCORE" -lt 80 ]; then exit 1; fi
  only:
    - main

Blacklist Monitoring

Monitor your domain and mail servers for blacklist status

Node.js Cron
const cron = require('node-cron');
const axios = require('axios');

// Check every 6 hours
cron.schedule('0 */6 * * *', async () => {
  const { data } = await axios.get(
    'https://intodns.ai/api/scan/quick?domain=example.com'
  );

  if (data.critical_issues > 0) {
    await sendAlert({
      severity: 'critical',
      message: `Domain has ${data.critical_issues} issues`,
      details: data.categories
    });
  }
});
Python Script
import requests
import smtplib

def check_domain(domain):
    r = requests.get(f'https://intodns.ai/api/scan/quick?domain={domain}')
    data = r.json()

    if data['critical_issues'] > 0:
        send_alert(f"Critical issues found for {domain}")

    return data['score']

if __name__ == '__main__':
    score = check_domain('example.com')
    print(f'Domain score: {score}')

Domain Onboarding

Validate new customer domains before activation

TypeScript / React
async function validateDomain(domain: string) {
  try {
    const response = await fetch(
      `https://intodns.ai/api/scan/quick?domain=${domain}`
    );
    const data = await response.json();

    // Check minimum requirements
    const issues = [];

    if (data.score < 70) {
      issues.push('Security score below minimum');
    }

    if (data.critical_issues > 0) {
      issues.push('Critical security issues present');
    }

    if (!data.categories.email || data.categories.email.score < 60) {
      issues.push('Email security insufficient');
    }

    return {
      valid: issues.length === 0,
      issues,
      score: data.score
    };
  } catch (error) {
    return { valid: false, issues: ['Domain unreachable'] };
  }
}

Bulk Domain Validation

Process multiple domains efficiently with rate limiting

Python with Rate Limiting
import requests
import time
from typing import List, Dict

def validate_domains(domains: List[str]) -> List[Dict]:
    results = []

    for domain in domains:
        try:
            response = requests.get(
                f'https://intodns.ai/api/scan/quick?domain={domain}',
                timeout=30
            )
            data = response.json()

            results.append({
                'domain': domain,
                'score': data.get('score', 0),
                'status': 'success',
                'critical_issues': data.get('critical_issues', 0)
            })

            # Respect rate limits: 10 req/min for free tier
            time.sleep(6)

        except Exception as e:
            results.append({
                'domain': domain,
                'status': 'error',
                'error': str(e)
            })

    return results

# Example usage
domains = ['example.com', 'test.com', 'demo.org']
results = validate_domains(domains)

for result in results:
    if result['status'] == 'success':
        print(f"{result['domain']}: {result['score']}/100")
    else:
        print(f"{result['domain']}: ERROR - {result['error']}")

Core API Endpoints

Quick Scan

GET /api/scan/quick?domain=example.com
Fast

Instant security overview covering DNS, email, and basic security checks

Returns:
{ score, categories: { dns, email, security }, critical_issues, warnings }

Email Security Check

GET /api/email/check?domain=example.com
Detailed

Comprehensive SPF, DKIM, DMARC, and MX record analysis

Returns:
{ spf: {...}, dkim: {...}, dmarc: {...}, mx: {...}, score }

DNS Lookup

GET /api/dns/lookup?domain=example.com&type=A
Flexible

Query any DNS record type (A, AAAA, MX, TXT, NS, SOA, CAA, CNAME)

Returns:
{ records: { [type]: [values] }, cached: boolean }

DNSSEC Validation

GET /api/dns/dnssec?domain=example.com
Security

Validate DNSSEC chain of trust and signature integrity

Returns:
{ secure: boolean, chain_valid: boolean, algorithms, ds_records }

Rate Limits

Free Tier

No Auth Required
10 req/min
100 requests per hour

Authenticated

Contact Us
60 req/min
1000 requests per hour

Need Help?

Questions about integration? Need higher rate limits? We're here to help.

  • Custom rate limits available
  • Priority support for integrations
  • White-label options
Contact Cobytes