GET STARTED · VERSIONING

API versioning — date-based version tags, stability levels and the guarantees we offer.

DomainScan API uses date-based versioning at the endpoint level. Each endpoint advertises its own version tag (e.g. v2026-05-15) and stability level (STABLE, BETA, DEPRECATED). The base path is `/api/v1/` and stays stable; only individual endpoints evolve under it. This page covers what each level guarantees, how breaking changes are communicated, and how to design integrations that survive long-term.

01 · LEVELS

Stability levels — what each one promises

  • STABLE Production-grade. Backward-compatible changes only — new fields can be added, existing fields will not be removed or repurposed. Safe to depend on for production code.
  • BETA Functional, but the response shape may change before STABLE. We try to minimize churn but make no contract. Pin your client to a specific version date if you depend on a BETA endpoint.
  • DEPRECATED Scheduled for removal. The endpoint still works for a documented sunset window (typically 6–12 months). Migration path published in the response headers and on this page.
  • EXPERIMENTAL Used internally for prototypes. Hidden from the public docs. If you stumble on one in network logs, do not depend on it — it can disappear at any time.
02 · VERSION TAGS

How the date tags work

Each endpoint carries a date tag like `v2026-05-15` representing the date of its most recent breaking-change revision. Two things to know:

  • Per-endpoint, not per-API /domain/lookup might be v2026-05-15 while /security/ssl-info is v2025-11-02. Endpoints version independently.
  • Default = latest STABLE Calls without an explicit version header always get the latest STABLE version of the endpoint. Most integrations want this.
  • Pinning available on Pro+ Pass `X-DS-Version: 2025-11-02` to lock a request to a specific revision. Useful when you've certified your client against a particular shape.
  • Sunset windows When a new revision lands, the previous one becomes DEPRECATED and is supported for 6–12 months before removal.
03 · BREAKING CHANGES

What counts as a breaking change

We follow conventional definitions. These are the breaking changes that bump an endpoint's version date:

  • Removing a field Once shipped on STABLE, fields can only be removed via DEPRECATED transition.
  • Renaming a field Treated as remove + add. Old name remains for the deprecation window.
  • Changing a field's type string → object, number → string — anything that breaks client parsers.
  • Tightening validation Adding new required params or stricter input formats. Loosening (more permissive) is non-breaking.
  • Changing error semantics Repurposing an existing error code (e.g. swapping 404 for 410). New codes can be added freely.
04 · NON-BREAKING

Changes you should not write defensive code against

These are explicitly allowed within a STABLE version and won't bump the date tag:

  • Adding new fields Forwards-compatible. Your client must ignore unknown fields — never break on them.
  • Adding new optional params Existing calls behave identically when the new param is omitted.
  • Adding new error codes Match on the code field, not on the full set of codes. New codes get added as new failure modes are documented.
  • Performance improvements Cache freshness, response time, edge POP changes. You should observe these as faster responses, not different ones.
  • New endpoints New URLs under `/api/v1/`. Don't affect existing endpoints.
05 · MIGRATION

Migrating off a DEPRECATED endpoint

When an endpoint is deprecated, all responses include a `Sunset:` header and an `X-DS-Successor:` header pointing at the replacement. Four-step migration playbook:

  • 1. Identify usage From the dashboard usage page, filter by endpoint to find all keys/services calling the deprecated route.
  • 2. Read the migration note Each deprecation is announced on /blog with a side-by-side mapping from old to new response shape.
  • 3. Branch + ship Implement the new endpoint behind a feature flag. Run both endpoints in parallel; compare results. Cut over when confident.
  • 4. Remove the old path Delete the deprecated client code well before the published sunset date. The dashboard shows last-used-on-deprecated to spot stragglers.