What changed. GET /v1/projects is now GET /projects, and the same for every other endpoint: issues, comments, search, users, cycles, milestones, dependencies and the GitHub routes. The old paths return 404.

Why. The API version has been negotiated with the x-ferrtrack-api-version header since the contract-version work, so the /v1 segment named a version nothing read. Two ways to say the same thing meant a client could pin one and get the other, and the path won every time.

What you have to do. Point your base URL at the host without the prefix and keep sending the version header:

curl -H "x-ferrtrack-api-version: 2026-08-04" \
     -H "authorization: Bearer $FFT_TOKEN" \
     https://api.ferrtrack.com/projects

The header is unchanged, so a client already sending it needs nothing beyond the base URL.

Webhooks are the exception. /v1/webhooks/users, /v1/webhooks/github, /v1/webhooks/github-app and /v1/webhooks/sonarqube stay mounted alongside the new paths. Those URLs live in systems we do not deploy: your GitHub organization or repository hook, our GitHub App, FerrLabs central, and the webhook each customer registered inside their own SonarQube. Nothing you configured breaks on this release. The new paths are canonical, the SonarQube settings page shows them for new connections, and the old ones go away once the senders have moved.