Referência de Programador

DNS Segurança Analysis Documentação da API

DNS Segurança Analysis Documentação da API: Comprehensive email and DNS segurança analysis including SPF, DKIM, DMARC, DNSSEC, and CAA records. This endpoint performs deep analysis of all email authentication mechanisms and provides a segurança score with actionable recommendations.

DNS Segurança Analysis

Comprehensive email and DNS segurança analysis including SPF, DKIM, DMARC, DNSSEC, and CAA records. This endpoint performs deep analysis of all email authentication mechanisms and provides a segurança score with actionable recommendations.

GET /v1/dns/security

Parâmetros de Consulta

Parâmetro Tipo obrigatório
domain string obrigatório

Campos de Resposta

Campo Tipo
domain string
security_score integer
security_grade string
spf object
spf.exists boolean
spf.record string
spf.valid boolean
spf.policy string
spf.includes[] string[]
spf.dns_lookup_count integer
spf.dns_lookup_limit_exceeded boolean
spf.include_tree[] object[]
spf.include_tree[] object
spf.include_tree[].domain string
spf.include_tree[].lookups integer
spf.lookup_walk_count integer
spf.macros_present boolean
spf.macro_references[] string[]
spf.walk[] object[]
spf.walk[] object
spf.walk[].domain string
spf.walk[].depth integer
spf.walk[].record string
spf.walk[].mechanisms[] string[]
spf.walk[].includes[] string[]
spf.walk[].redirect string | null
spf.walk[].direct_lookup_count integer
spf.walk[].total_lookup_count integer
spf.walk[].macros_present boolean
spf.walk[].macro_references[] string[]
spf.walk[].multiple_records integer
spf.walk_errors[] string[]
spf.issues[] string[]
dkim object
dkim.exists boolean
dkim.selectors_checked[] string[]
dkim.selectors_found[] string[]
dkim.valid boolean
dmarc object
dmarc.exists boolean
dmarc.record string
dmarc.valid boolean
dmarc.policy string
dmarc.subdomain_policy string
dmarc.percentage integer
dmarc.rua[] string[]
dmarc.ruf[] string[]
dmarc.issues[] string[]
bimi object
bimi.exists boolean
bimi.record string
bimi.logo_url string
bimi.authority_url string
bimi.valid boolean
bimi.logo_fetch_ok boolean | null
bimi.logo_http_status integer | null
bimi.logo_content_type string | null
bimi.logo_bytes integer | null
bimi.logo_svg_detected boolean | null
bimi.vmc_present boolean
bimi.vmc_fetched boolean | null
bimi.vmc_http_status integer | null
bimi.vmc_content_type string | null
bimi.vmc_certificate_valid boolean | null
bimi.vmc_subject string | null
bimi.vmc_issuer string | null
bimi.vmc_not_before string | null
bimi.vmc_not_after string | null
bimi.vmc_days_to_expiry integer | null
bimi.vmc_fingerprint_sha256 string | null
bimi.vmc_san_domains[] string[]
bimi.errors[] string[]
dnssec object
dnssec.enabled boolean
dnssec.valid boolean
dnssec.algorithm string
dnssec.key_tag integer
dnssec.validation_status string
dnssec.validated_by_proxy boolean
dnssec.validation_reason string
dnssec.ds_records[] string[]
dnssec.dnskey_records[] string[]
dnssec.rrsig_present boolean
dnssec.resolver string
caa object
caa.exists boolean
caa.records[] object[]
caa.records[] object
caa.records[].flags integer
caa.records[].tag string
caa.records[].value string
caa.issuers[] string[]
caa.issue_wild[] string[]
caa.iodef string
issuance_readiness object
issuance_readiness.caa object
issuance_readiness.caa.exists boolean
issuance_readiness.caa.records[] object[]
issuance_readiness.caa.records[] object
issuance_readiness.caa.records[].flags integer
issuance_readiness.caa.records[].tag string
issuance_readiness.caa.records[].value string
issuance_readiness.caa.issue_issuers[] string[]
issuance_readiness.caa.issuewild_issuers[] string[]
issuance_readiness.caa.iodef string | null
issuance_readiness.caa.letsencrypt_allowed boolean
issuance_readiness.caa.google_trust_services_allowed boolean
issuance_readiness.http01 object
issuance_readiness.http01.challenge_path string
issuance_readiness.http01.reachable boolean
issuance_readiness.http01.ready boolean
issuance_readiness.http01.status_code integer | null
issuance_readiness.http01.final_url string | null
issuance_readiness.http01.redirects integer | null
issuance_readiness.http01.error string | null
issuance_readiness.checked_at string
authoritative_consistency object
authoritative_consistency.record_type string
authoritative_consistency.all_authoritative boolean
authoritative_consistency.answer_sets_match boolean
authoritative_consistency.inconsistent_nameservers[] string[]
authoritative_consistency.consistent_serial boolean
authoritative_consistency.serials[] object[]
authoritative_consistency.serials[] object
authoritative_consistency.serials[].host string
authoritative_consistency.serials[].udp_soa_serial string | null
authoritative_consistency.serials[].tcp_soa_serial string | null
authoritative_consistency.reference_answers[] string[]
delegation_health object
delegation_health.nameservers[] object[]
delegation_health.nameservers[] object
delegation_health.nameservers[].host string
delegation_health.nameservers[].addresses[] string[]
delegation_health.nameservers[].in_bailiwick boolean
delegation_health.nameservers[].glue_required boolean
delegation_health.nameservers[].udp object
delegation_health.nameservers[].udp.authoritative boolean
delegation_health.nameservers[].udp.status string
delegation_health.nameservers[].udp.query_ms integer | null
delegation_health.nameservers[].udp.answer_count integer
delegation_health.nameservers[].udp.answers[] string[]
delegation_health.nameservers[].udp.soa_serial string | null
delegation_health.nameservers[].udp.truncated boolean
delegation_health.nameservers[].udp.error string | null
delegation_health.nameservers[].tcp object
delegation_health.nameservers[].tcp.authoritative boolean
delegation_health.nameservers[].tcp.status string
delegation_health.nameservers[].tcp.query_ms integer | null
delegation_health.nameservers[].tcp.answer_count integer
delegation_health.nameservers[].tcp.answers[] string[]
delegation_health.nameservers[].tcp.soa_serial string | null
delegation_health.nameservers[].tcp.truncated boolean
delegation_health.nameservers[].tcp.error string | null
delegation_health.nameservers[].lame boolean
delegation_health.nameservers[].issues[] string[]
delegation_health.in_bailiwick_nameservers[] string[]
delegation_health.glue_required_count integer
delegation_health.all_in_bailiwick_resolve boolean
delegation_health.missing_addresses[] string[]
delegation_health.lame_nameservers[] string[]
dns_transport object
dns_transport.udp_working boolean
dns_transport.tcp_working boolean
dns_transport.tcp_supported_nameservers[] string[]
dns_transport.tcp_failed_nameservers[] string[]
dns_transport.truncation_tested boolean
dns_transport.truncation_nameserver string
dns_transport.truncation_record_type string
dns_transport.truncation_observed boolean | null
dns_transport.tcp_fallback_ready boolean | null
mta_sts object
mta_sts.exists boolean
mta_sts.record string
mta_sts.valid boolean
mta_sts.policy_id string
mta_sts.policy_fetch_ok boolean
mta_sts.policy_http_status integer | null
mta_sts.mode string
mta_sts.max_age integer
mta_sts.mx_hosts[] string[]
mta_sts.mx_records[] string[]
mta_sts.policy_matches_mx boolean | null
mta_sts.uncovered_mx[] string[]
mta_sts.errors[] string[]
tls_rpt object
tls_rpt.exists boolean
tls_rpt.record string
tls_rpt.valid boolean
tls_rpt.rua[] string[]
tls_rpt.errors[] string[]
resolver_latency object
resolver_latency.record_type string
resolver_latency.resolvers[] object[]
resolver_latency.resolvers[] object
resolver_latency.resolvers[].resolver string
resolver_latency.resolvers[].label string
resolver_latency.resolvers[].query_ms integer | null
resolver_latency.resolvers[].status string
resolver_latency.resolvers[].answer_count integer
resolver_latency.resolvers[].answers[] string[]
resolver_latency.resolvers[].server string | null
resolver_latency.resolvers[].error string | null
resolver_latency.min_ms integer | null
resolver_latency.max_ms integer | null
resolver_latency.avg_ms number | null
zone_transfer object
zone_transfer.exposed boolean
zone_transfer.nameservers[] object[]
zone_transfer.nameservers[] object
zone_transfer.nameservers[].host string
zone_transfer.nameservers[].exposed boolean
zone_transfer.nameservers[].query_ms integer
zone_transfer.nameservers[].records_returned integer
zone_transfer.nameservers[].soa_seen boolean
zone_transfer.nameservers[].reason string | null
zone_transfer.nameservers[].sample_records[] string[]
blacklist object
blacklist.domain string
blacklist.listed boolean
blacklist.threat_level string
blacklist.check_type string
blacklist.checked_at string
recommendations[] string[]
checked_at string
check_duration_ms integer

