Versions: what is running
The release
Every build carries a release number from the VERSION file (such as 0.5.0), the git commit it was built from (with -dirty when it had uncommitted changes) and when it was built. See it with:
corpsuited version # corpsuited 0.5.0 (99fe9ecae878, built 2026-10-08T02:01:22Z)
curl -s https://mail.example.com/api/version
The server also logs it at start-up, with the database schema. The admin panel shows it in the top bar and webmail at the bottom of Settings.
Releases follow semantic versioning: the patch number for fixes, the minor number for new features, and the major number for changes that need action when upgrading (they are called out in the changelog). Until 1.0 the minor number can also carry such changes.
GET /api/version
{
"version": "3f9a1c2b4d5e",
"release": "0.5.0",
"commit": "99fe9ecae878",
"built": "2026-10-08T02:01:22Z",
"schema": "0025_signin_host",
"interfaces": { "adminApi": "1.5.0", "teamApi": "1.5.0", "webmailApi": "1.6.0", "signupApi": "1.1.0", "jmap": "RFC 8620, RFC 8621" }
}
versionis the build of the web pages; open pages compare it to offer a reload after an upgrade.schemais the newest database migration applied. Every server sharing a database should report the same one.interfacesare the versions of each API, matchinginfo.versioninapi/openapi.yaml,api/webmail.yamlandapi/signup.yaml. Each goes up a minor version when something is added and a major version when something changes in a way clients must follow; for the admin API that means a new/v2alongside/v1.teamApiis what the domain admin panel at/manageand team API keys use: the admin API's routes markedx-team, so it always equalsadminApi.
The API-Version header
Every answer from an API also says which interface and version gave it, in an API-Version header, errors included, so any call to a live server shows what it runs:
curl -sI https://mail.example.com/v1/tenants | grep -i api-version # API-Version: admin 1.5.0
| Paths | Header |
|---|---|
/v1/... | admin and the admin API version |
/api/mail/... | webmail and the webmail API version |
/api/signup..., /api/join/... | signup and the signup API version |
/jmap..., /.well-known/jmap | jmap RFC 8620, RFC 8621 |
Web pages and assets do not carry it; /api/version has everything at once.
The mail protocols (SMTP, IMAP, ManageSieve) do not announce the release, so strangers cannot tell which version a server runs.