Public API changelog
This page lists the major changes to the CaptainDNS public API. Non-breaking additions (new endpoints, new optional fields) are documented here without formal notice. Breaking changes are announced at least 30 days before deployment, on this very page and by email to active key holders.
Versioning policy
- Backward compatibility: adding optional fields and new endpoints does not break existing clients.
- Deprecations: a deprecated field or endpoint stays functional for at least 6 months after the announcement.
- Breaks: breaking changes are announced 30 days ahead and deployed under a new versioned URL (for example
/public/v2/*). The V1 URL stays up during the migration window. - Version identifier: the OpenAPI spec carries its own version (
info.version). The major number follows the versioned URL, the minor number follows backward-compatible additions.
Version 0.3.1 - 2026-05-19
Added
- POST
/public/v1/dmarc/validate: response now includes scoring and recommendations. New additive optional fields:state,score,score_band,verdict_headline,verdict_sub,score_factors,score_breakdown,recommendations,passed_checks,parsed_tags. The existing contract (DMARCAnalysis at root) is strictly preserved. Cost unchanged (1 credit), scope unchanged (mail:read).
Version 0.3.0 - 2026-04-14
Changed
- Webhook payload: now ships with
schema_version: "2". New fieldsevent_id,delivery_id,attempt. User-Agent is nowCaptainDNS-Webhook/2.0. - New headers on every POST:
X-CaptainDNS-Event-ID,X-CaptainDNS-Delivery-ID,X-CaptainDNS-Attempt(formatn/6),X-CaptainDNS-Event-Type. Existing headersX-CaptainDNS-SignatureandX-CaptainDNS-Timestampare unchanged. - Retry policy: if your endpoint returns
5xx,408,429, or a timeout/network error, 6 attempts are made with backoff10s, 1min, 10min, 1h, 6h, 24h. Other4xxresponses go straight tofailed_permanentwith no retry. - Stable
event_idacross retries and manual replays: recommended deduplication key on the receiver side.
Version 0.2.0 - 2026-04-09
Added
- 51 public endpoints under
/public/v1/*covering DNS, mail, web and text:- DNS:
resolve,resolve/propagation,dnssec/check,ip/whois,ip/nslookup,ip/netmask,rdap/lookup,domain/dns-check. - Mail:
spf/lookup,spf/validate,dkim/lookup,dkim/validate,dmarc/lookup,dmarc/validate,dmarc/generate,dmarcbis/check,dmarcbis/migrate,dmarc/report/analyze,bimi/lookup,bimi/validate,bimi/logo/lookup,mta-sts/lookup,tls-rpt/lookup,dane/lookup,blacklist/ip,smtp/check,mail/header-audit,mail/header-analyze,mail/domain-check,deliverability/score,certificates/csr/parse,certificats/bimi/parse,certificats/bimi/lookup. - Web:
url/check,page/crawl-check,phishing/check. - Text:
text/lower,text/upper,text/stats,text/slug,text/base64/encode,text/base64/decode,text/password/generate,text/urlencode,text/urldecode,text/json/format,text/json/to-yaml,text/yaml/format,text/yaml/to-json,text/hash,text/regex/test.
- DNS:
- API key management from the CaptainDNS dashboard: list, create, revoke, rotate and consult usage.
- OpenAPI schema
PublicAPIErrorwith 10 canonical codes for all public API errors. - Stripe-style
Idempotency-Keyheader, 24-hour replay,409 IDEMPOTENCY_CONFLICTon divergent body. - Headers
X-Credits-Limit/Remaining/Consumedreturned on every successful response. - Headers
RateLimit-Policy,X-RateLimit-Limit,X-RateLimit-Remaining(the latter is written only when a 429 is returned). - Header
X-Request-Idreturned on every response to ease support. - 5 billing plans: Free, Starter, Pro, Business, Enterprise, with per-tier quotas and overage billing.
- Opt-in overage billing with configurable monthly budget cap from the dashboard.
- Notification channels (webhooks, Slack) on the profile dashboard, with optional HMAC-SHA256 signature and 22 event types. See the dedicated page.
Not shipped in V1
- Public API webhooks signed by key (
webhook_endpointstable) to push account events to your systems.
Stay up to date
- CaptainDNS blog: major releases are relayed in dedicated posts on
captaindns.com/en/blog. - Email: active key holders receive an automatic notification for any breaking change.
- This page: any addition or fix is recorded here, latest first.
- OpenAPI specification: the
info.versionfield is bumped on each release. Watching its value lets you trigger SDK regenerations.
Next step: go back to the quickstart to start integrating, or explore the OpenAPI reference to see all schemas in detail.