API

Overview

Overview

GameTracker exposes a public JSON API for authenticated integrations. The current version is v1 and all endpoints require a personal access token sent as a Bearer token.

Authentication

Create a token from Settings > API Tokens after logging in. Copy the token when it is created because the plain text value is shown only once.

Send the token on every request using the Authorization: Bearer YOUR_TOKEN header and set Accept: application/json.

curl -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  /api/v1/games

Base URL

All endpoints below are relative to your GameTracker domain, for example https://gametracker.ro.

Endpoints

List games

GET /api/v1/games

Returns all active games ordered by title.

{
  "data": [
    {
      "id": 1,
      "slug": "cs16",
      "title": "Counter-Strike 1.6"
    }
  ]
}

List servers

GET /api/v1/servers

Returns paginated server results. Default page size is 25 and the maximum is 100.

Supported query parameters:

  • per_page - number of records per page, between 1 and 100
  • online - filter online status, accepts true or false
  • game - game slug, for example cs16
  • country - 2-letter country code, for example RO
  • map - exact map name, for example de_dust2
curl -G \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  --data-urlencode "game=cs16" \
  --data-urlencode "online=true" \
  --data-urlencode "country=RO" \
  --data-urlencode "per_page=50" \
  /api/v1/servers
{
  "current_page": 1,
  "data": [
    {
      "id": 25,
      "hostname": "Romania Classic",
      "ip": "127.0.0.1",
      "dns": null,
      "port": 27015,
      "address": "127.0.0.1:27015",
      "url_slug": "romania-classic",
      "online": true,
      "players": {
        "current": 12,
        "max": 32
      },
      "map": "de_dust2",
      "country": {
        "code": "RO",
        "name": "Romania",
        "iso2": "RO"
      },
      "game": {
        "slug": "cs16",
        "title": "Counter-Strike 1.6"
      },
      "ranking": {
        "rank": 4
      },
      "votes": {
        "score": 120,
        "up": 150,
        "down": 30
      },
      "last_scan_on": "2026-03-10T09:30:00+00:00",
      "last_online_on": "2026-03-10T09:28:00+00:00"
    }
  ]
}

Get one server

GET /api/v1/servers/{server}

Use the numeric server ID returned by the list endpoint. The detail endpoint includes the reputation block in addition to the standard server fields.

curl -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  /api/v1/servers/25
{
  "data": {
    "id": 25,
    "hostname": "Romania Classic",
    "reputation": {
      "score": 88.4,
      "stability": 91.2,
      "redirect_risk": 4.1,
      "fake_players_risk": 2.7
    }
  }
}

Response notes

  • last_scan_on and last_online_on are ISO 8601 timestamps when available.
  • Paginated responses follow Laravel paginator JSON structure and include page metadata such as current_page, last_page, and navigation URLs.

Typical usage

Common integrations include dashboards, Discord bots, server status widgets, and ranking sync jobs. Start with /api/v1/games to discover valid game slugs, then use /api/v1/servers for filtered lists and /api/v1/servers/{server} for detail views.

EU Cookie Consent

Choose how we use optional cookies

We use essential cookies to keep the site working. Optional cookies are only used for third-party advertising and embedded ad content. Learn more in the privacy policy.

You can reopen these settings later from the footer link.

Welcome Back

Sign in to your GameTracker account

Don't have an account?