DNS Active

DNSTuner API

Comprehensive DNS health check API that analyzes domain DNS configuration for issues, warnings, and best practices. Get detailed reports on nameservers, MX records, SPF, DKIM, DMARC, and more.

https://dnstuner.com/api/v1
< 2s Response Time
1/10sec Rate Limit
None Auth Required
Free Pricing

Quick Start

Request
# Check DNS health for a domain
curl "https://dnstuner.com/api/v1/check/example.com"

# Force refresh (bypasses cache)
curl -X POST "https://dnstuner.com/api/v1/check/example.com/refresh"
Request
import requests

# Check DNS health
response = requests.get(
    "https://dnstuner.com/api/v1/check/example.com"
)

report = response.json()
print(f"Domain: {report['domain']}")
print(f"Status: {report['overall_status']}")

# Iterate through checks
for category, data in report['checks'].items():
    print(f"\n{category}: {data['status']}")
    for item in data['items']:
        print(f"  - {item['test']}: {item['status']}")
Request
// Check DNS health
const response = await fetch(
  "https://dnstuner.com/api/v1/check/example.com"
);

const report = await response.json();
console.log(`Domain: ${report.domain}`);
console.log(`Status: ${report.overall_status}`);

// Iterate through checks
Object.entries(report.checks).forEach(([category, data]) => {
  console.log(`\n${category}: ${data.status}`);
  data.items.forEach(item => {
    console.log(`  - ${item.test}: ${item.status}`);
  });
});

Response

200 OK application/json
{
  "domain": "example.com",
  "last_checked_at": "2025-01-16T12:00:00Z",
  "overall_status": "pass",
  "checks": {
    "nameservers": { "status": "pass", "items": [...] },
    "mail": { "status": "warning", "items": [...] },
    "security": { "status": "pass", "items": [...] }
  },
  "nameservers": [
    { "name": "ns1.example.com", "ipv4": ["1.2.3.4"], "reachable": true }
  ]
}

Available Endpoints

GET /check/{domain}

Check DNS health for a domain. Returns cached results or performs a new check.

Parameters

Parameter Type Required Description
domain string Yes Domain name to check (e.g., example.com)
POST /check/{domain}/refresh

Force a fresh DNS check, bypassing cache. Rate limited to once per 10 seconds per domain.

Parameters

Parameter Type Required Description
domain string Yes Domain name to refresh
GET /health

Check service health and cache status.

Error Codes

Code Description
400 Invalid domain format
429 Rate limited - includes retry_after field
500 DNS check failed