d/domain
intelligence

DNS API · X402 · TESTNET PROTOTYPE

DNS,
ready for
your code.

DNS records and email policy presence for a domain, in one JSON response. One x402 payment per analysis.

0.01 test USDC per analysis · Base Sepolia only

ONE REQUEST. ONE DIAGNOSTIC.01 / 03
d/
AMXTXTAAAANSCAA
example.com→ application/json
THE X402 FLOW
402Payment required
200Diagnostic returned

01 — WHAT IT CHECKS

Useful signals.
One simple format.

Add a first diagnostic to a script, an internal tool or an agent. Explicit findings, without an opaque score.

01

DNS records

Queries public resolvers without connecting to the domain’s server.

AAAAAMXNSCAATXT
02

SPF and DMARC presence

Policies present, absent or duplicated. Resolution errors are kept separate from missing records.

Findings, without a score.
03

A JSON response

Normalized domain, timestamp, DNS results, available TTLs, cache status and diagnostic limitations.

GET /v1/domain/check

02 — THE RESPONSE

Readable for you.
Ready for
your code.

A structure that separates DNS results, email findings and diagnostic limitations.

Illustrative excerpt, fictional data.
This page does not run analyses or initiate payments.

Explore the full schema
response.json · excerpt
{
  "domain": "example.com",
  "status": "complete",
  "cached": false,
  "email": {
    "spf": {
      "status": "present",
      "records": ["v=spf1 -all"]
    },
    "dmarc": {
      "status": "absent",
      "records": []
    }
  }
}
Example structure · shortened response

EXPLICIT LIMITATIONS

A DNS diagnostic.
A defined scope.

Detects SPF and DMARC presence; does not fully validate these policies or assess email deliverability.

DMARC is checked at the exact domain, without organizational-domain fallback.

No TLS, reputation or overall domain security assessment. DNS errors are reported explicitly.

03 — TRY IT YOURSELF

From first request
to first payment.

0.01 USDC

test tokens / analysis
Base Sepolia · chain ID 84532

01

Inspect the challenge

Without payment, the analysis endpoint returns HTTP 402 with payment terms in the header PAYMENT-REQUIRED.

curl -i \
  'https://api.x4-02.fr/v1/domain/check?domain=example.com'

Check service health only: /health ↗ (free).

02

Set up the Python client

Download the client and install the x402 SDK. Its initial check needs no key and makes no payment.

python3 -m venv .venv
source .venv/bin/activate
pip install 'x402[evm]==2.26.0' web3
python client.py
Download client.py GitHub quickstart
03

Pay on testnet

Fund a dedicated wallet with test USDC on Base Sepolia using the Circle faucet ↗. Then run:

python client.py --pay

The client prompts for the private key without displaying or saving it. Use a dedicated test wallet only.

Signing with explicit checks.

Before signing, the client checks the network, USDC contract, recipient and amount. It verifies on-chain settlement and replay rejection. Payment errors are never retried automatically.

THE DETAILS THAT MATTER

Before you
connect your code.

Is this ready for real-money payments?

No. Only Base Sepolia (eip155:84532) and test USDC are accepted. The complete payment flow and replay rejection have been tested; this is not an uptime guarantee or a security audit.

Do I need an API key?

No API key is needed. x402 protects the analysis endpoint. A payment authorization is required for a diagnostic; /health remains free.

What are the prototype limits?

Before payment: 60 requests per minute per IP and up to 16 active requests. After x402 validation: 30 requests per minute per IP and up to eight concurrent analyses. Limits are in memory in one process and reset on restart. Clients sharing a public IP share a quota.

Can responses come from cache?

Yes. Complete results may be cached for up to 60 seconds, without exceeding the lowest positive DNS TTL. The cached field indicates this. Cached responses still require payment per request.

Does this site collect my private key?

No. This page does not connect a wallet or ask for secrets. The Python client runs on your machine and only prompts for a key with --pay. Never share your key with a website or in a message.