# Versioning

All endpoints are currently at their initial version. No version header or parameter is needed today.

## Strategy

Compress.FAST uses **per-endpoint versioning** — when a breaking change ships to a specific endpoint, only that endpoint gets a new version. The rest of the API is unaffected.

Three equivalent ways to request a specific version:

| Method | Example |
|--------|---------|
| Route suffix | `POST /compress/v2` |
| Query string | `POST /compress?version=2` |
| Header | `X-Fast-Endpoint-Version: 2` |

If multiple are provided, the route suffix takes priority, then query string, then header.

## What counts as a breaking change

These changes increment an endpoint's version:

- Removing or renaming a response field
- Changing the type or nesting structure of a response object
- Removing a required request parameter or changing its meaning

## What does NOT count

These ship without a version bump and are never considered breaking:

- Adding new fields to response objects
- Adding new compressors or formats
- Adding new optional request parameters
- Adding entirely new endpoints
- Retiring a compressor (available compressors are discoverable via `GET /compress`)

## Default behavior

If no version is specified, you get the **latest version** of each endpoint. When a v2 ships for an endpoint, unversioned requests will continue to receive v1 behavior for a deprecation period before the default advances.

## Current status

No breaking changes have shipped. All endpoints are at their initial version — no version parameter is needed.
