Domain Verification
Prove domain ownership for publishing — canonical file location, checks performed, and reading failure evidence.
Publishing requires a verified domain. Verification is one file, served over HTTPS, checked from the Voidnet side. Console setup lives under Console → Domains.
The canonical address
Serve the verification file with HTTP 200 at:
https://YOUR-DOMAIN/.well-known/voidnet-site-verification-<token>.htmlThe root path (https://YOUR-DOMAIN/voidnet-site-verification-<token>.html) stays accepted as legacy, but the canonical address above is checked first. Serving both is harmless; serving only the canonical address is sufficient.
What gets checked
- HTTPS with a valid certificate, 15-second timeout, 64 KB body cap.
- Exact body match against the issued file content.
- Redirects are not followed — a 301/308 to another host or path fails the check. Serve the file directly at the checked address.
- No authentication may stand in front of the file. CDN challenge pages and login walls fail closed.
Reading a failure
A failed verification returns per-address evidence — the same table the Console renders inline. Each row names the URL tried, the HTTP status received, any redirect target, and the fetch error:
| Column | Meaning |
|---|---|
| URL tried | The exact address fetched, in check order |
| Status | HTTP status received (— means no response arrived) |
| Redirect | location header when one was sent (informational — redirects are never followed) |
| Error | Transport cause: DNS failure (ENOTFOUND), timeout, TLS rejection, oversize body |
Match these rows against your own server and CDN logs: a missing row on your side with ENOTFOUND on ours means DNS never resolved; a 301 row with a location means the file lives behind a redirect you must remove.
Common causes, in order
- DNS — the domain does not resolve publicly (
ENOTFOUND). Propagated locally but not globally is the classic variant. - Redirects — apex-to-www, HTTP-to-HTTPS-chain, or trailing-slash rewrites in front of the file. Flatten them for this path.
- CDN challenge or bot wall — Cloudflare-style interstitials return HTML, not the file. Exempt the verification path.
- Auth or IP allowlists — the fetch comes from Voidnet infrastructure, not your browser session. Anything your browser passes and a stranger fails will fail here too.
Ownership
One domain belongs to one account. A domain already verified on any account cannot be verified again elsewhere: re-initiating it on the same account reports it as already verified, and initiating it on a different account is rejected while the existing verification stands.
Expiry
A verification record expires 7 days after initiation. Verify inside that window; expired records need a fresh initiation, which issues a new token.