> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/docs/versioning

# Versioning and deprecations

The API version is part of the path, for example /v1/status . Within a version, existing requests keep working.

The API version is part of the path, for example `/v1/status`. Within a version, existing requests keep working. This page explains what can change, how much notice you get and how to find requests that need updating.

### Changes without notice

New endpoints, optional parameters, response fields, values in existing lists of options, response headers and error codes can be added at any time. Write clients that ignore fields they do not know and handle new values gracefully.

### Breaking changes

Removing or renaming an endpoint, parameter or field, or changing what it means, happens only after at least 12 months of notice. During that time the old form keeps working, responses to requests that use it carry `Deprecation` and `Sunset` headers, and the change is listed in the changelog.

### Response key naming

Most response keys are snake_case. To receive every key in snake_case, add `naming=snake` or send the `DomScan-Naming: snake` header. This is opt-in, so the default responses do not change. See [snake_case keys](https://domscan.net/docs/response-format#naming).

### Deprecated aliases

These older parameters still work. Each one keeps working until at least its sunset date. Move to the replacement before then.

| Parameter | Endpoint | Use instead | Deprecated | Sunset |
| --- | --- | --- | --- | --- |
| `prefer_cache` | `GET /v1/status` | `max_age=2592000` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/status` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `cache_skip` | `GET /v1/status` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `cache-skip` | `GET /v1/status` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `options.prefer_cache` (JSON body) | `POST /v1/status/bulk` | `max_age=2592000` | 2026-10-10 | 2027-10-10 |
| `prefer_cache` (JSON body) | `POST /v1/status/bulk` | `max_age=2592000` | 2026-10-10 | 2027-10-10 |
| `options.skip_cache` (JSON body) | `POST /v1/status/bulk` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `options.cache_skip` (JSON body) | `POST /v1/status/bulk` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `options.cache-skip` (JSON body) | `POST /v1/status/bulk` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `prefer_cache` | `GET /v1/subdomains` | `max_age=2592000` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/tech` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/categorize` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/identity-assets` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/identity-resolution` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/url-intelligence` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/agent-readiness` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `skip_cache` | `GET /v1/robots` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `refresh` | `GET /v1/ssl/deep-scan` | `max_age=0` | 2026-10-10 | 2027-10-10 |
| `cursor` (numeric value) | `GET /v1/certificates` | `cursor=<next_cursor>` | 2026-10-10 | 2027-10-10 |
| `offset` | `GET /v1/email/blacklist` | `cursor=<next_cursor>` | 2026-10-10 | 2027-10-10 |

### Detecting deprecations

A request that uses a deprecated alias receives these response headers. The response body stays the same.

- `Deprecation`: the date the alias was deprecated, as `@` followed by Unix seconds (RFC 9745).

- `Sunset`: the earliest date the alias may stop working (RFC 8594).

- `Link`: a link to this page with `rel="deprecation"`.

```bash
curl -i -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/status?name=example&tlds=com&skip_cache=true"

Deprecation: @1791590400
Sunset: Sun, 10 Oct 2027 00:00:00 GMT
Link: <https://domscan.net/docs/versioning#deprecated-aliases>; rel="deprecation"; type="text/html"
```

Browsers can read all three headers. Log them or alert on `Deprecation` to find code that needs updating before the sunset date.

Every deprecation is also announced in the [API changelog](https://domscan.net/changelog).