Pedido de Exemplo

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/security?domain=example.com"

Resposta de Exemplo

{
  "domain": "google.com",
  "security_score": 97,
  "security_grade": "A+",
  "spf": {
    "exists": true,
    "record": "v=spf1 include:_spf.google.com ~all",
    "valid": true,
    "policy": "softfail",
    "includes": [
      "_spf.google.com"
    ],
    "dns_lookup_count": 1,
    "dns_lookup_limit_exceeded": false,
    "include_tree": [
      {
        "domain": "_spf.google.com",
        "lookups": 1
      }
    ],
    "lookup_walk_count": 1,
    "macros_present": false,
    "macro_references": [],
    "walk": [
      {
        "domain": "google.com",
        "depth": 0,
        "record": "v=spf1 include:_spf.google.com ~all",
        "mechanisms": [
          "include:_spf.google.com",
          "~all"
        ],
        "includes": [
          "_spf.google.com"
        ],
        "redirect": null,
        "direct_lookup_count": 1,
        "total_lookup_count": 1,
        "macros_present": false,
        "macro_references": [],
        "multiple_records": 1
      }
    ],
    "walk_errors": [],
    "issues": []
  },
  "dkim": {
    "exists": true,
    "selectors_checked": [
      "google",
      "selector1",
      "selector2"
    ],
    "selectors_found": [
      "google"
    ],
    "valid": true
  },
  "dmarc": {
    "exists": true,
    "record": "v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com",
    "valid": true,
    "policy": "reject",
    "subdomain_policy": "reject",
    "percentage": 100,
    "rua": [
      "mailto:mailauth-reports@google.com"
    ],
    "ruf": [],
    "issues": []
  },
  "bimi": {
    "exists": true,
    "record": "v=BIMI1; l=https://example.com/logo.svg; a=https://example.com/vmc.pem",
    "logo_url": "https://example.com/logo.svg",
    "authority_url": "https://example.com/vmc.pem",
    "valid": true,
    "logo_fetch_ok": true,
    "logo_http_status": 200,
    "logo_content_type": "image/svg+xml",
    "logo_bytes": 2048,
    "logo_svg_detected": true,
    "vmc_present": true,
    "vmc_fetched": true,
    "vmc_http_status": 200,
    "vmc_content_type": "application/x-pem-file",
    "vmc_certificate_valid": true,
    "vmc_subject": "/CN=Example Inc VMC",
    "vmc_issuer": "/CN=Example Issuer",
    "vmc_not_before": "2026-01-01T00:00:00Z",
    "vmc_not_after": "2027-01-01T00:00:00Z",
    "vmc_days_to_expiry": 258,
    "vmc_fingerprint_sha256": "AA:BB:CC:DD",
    "vmc_san_domains": [
      "google.com"
    ],
    "errors": []
  },
  "dnssec": {
    "enabled": true,
    "valid": true,
    "algorithm": "ECDSAP256SHA256",
    "key_tag": 12345,
    "validation_status": "secure",
    "validated_by_proxy": true,
    "validation_reason": "chain validated via delv",
    "ds_records": [
      "12345 13 2 1a2b3c4d5e6f"
    ],
    "dnskey_records": [
      "256 3 13 AbCdEfGhIjKlMnOp"
    ],
    "rrsig_present": true,
    "resolver": "127.0.0.1"
  },
  "caa": {
    "exists": true,
    "records": [
      {
        "flags": 0,
        "tag": "issue",
        "value": "pki.goog"
      }
    ],
    "issuers": [
      "pki.goog"
    ],
    "issue_wild": [],
    "iodef": "mailto:security@google.com"
  },
  "issuance_readiness": {
    "caa": {
      "exists": true,
      "records": [
        {
          "flags": 0,
          "tag": "issue",
          "value": "pki.goog"
        },
        {
          "flags": 0,
          "tag": "iodef",
          "value": "mailto:security@google.com"
        }
      ],
      "issue_issuers": [
        "pki.goog"
      ],
      "issuewild_issuers": [],
      "iodef": "mailto:security@google.com",
      "letsencrypt_allowed": false,
      "google_trust_services_allowed": true
    },
    "http01": {
      "challenge_path": "/.well-known/acme-challenge/domscan-probe-1713474000",
      "reachable": true,
      "ready": true,
      "status_code": 404,
      "final_url": "http://google.com/.well-known/acme-challenge/domscan-probe-1713474000",
      "redirects": 0,
      "error": null
    },
    "checked_at": "2026-04-18T21:00:00Z"
  },
  "authoritative_consistency": {
    "record_type": "SOA",
    "all_authoritative": true,
    "answer_sets_match": true,
    "inconsistent_nameservers": [],
    "consistent_serial": true,
    "serials": [
      {
        "host": "ns1.google.com",
        "udp_soa_serial": "2026041801",
        "tcp_soa_serial": "2026041801"
      }
    ],
    "reference_answers": [
      "google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 2026041801 900 900 1800 60"
    ]
  },
  "delegation_health": {
    "nameservers": [
      {
        "host": "ns1.google.com",
        "addresses": [
          "216.239.32.10"
        ],
        "in_bailiwick": false,
        "glue_required": false,
        "udp": {
          "authoritative": true,
          "status": "NOERROR",
          "query_ms": 14,
          "answer_count": 1,
          "answers": [
            "google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 2026041801 900 900 1800 60"
          ],
          "soa_serial": "2026041801",
          "truncated": false,
          "error": null
        },
        "tcp": {
          "authoritative": true,
          "status": "NOERROR",
          "query_ms": 18,
          "answer_count": 1,
          "answers": [
            "google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 2026041801 900 900 1800 60"
          ],
          "soa_serial": "2026041801",
          "truncated": false,
          "error": null
        },
        "lame": false,
        "issues": []
      }
    ],
    "in_bailiwick_nameservers": [],
    "glue_required_count": 0,
    "all_in_bailiwick_resolve": true,
    "missing_addresses": [],
    "lame_nameservers": []
  },
  "dns_transport": {
    "udp_working": true,
    "tcp_working": true,
    "tcp_supported_nameservers": [
      "ns1.google.com"
    ],
    "tcp_failed_nameservers": [],
    "truncation_tested": true,
    "truncation_nameserver": "ns1.google.com",
    "truncation_record_type": "DNSKEY",
    "truncation_observed": false,
    "tcp_fallback_ready": null
  },
  "mta_sts": {
    "exists": true,
    "record": "v=STSv1; id=2024010101Z",
    "valid": true,
    "policy_id": "2024010101Z",
    "policy_fetch_ok": true,
    "policy_http_status": 200,
    "mode": "enforce",
    "max_age": 86400,
    "mx_hosts": [
      "*.google.com"
    ],
    "mx_records": [
      "aspmx.l.google.com",
      "alt1.aspmx.l.google.com"
    ],
    "policy_matches_mx": true,
    "uncovered_mx": [],
    "errors": []
  },
  "tls_rpt": {
    "exists": true,
    "record": "v=TLSRPTv1; rua=mailto:sts-reports@google.com",
    "valid": true,
    "rua": [
      "mailto:sts-reports@google.com"
    ],
    "errors": []
  },
  "resolver_latency": {
    "record_type": "MX",
    "resolvers": [
      {
        "resolver": "1.1.1.1",
        "label": "Cloudflare",
        "query_ms": 22,
        "status": "NOERROR",
        "answer_count": 5,
        "answers": [
          "aspmx.l.google.com"
        ],
        "server": "1.1.1.1#53",
        "error": null
      },
      {
        "resolver": "8.8.8.8",
        "label": "Google Public DNS",
        "query_ms": 3,
        "status": "NOERROR",
        "answer_count": 5,
        "answers": [
          "aspmx.l.google.com"
        ],
        "server": "8.8.8.8#53",
        "error": null
      }
    ],
    "min_ms": 3,
    "max_ms": 22,
    "avg_ms": 12.5
  },
  "zone_transfer": {
    "exposed": false,
    "nameservers": [
      {
        "host": "ns1.google.com",
        "exposed": false,
        "query_ms": 18,
        "records_returned": 0,
        "soa_seen": false,
        "reason": "transfer failed",
        "sample_records": []
      }
    ]
  },
  "blacklist": {
    "domain": "google.com",
    "listed": false,
    "threat_level": "none",
    "check_type": "domain",
    "checked_at": "2026-04-18T21:00:00Z"
  },
  "recommendations": [],
  "checked_at": "2026-04-18T21:00:00Z",
  "check_duration_ms": 312
}

Usado por pessoas em empresas incríveis

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel