Skip to content

TeamCity

Reads GET /app/rest/server — the entry point TeamCity’s own REST API reference points at first — for the version.

targets:
- id: teamcity-main
product: teamcity
address: https://teamcity.example.com
credentials: teamcity-pat

Authentication — required, and easy to get backwards

Section titled “Authentication — required, and easy to get backwards”

There’s no anonymous access by default — a fresh instance answers 401 with both Basic and Bearer challenges (guest login is off by default). TeamCity has two distinct kinds of token, confirmed live, that only work as opposite credential kinds:

  • The one-time superuser bootstrap token a fresh server logs on first start only works as Basic — empty username, the token as password. Sent as a bare Authorization: Bearer, it’s rejected.
  • A normal user’s personal access token (Profile → Access Tokens — the way real long-lived automation actually authenticates) is the opposite: confirmed against seven real production instances, it works as Bearer and is flatly rejected as Basic (“Incorrect username or password”, even with an empty username).
credentials:
# bootstrap token — Basic, empty username
teamcity-bootstrap:
kind: basic
username: ""
password: "${TEAMCITY_BOOTSTRAP_TOKEN}"
# personal access token — Bearer
teamcity-pat:
kind: bearer
value: "${TEAMCITY_TOKEN}"

Use the personal access token in any long-running config — the bootstrap token is meant to be rotated away after first login.

  • version — the full string, e.g. 2026.2 (build 238924)
  • extra.buildNumber, extra.internalId

None — endoflife.date has no TeamCity calendar (confirmed 404). Inventory-only for now.