{"openapi":"3.0.3","info":{"title":"VX Public API","version":"1.0.0","description":"Read-only API for project bots and integrations. Authentication uses application_id + secret to obtain a 24-hour Bearer token. Each endpoint is additionally protected by application scopes and the project subscription."},"servers":[{"url":"https://api.vx-platform.ru"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"VX token"}},"parameters":{"ServerId":{"name":"serverId","in":"path","required":true,"description":"VX server ID from servers[].id returned by GET /v1/servers. This is not the server IP, port or display name.","schema":{"type":"string"}},"PlayerIdentifier":{"name":"identifier","in":"path","required":true,"description":"SteamID64, BattlEye GUID or CFTools ID of a player already known inside the current project.","schema":{"type":"string"}},"BanListId":{"name":"banListId","in":"path","required":true,"description":"Ban-list ID from banlists[].id returned by GET /v1/banlists.","schema":{"type":"string"}}}},"paths":{"/v1/auth/register":{"post":{"summary":"Exchange application_id + secret for a 24h bearer token","description":"Send application_id in the request body and in User-Agent. The secret is shown only when the application is created or rotated.","security":[]}},"/v1/project":{"get":{"summary":"Project summary","description":"Returns the project name, slug, support branding and public support URL. Scope: project:read. Available on FREE+."}},"/v1/servers":{"get":{"summary":"Project servers and live status","description":"Returns active project servers with their VX ID, map, online state, current player count, slot count and status timestamps. Scope: servers:read. Available on FREE+."}},"/v1/server/{serverId}":{"get":{"summary":"Server status","description":"Returns the selected server from the current project.","parameters":[{"$ref":"#/components/parameters/ServerId"}]}},"/v1/server/{serverId}/schedules":{"get":{"summary":"Public server schedules","description":"Returns only active schedules marked public. Scope: schedules:read. Requires LITE+.","parameters":[{"$ref":"#/components/parameters/ServerId"}]}},"/v1/leaderboards":{"get":{"summary":"Project leaderboards","description":"Returns one leaderboard when metric is supplied, or all available metrics when omitted. Metric values are case-insensitive. Scope: leaderboards:read. Requires LITE+.","parameters":[{"name":"metric","in":"query","required":false,"description":"Leaderboard metric code. Canonical values: PLAYER_KILLS (PvP kills), DEATHS, SUICIDES, LONGEST_HIT (meters), LONGEST_KILL (meters), ZOMBIE_KILLS, ANIMAL_KILLS, PLAYTIME (seconds), LONGEST_LIFE (seconds).","schema":{"type":"string","enum":["PLAYER_KILLS","DEATHS","SUICIDES","LONGEST_HIT","LONGEST_KILL","ZOMBIE_KILLS","ANIMAL_KILLS","PLAYTIME","LONGEST_LIFE"]}},{"name":"limit","in":"query","required":false,"description":"Requested row count per metric. Default 10. The leaderboard layer currently returns at most 25 rows per metric.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}]}},"/v1/player/{identifier}":{"get":{"summary":"Project-scoped player lookup","description":"Looks up a player by SteamID64, BattlEye GUID or CFTools ID and returns known aliases plus project statistics.","parameters":[{"$ref":"#/components/parameters/PlayerIdentifier"}]}},"/v1/banlists":{"get":{"summary":"Project ban-lists","description":"Returns active project ban-lists and the number of ban records in each list. Scope: banlists:read. Available on FREE+."}},"/v1/banlists/{banListId}/bans":{"get":{"summary":"Active bans in a project ban-list","description":"Returns only active and non-expired bans from the selected ban-list.","parameters":[{"$ref":"#/components/parameters/BanListId"},{"name":"limit","in":"query","required":false,"description":"Maximum number of ban records. Default 100, range 1-200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}}]}}}}