# Versions

> The API is at v1. What may change without notice (additions), what will never change within v1, and the Rustine-Version header.

The major version is in the address: `/v1`. Every response also carries the `Rustine-Version` header, the date of the contract that answered (`2026-10-13` today). Log it: if a behaviour surprises you, it tells which version of the contract produced it.

## What Rustine promises within v1

Nothing that works today breaks:

- no field removed or renamed, no type changed;
- no new required parameter;
- no route removed;
- the format of errors and lists stays the same, and an error `code` keeps its meaning.

## What may happen without notice

Additions, which your code must be able to ignore. The date in `Rustine-Version` then moves forward:

- new routes;
- new fields in answers;
- new optional parameters;
- new values in a closed list (`status`, `severity`, `family`…): plan an "other" case;
- new error codes: handle an unknown code by its `type`.

## A v2, some day

A change that would break your code will come as a new version, `/v2`, announced in the [Changelog](https://docs.rustine.io/en/changelog.md) and by email to key holders. v1 will keep answering for **at least 12 months** after that announcement, while you migrate; its end date will be given in the announcement.

## Examples

### curl

```bash
curl -sI https://api.rustine.io/v1/account \
  -H "Authorization: Bearer $RUSTINE_API_KEY" | grep -i rustine-version
```

### Response: 200 OK

```http
Rustine-Version: 2026-10-13
```
