API REFERENCE · GET · STABLE

DNS Propagation API — /api/v1/domain/propagation

Fans out the same query to Google, Cloudflare, OpenDNS, and Quad9 and reports per-resolver agreement. Use to verify a DNS change has propagated globally.

01 · OVERVIEW

What DNS Propagation does

Fans out the same query to Google, Cloudflare, OpenDNS, and Quad9 and reports per-resolver agreement. Use to verify a DNS change has propagated globally.

  • Method GET
  • Path /api/v1/domain/propagation
  • Stability STABLE
  • Version v2026-05-15
  • Summary Check DNS resolution across multiple public resolvers in parallel.
02 · PARAMETERS

Request parameters

Pass these as query-string parameters (or, where indicated, in the request headers). Required params marked required.

  • domain (required) — string FQDN to test.
  • type (required) — string Single record type (A, AAAA, MX, TXT, CNAME, NS).
03 · RESPONSE

Response schema

All successful responses follow the standard `{ success: true, data: {...} }` envelope. Notable fields on the data object for this endpoint:

  • data.results[].provider — string Resolver name.
  • data.results[].resolver_ips — array<string> IPs queried for this resolver.
  • data.results[].propagated — boolean True if the resolver returned a non-empty answer.
  • data.results[].result — array<object> Same shape as `/domain/dns` answers.
  • data.results[].time — number Per-resolver RTT in ms.
04 · EXAMPLE

Example response

Truncated but representative example for a real lookup:

Sample response
{
  "success": true,
  "data": {
    "results": [
      {
        "provider": "Google",
        "resolver_ips": [
          "8.8.8.8",
          "8.8.4.4"
        ],
        "propagated": true,
        "type": "A",
        "result": [
          {
            "address": "142.251.211.46",
            "ttl": 6
          }
        ],
        "time": 13,
        "host": "google.com"
      },
      {
        "provider": "Cloudflare",
        "resolver_ips": [
          "1.1.1.1",
          "1.0.0.1"
        ],
        "propagated": true,
        "type": "A",
        "result": [
          {
            "address": "142.251.211.46",
            "ttl": 6
          }
        ],
        "time": 12,
        "host": "google.com"
      }
    ]
  }
}
05 · ERRORS

Error codes

Errors return HTTP status codes paired with stable machine-readable codes. Match on the code field rather than the human-readable message.

  • 400 INVALID_DNS_TYPE Multiple record types are not supported here — use `/domain/dns` instead.
06 · BEST PRACTICES

Implementation tips

Patterns we recommend when integrating this endpoint:

  • Use right after a DNS change to confirm propagation. Most changes settle in under 5 minutes; some take up to TTL.
07 · FAQ

Frequently asked questions

  • Why not include more resolvers? We picked 4 with global Anycast footprints. Adding more increases latency without adding signal.