# War Thunder — Squadrons and Squadron Battles: Background for AI Agents ## 0. Scope This is background knowledge about **War Thunder** and its scheduled squadron-versus-squadron mode, **Squadron Battles** (SQB). Everything below is officially documented or a community report marked as such; unverified claims are collected at the end. ## 1. The game - **War Thunder** is a free-to-play vehicular combat game by Gaijin Entertainment covering ground, aviation and naval combat from the 1930s to the present day. - **Modes:** Arcade (AB), Realistic (RB) and Simulator (SB) are the three main PvP modes, alongside PvE and event formats such as World War Mode and seasonal events; Squadron Battles is one of those event formats, played under realistic rules, not a fourth main mode. - **Battle Rating (BR)** is a per-vehicle number for combat effectiveness and the only input matchmaking uses; rank and player statistics are ignored. A normal battle never spans more than a 1.0 BR spread, and no more than four players per side may sit at the top BR. Arcade air battles average the top three crew slots instead; Simulator uses rotating BR brackets in the air and fixed vehicle lists rotated every two days on the ground. - **Nations and ranks:** ten aviation and ground tech trees (USA, Germany, USSR, Great Britain, Japan, China, Italy, France, Sweden, Israel) and seven naval; ranks I to IX for aviation, I to VIII for ground, I to VII for naval, and lineups may mix nations freely. - **Vehicle classes:** aviation roles include fighter, interceptor, bomber, strike aircraft and torpedo bomber; ground roles are medium and light tanks, tank destroyers, SPAA, heavy tanks and ATGM carriers; naval roles run from frigate to battleship. Squadron vehicles are researched through squadron activity rather than the normal tree. ## 2. Squadrons - A **squadron** is War Thunder's guild equivalent: players sharing a name and tag, with roles from commander and deputy down to officers and privates. Creating one costs 1,000,000 silver lions for a training squadron (10 members and no decorative tag styles) or 2,500 golden eagles for a full squadron of up to 128 members. - **Tags and decorations.** A squadron tag carries a decorative border, and those styles are a seasonal reward: squadrons finishing a season in the top 100 earn a unique decorative tag, and losing the placement loses it. - **Two kinds of score.** The public squadron statistics panel counts air kills, ground kills, battle deaths and play time over two weeks — an activity scoreboard. The **squadron rating** behind the squadron-battle leaderboard instead derives from members' personal squadron-battle ratings and resets each season. - **How the squadron rating is composed** (2014 official wording): the top 20 personal ratings summed in full plus 5 percent of every remaining member, with those outside the top 20 contributing at most about 15 percent of the total. Later official material repeats the same point — the first 20 players dominate, so small squadrons can still compete. - **Season rewards** (2016 official structure): golden eagles to the top 20 squadrons, from 30,000 for first place to 3,000 for twentieth, with the top 20 players of each taking a larger share. The top 100 receive decorative tags and **Regalia**, a permanent profile emblem recording the season and placement; the top 10 also receive unique decals. - **Squadron vehicles** are unrelated to squadron battles: members feed a shared pool through ordinary research, at about one Activity Point per 200 research points, and every three days it becomes research progress on the vehicle a player has selected, each member contributing at most 360 points per cycle and the pool capped near 20,000 points. - **Fair play.** Gaijin publishes periodic ban reports with totals and a permanent-ban list kept public for two weeks. Anti-cheat has used BattlEye since December 2024, and temporary bans cover collusion such as farming score by capturing points with an opponent. ## 3. Squadron Battles ### 3.1 Format - **Eight versus eight**, and each side may only contain members of one squadron; mixed-squadron teams do not exist. Teams are ordinary squads, whose eight-player cap lets a squadron run several at once, and any squad leader can start a battle (community detail). - **One spawn, no respawn**: each player gets a single spawn, so a battle contains at most 16 vehicles and at most eight kills per side, which community discussion notes is why earnings per battle are low. - **Aircraft** are available from the first minute with full suspended armament, but each team is limited to **four per battle**; once the fourth has spawned nobody else can take one. Community guides put the usual lineup at four to eight ground vehicles plus up to four aircraft, nations unrestricted. - **Visibility:** no markers over enemies, and friendly markers only at short range, near one kilometre by community reports. ### 3.2 Calendar, seasons and the BR ceiling - **Seasons** last two months each, six per year, and statistics reset when a season begins. - **Weekly BR ceiling.** Rather than one fixed limit, moderators publish a ceiling that starts high and steps down once a week across the season; the season published for 1 September to 31 October 2026, for instance, begins at 14.7 and ends at 5.0. The schedule lives in a single forum thread edited in place, and community posts complain of late updates or a season opening on an unexpectedly low value, so an old ceiling must never be assumed current. - **Daily windows.** Squadron battles are not available around the clock. A 2021 open letter signed by many squadron commanders records two windows: roughly **14:00 to 22:00 UTC** (the "EU" window, 22:00 to 06:00 in UTC+8) and **01:00 to 07:00 UTC** (the "US" window, 09:00 to 15:00 in UTC+8), about fourteen hours a day. **Caveat:** no current official page publishes these windows, so this is community consensus, and one forum answer puts the EU window's end at 21:00 UTC instead of 22:00, leaving the last hour disputed. The only officially published hours are from 2014 and are obsolete. - **Rank restrictions.** No current public source states a minimum vehicle rank; the only official rule on record is the 2014 restriction to ranks III and IV, which predates the weekly ceiling, so treat "rank I is banned" as unverified. ### 3.3 Match flow and victory - **Map and mode are random**, as in ordinary battles, but the **Battle** mission type is explicitly excluded, leaving capture-style missions such as Domination and Conquest. In Domination three points are contested and the side holding more bleeds the enemy ticket bar faster; Battle instead gives each side a pre-held point and drains tickets heavily once a team loses its own. - **Victory** comes from draining the enemy ticket bar to zero or destroying every enemy vehicle, and because each player has one life the second condition arrives quickly in a one-sided match. Individual statistics and team score do not decide the winner; the ticket bar does. ### 3.4 Rating changes - **There is no public formula** for squadron or personal rating changes. The official statement is qualitative: the score rises after a victory and falls after a defeat by an amount depending on the difference between the two teams' ratings — beating a stronger team gains more, losing to a weaker one costs more. - The **2014 developer post** gives the original internals: a player's number was called a *duel rating*, set only by squadron-battle results, using a modified Elo that treated a player as rated 1500 while winning and used the real value while losing until 1500 was reached, after which standard Elo applied; ratings decayed weekly when a player was absent, and squadron totals summed the top 20 personal ratings plus 5 percent of the rest. These figures are historical and must not be quoted as the current rule. - Values circulating for single gains or losses come from community posts, not from Gaijin. Community posts also claim that matchmaking pairs teams by rating and that one high-rated player can pull a squadron into far stronger opposition, both plausible but unconfirmed officially. ## 4. Glossary | Term | Meaning | | --- | --- | | SQB | shorthand for Squadron Battles | | SRE | "Squadron Realistic Events", an alternative community name taken from its realistic rules | | BR | Battle Rating, the per-vehicle number matchmaking uses | | BR ceiling | the maximum BR allowed in squadron battles during a given week of a season | | lineup | the set of vehicles a player brings into a battle | | squadron, clan | the guild-like player group; "clan" is community slang for squadron | | tickets | the team score bar that drains as objectives are lost; emptying the enemy bar wins | | PSR, duel rating | a player's personal squadron-battle rating; the second is the 2014 official name | | Regalia | the permanent profile emblem earned by a top-100 squadron in a season | | Fair Play | Gaijin's periodic public ban report | ## 5. Unverified and commonly repeated claims 1. **"A disconnected player is replaced by an AI-controlled unit."** No official or reliable community source describes this; only the single-spawn rule and the eight-kill ceiling are documented. 2. **"Rating changes follow fixed numbers."** Community posts and screenshots show specific values, but no formula or table is public. 3. **"There is a published maximum battle duration."** Not found in official material or wiki coverage. 4. **"Rank I vehicles are forbidden."** Only the 2014 restriction to ranks III and IV exists, and it predates the weekly ceiling; current rules are ceilings, not rank floors. 5. **"Squadron battles are the e-sports mode."** They are not; the tournament system is separate and judged on individual skill instead. 6. **"War Thunder has clan wars."** There is no persistent territory war as in some other games; squadron battles are scheduled 8v8 matches, and World War Mode is a separate event format. 7. **"Squadron battles boost squadron-vehicle research or event progress."** Community reports say no on both counts, with open requests to change it — the current situation, not a guarantee. 8. **"The BR ceiling is fixed for the season, and aircraft are unlimited."** The ceiling steps down weekly, and aircraft are capped at four per team. 9. **"Only the commander can queue a battle."** Any squad leader can start one. 10. **"The map pool is unique to squadron battles."** Community posts say the pool is shared with ground realistic battles and community posts list map names, but nothing official confirms a dedicated pool. ## 6. Sources Official — Gaijin news, official wiki, official channel: 1. https://warthunder.com/en/news/599--en — 2014 development post: 8v8, duel rating, top-20 weighting. 2. https://warthunder.com/en/news/623-Changes-to-Squadron-Battles-en — 2014 rule changes: obsolete time slots, ranks III–IV. 3. https://warthunder.com/en/news/4167-development-squadron-battles-en — seasons, rewards, decorative tags, Regalia. 4. https://www.youtube.com/watch?v=3Q73fVM34xQ — 8v8, single spawn, four aircraft, random map, Battle excluded. 5. https://www.youtube.com/watch?v=b3z9sSSF3wo — older official tutorial: duel rating, 8-player squads. 6. https://wiki.warthunder.com/mechanics/matchmaking — BR, one-point spread, top-BR player limit. 7. https://wiki.warthunder.com/gamemode/arcade_battles — Domination and Battle ticket mechanics. 8. https://wiki.warthunder.com/aviation — nation list and aviation roles. 9. https://wiki.warthunder.com/mechanics/391-squadron-vehicles — squadron vehicle activity points. 10. https://wiki.warthunder.com/mechanics/anticheat — BattlEye and reporting. 11. https://forum.warthunder.com/t/season-schedule-for-squadron-battles-01-09-31-10-2026/4446 — weekly BR ceiling thread. Community — cross-checked, non-official: 12. https://forum.warthunder.com/t/recommendations-for-the-improvement-of-squadron-battles/5146 — commander open letter: daily windows, rewards. 13. https://forum.warthunder.com/t/how-does-squadron-battles-work/259871 — windows, single spawn, aircraft cap, marker range. 14. https://bofss.eu/what-is-sre — lineup limits, victory condition, season length.

WT Squadron Intel — Public Read-Only API

Base URL

https://api.fzbot.top

The same backend is also reachable at https://fzbot.top/api/.... All traffic is HTTPS.

Conventions

ItemNotes
Request bodyAll POST endpoints expect Content-Type: application/json.
session_keyrecent (default, latest session) · this_season · last_season · all (career) · range:FROM:TO:FROM_HALF:TO_HALF (custom range; half = 0 noon, 1 night)
TimeUnix timestamps in seconds (UTC). Some fields named time are preformatted strings in UTC+8.
Errors404 path not public or object missing · 422 invalid parameter · 500 server error (sanitized)
CORSCross-origin browser calls follow standard CORS rules. Server-to-server calls are unaffected.
Localized fieldsA few display-only fields are localized by the server's data language. Machine-readable identifiers (session_key, craft, vehicle, tag) are always ASCII/English.
AggregationsLeaderboard aggregation without a member_names filter is available for windows up to 31 days; wider windows return 400.
SortingLeaderboards take sort + order (e.g. sort=kd&order=asc for best first, sort=games&order=desc for most battles). /api/stats/rank additionally accepts vehicle_sort/vehicle_order and team_sort/team_order, so each table can be ordered independently. The response echoes the applied keys under sort.
winner_team1 / 2 = winning side · 3 = draw (tickets equal, no side can be credited with a win) · 0 = not determined. Draws count toward the number of decided battles but never as a win.
Access policyCrawlers and bulk data harvesting are not permitted. For access requests, contact the operator.

GET aliases. Query endpoints are available over both POST (JSON body) and GET (query string); lists are comma-separated (session_ids, user_ids, member_names, tags).

Vehicle search

curl -s 'https://api.fzbot.top/api/vehicles/search?q=France+air+RB+4.0'
curl -s 'https://api.fzbot.top/api/vehicles/search?type=light_tank&premium=0&limit=5'
curl -s 'https://api.fzbot.top/api/vehicles/us_m1a2_abrams'
{
  "query": "France air RB 4.0",
  "parsed": {"country": "france", "mode": "rb_air", "br": 4.0},
  "count": 3,
  "items": [
    {"identifier": "p-63c-5_france", "name": "P-63C-5", "country": "france",
     "type": "fighter", "br": {"ab": 4.0, "rb": 4.0, "sb": 4.0, "rb_ground": 4.0},
     "is_premium": false, "is_event": false,
     "wiki": "https://wiki.warthunder.com/unit/p-63c-5_france",
     "description": "The P-63C-5 is a French lend-lease fighter..."}
  ]
}

Free text q accepts Chinese keywords as well (法国 空历 4.0, 轻坦 热成像, 德国 中坦 活动) and is parsed into country / type / mode / BR / flags / feature. Structured parameters: country, type, mode (ab/rb/sb), br_min/br_max, event, premium, squadron, feature (e.g. thermal), limit (max 100; 50 on the public endpoint).

/api/vehicles/health reports dataset freshness, type/wiki coverage and any vehicles the dataset cannot classify yet.

Quick start

1 · List a squadron's battles

curl -s -X POST https://api.fzbot.top/api/query \
  -H 'Content-Type: application/json' \
  -d '{"tag":"AVR","session_key":"all","max_battles":2}'
{
  "tag": "AVR",
  "members": ["Skinny6539@live", "JohnWarThundër", "..."],
  "battles": [
    {
      "id": "523457522976300364",
      "time": "2026-09-20 11:13",
      "mission": "[Domination] Abandoned Town",
      "gametype": "clanBattle",
      "gamemode": "realistic",
      "winner_team": 1,
      "hits": 8,
      "clans": ["AVR", "LVUA"],
      "clan_counts": [{"tag": "AVR",  "count": 8, "team": 2},
                      {"tag": "LVUA", "count": 8, "team": 1}],
      "team_1": ["Pre__zad", "Zeyri_1", "Virtuоus", "..."],
      "team_2": ["Skinny6539@live", "JohnWarThundër", "TechnoRaccoon", "..."],
      "civil_war": false
    }
  ],
  "stats": {"total_members": 120, "filtered_battles": 2, "total_matched": 2493}
}

Leaving tag empty returns every squadron battle in the selected session.

2 · Read one battle in full

curl -s https://api.fzbot.top/api/battle/523457522976300364
curl -s https://api.fzbot.top/api/battle/523457522976300364/stats
{
  "session_id": "523457522976300364",
  "mission": "[Domination] Abandoned Town",
  "time": "2026-09-20 11:13",
  "gamemode": "realistic",
  "winner": {
    "winner_team": 1, "winner_confident": 1,
    "team1_score": 5, "team2_score": 0,
    "team1_tickets": 13264, "team2_tickets": 3057
  },
  "teams": {
    "red":  [{"nickname": "Pre__zad", "user_id": "122343345"}, "..."],
    "blue": [{"nickname": "Skinny6539@live", "user_id": "107248584"}, "..."]
  },
  "stats_rows": 16
}

Per-player rows come from the /stats sub-resource, keyed by user_id:

{
  "107248584": {
    "name": "Skinny6539@live", "clan_tag": "[AVR]", "team": 2,
    "kills": 3, "deaths": 0, "assists": 0, "score": 0,
    "captures": 0, "ground_kills": 1, "air_kills": 2, "naval_kills": 0,
    "craft_main": ["z_9wa"], "crafts": ["z_9wa", "cn_ztz_96a_prot"],
    "clan_rating": 2006, "elo_before": 2006, "elo_delta": -32
  }
}

3 · Leaderboards

curl -s -X POST https://api.fzbot.top/api/stats/rank \
  -H 'Content-Type: application/json' \
  -d '{"session_key":"all","min_games":10,"sort":"kd",
       "member_names":["TechnoKitten","TechnoWombat","Agent_Kraws"]}'
{
  "players": [
    {"user_id": "3609856", "name": "Agent_Kraws", "clan_tag": "[AVR]",
     "games": 29, "kills": 28, "deaths": 17, "assists": 7, "score": 10383,
     "kd": 1.65, "kr": 0.97, "wins": 23, "judged": 29, "win_rate": 0.7931}
  ],
  "vehicles": [
    {"craft": "us_m1_abrams_kvt", "games": 25, "kills": 11, "deaths": 8, "kd": 1.38, "kr": 0.44}
  ],
  "teams": [ "..."]
}

4 · Squadron ranking table

curl -s 'https://api.fzbot.top/api/clan/ranking?limit=2'
{
  "updated_at": 1792395048.77,
  "total": 100,
  "clans": [
    {"name": "AVANGARD", "tag": "AVR", "tagl": "avr", "pos": 1, "total": 47916,
     "members": 120, "rated": 116, "last_ts": 1792232191, "banned_count": 0},
    {"name": "LVTeam", "tag": "LVUA", "tagl": "lvua", "pos": 2, "total": 46268,
     "members": 127, "rated": 123, "last_ts": 1792362631, "banned_count": 0}
  ]
}

Endpoint reference

This is the complete public surface. Anything not listed returns 404. All endpoints return JSON, except the snapshot image endpoints at the end.

Match queries

EndpointPurposeBody / params
POST /api/queryBattles in a session, by squadron tag (empty = server-wide)tag, seed_nicks, session_key, max_battles, min_hits, no_cache
POST /api/query/by-idsBattle rows for a list of idssession_ids: []
POST /api/query/team-numbersStable team numbering across queriessession_ids, session_key, no_cache
POST /api/query/team-battlesAll battles of one team inside a sessionsession_ids, team_n, session_key
POST /api/squad/latest-vehiclesVehicles spawned in each squad's most recent battletag, seed_nicks, session_key
POST /api/squad/vehicle-oddsVehicle usage share per player over a sessionuser_ids: [], session_key, min_pct, mode=weighted|average
GET /api/session/rangeStart/end of the current "recent" session—

Single battle

EndpointPurpose
GET /api/battle/{session_id}Battle header: mission, mode, rosters, winner, row count
GET /api/battle/{session_id}/statsPer-player rows keyed by user_id
GET /api/battle/{session_id}/rosterRosters plus parse completeness
GET /api/battle/{session_id}/vehiclesSpawned vehicles for the battle
GET /api/battle/{session_id}/log-chatBattle log and in-game chat (parsed battles only)

Leaderboards & players

EndpointPurposeBody / params
POST /api/stats/rankPlayer / vehicle / team leaderboards over the whole databasesession_key, min_games, sort=kd|kr|kills|games, member_names, time_from, time_to
POST /api/stats/lineup-rankLineup win-rate ranking (8-vehicle multiset per side)no_cache
GET /api/stats/vehicle/{craft}/playersPlayers of one vehicle—
GET /api/player/{user_id}/summaryPlayer career / session summary—
GET /api/player/{user_id}/vehicle/{craft}Player results on one vehicle—
GET /api/players/search?q=Fuzzy player search—

Squadrons

EndpointPurposeBody / params
GET /api/clan/ranking?limit=200Squadron table: official rank, score, members, bans—
GET /api/clan/rank-detail?tag=One squadron: score/rank history, roster changes, bans—
GET /api/clan/member-historyMember rating history—
GET /api/clan/member-diffRoster diff between snapshots—
POST /api/clan/watch-teamsLatest battle per team for several squadronstags: [], per_clan

Snapshot images

Battle-rating (militia) snapshots are available as PNG images:

curl -s https://api.fzbot.top/api/militia/latest-slot
# {"slot_key":"2026-10-19_morning","session_key":"2026-10-19_morning","label":"..."}

curl -o report_all.png \
  'https://api.fzbot.top/api/militia/img?slot=2026-10-19_morning&file=report_all.png'
EndpointPurposeParams
GET /api/militia/latest-slotLatest completed snapshot slot — pass its slot_key belowmode=ground|air
GET /api/militia/imgPNG snapshot (image/png)slot, file, mode

file accepts: report_overview.png, report_all.png, report_<nation>.png (britain/china/france/germany/israel/italy/japan/sweden/usa/ussr), report_squad_overview.png, report_weekly_overview.png, report_weekly_all.png, report_compare_7d.png, rank_nations.png, rank_squads.png, rank_quad.png, rank_militia_nations.png, rank_militia_squads.png, heatmap.png, plus the rank_weekly_* and heatmap_weekly variants.

Guidelines

Unofficial fan-made service. Game data and trademarks belong to their respective owners.

WT 联队战情报 — 公开只读 API

基础地址

https://api.fzbot.top

同一后端也可通过 https://fzbot.top/api/... 访问。全部为 HTTPS。

通用约定

项说明
请求体POST 端点均为 Content-Type: application/json
session_keyrecent(默认,最近时段)· this_season · last_season · all(生涯)· range:FROM:TO:FROM_HALF:TO_HALF(自定义区间;half:0=中午、1=晚上)
时间时间戳为 Unix 秒(UTC);部分名为 time 的字段是东八区预格式化字符串
错误码404 路径不在公开面或对象不存在 · 422 参数不合法 · 500 服务端异常(已脱敏)
CORS跨域浏览器调用遵循标准 CORS 规则;服务端到服务端调用不受限
本地化字段少数纯展示字段由服务端数据语言决定;机器可读标识(session_key、craft、vehicle、tag)恒为 ASCII/英文
聚合不带 member_names 过滤的排行聚合,窗口上限 31 天;更宽的窗口返回 400。
排序榜单支持 sort + order(如 sort=kd&order=asc 由低到高、sort=games&order=desc 对局量由多到少)。/api/stats/rank 另支持 vehicle_sort/vehicle_order 与 team_sort/team_order,三张榜可各自独立排序;响应里的 sort 字段回显实际生效的键与方向。
winner_team1 / 2 = 胜方 · 3 = 平局(票数相等,无法判定胜方)· 0 = 未判定。平局计入"已判定场次"分母,但不计为胜利。
访问政策不允许爬虫与批量采集。如需访问授权,请联系运营者。

GET 别名。查询端点同时支持 POST(JSON 请求体)与 GET(query string);列表参数用逗号分隔(session_ids、user_ids、member_names、tags)。

载具搜索

curl -s 'https://api.fzbot.top/api/vehicles/search?q=France+air+RB+4.0'
curl -s 'https://api.fzbot.top/api/vehicles/search?type=light_tank&premium=0&limit=5'
curl -s 'https://api.fzbot.top/api/vehicles/us_m1a2_abrams'
{
  "query": "France air RB 4.0",
  "parsed": {"country": "france", "mode": "rb_air", "br": 4.0},
  "count": 3,
  "items": [
    {"identifier": "p-63c-5_france", "name": "P-63C-5", "country": "france",
     "type": "fighter", "br": {"ab": 4.0, "rb": 4.0, "sb": 4.0, "rb_ground": 4.0},
     "is_premium": false, "is_event": false,
     "wiki": "https://wiki.warthunder.com/unit/p-63c-5_france",
     "description": "The P-63C-5 is a French lend-lease fighter..."}
  ]
}

自由文本 q 支持中文关键词(法国 空历 4.0、轻坦 热成像、德国 中坦 活动),会自动解析成国家/类型/模式/BR/标签/特征。结构化参数:country、type、mode(ab/rb/sb)、br_min/br_max、event、premium、squadron、feature(如 thermal)、limit(最大 100,公开面 50)。

/api/vehicles/health 返回数据新鲜度、类型/wiki 覆盖率,以及暂未归类(如实记录、不猜类型)的载具清单。

快速开始

1 · 查某个联队的对局列表

curl -s -X POST https://api.fzbot.top/api/query \
  -H 'Content-Type: application/json' \
  -d '{"tag":"AVR","session_key":"all","max_battles":2}'
{
  "tag": "AVR",
  "members": ["Skinny6539@live", "JohnWarThundër", "..."],
  "battles": [
    {
      "id": "523457522976300364",
      "time": "2026-09-20 11:13",
      "mission": "[Domination] Abandoned Town",
      "gametype": "clanBattle",
      "gamemode": "realistic",
      "winner_team": 1,
      "hits": 8,
      "clans": ["AVR", "LVUA"],
      "clan_counts": [{"tag": "AVR",  "count": 8, "team": 2},
                      {"tag": "LVUA", "count": 8, "team": 1}],
      "team_1": ["Pre__zad", "Zeyri_1", "Virtuоus", "..."],
      "team_2": ["Skinny6539@live", "JohnWarThundër", "TechnoRaccoon", "..."],
      "civil_war": false
    }
  ],
  "stats": {"total_members": 120, "filtered_battles": 2, "total_matched": 2493}
}

tag 留空 = 该时段全服所有联队战。

2 · 取单场对局完整数据

curl -s https://api.fzbot.top/api/battle/523457522976300364
curl -s https://api.fzbot.top/api/battle/523457522976300364/stats
{
  "session_id": "523457522976300364",
  "mission": "[Domination] Abandoned Town",
  "time": "2026-09-20 11:13",
  "gamemode": "realistic",
  "winner": {
    "winner_team": 1, "winner_confident": 1,
    "team1_score": 5, "team2_score": 0,
    "team1_tickets": 13264, "team2_tickets": 3057
  },
  "teams": {
    "red":  [{"nickname": "Pre__zad", "user_id": "122343345"}, "..."],
    "blue": [{"nickname": "Skinny6539@live", "user_id": "107248584"}, "..."]
  },
  "stats_rows": 16
}

逐玩家战绩在 /stats 子资源,以 user_id 为键:

{
  "107248584": {
    "name": "Skinny6539@live", "clan_tag": "[AVR]", "team": 2,
    "kills": 3, "deaths": 0, "assists": 0, "score": 0,
    "captures": 0, "ground_kills": 1, "air_kills": 2, "naval_kills": 0,
    "craft_main": ["z_9wa"], "crafts": ["z_9wa", "cn_ztz_96a_prot"],
    "clan_rating": 2006, "elo_before": 2006, "elo_delta": -32
  }
}

3 · 排行榜

curl -s -X POST https://api.fzbot.top/api/stats/rank \
  -H 'Content-Type: application/json' \
  -d '{"session_key":"all","min_games":10,"sort":"kd",
       "member_names":["TechnoKitten","TechnoWombat","Agent_Kraws"]}'
{
  "players": [
    {"user_id": "3609856", "name": "Agent_Kraws", "clan_tag": "[AVR]",
     "games": 29, "kills": 28, "deaths": 17, "assists": 7, "score": 10383,
     "kd": 1.65, "kr": 0.97, "wins": 23, "judged": 29, "win_rate": 0.7931}
  ],
  "vehicles": [
    {"craft": "us_m1_abrams_kvt", "games": 25, "kills": 11, "deaths": 8, "kd": 1.38, "kr": 0.44}
  ],
  "teams": [ "..."]
}

4 · 联队排行表

curl -s 'https://api.fzbot.top/api/clan/ranking?limit=2'
{
  "updated_at": 1792395048.77,
  "total": 100,
  "clans": [
    {"name": "AVANGARD", "tag": "AVR", "tagl": "avr", "pos": 1, "total": 47916,
     "members": 120, "rated": 116, "last_ts": 1792232191, "banned_count": 0},
    {"name": "LVTeam", "tag": "LVUA", "tagl": "lvua", "pos": 2, "total": 46268,
     "members": 127, "rated": 123, "last_ts": 1792362631, "banned_count": 0}
  ]
}

端点清单

以下即公开面全部端点;未列出的一律 404。除末尾的快照图端点外,均返回 JSON 文本。

对局查询

端点用途请求体 / 参数
POST /api/query按联队 TAG(留空=全服)查时段内对局tag, seed_nicks, session_key, max_battles, min_hits, no_cache
POST /api/query/by-ids按场次 ID 列表取对局行session_ids: []
POST /api/query/team-numbers跨查询稳定的队伍编号session_ids, session_key, no_cache
POST /api/query/team-battles某支队伍在时段内的全部战局session_ids, team_n, session_key
POST /api/squad/latest-vehicles各小队最近一场的出击载具tag, seed_nicks, session_key
POST /api/squad/vehicle-odds指定玩家时段内出击载具占比user_ids: [], session_key, min_pct, mode=weighted|average
GET /api/session/range当前「最近时段」起止时间戳—

单场对局

端点用途
GET /api/battle/{session_id}对局头信息:任务、模式、双方名单、胜负、行数
GET /api/battle/{session_id}/stats逐玩家战绩(以 user_id 为键)
GET /api/battle/{session_id}/roster双方名单与解析完整度
GET /api/battle/{session_id}/vehicles该场出击载具
GET /api/battle/{session_id}/log-chat战斗日志与局内聊天(需已解析)

排行与玩家

端点用途请求体 / 参数
POST /api/stats/rank玩家 / 载具 / 队伍三类排行(全库聚合)session_key, min_games, sort=kd|kr|kills|games, member_names, time_from, time_to
POST /api/stats/lineup-rank阵容胜率排行(单边 8 车多重集)no_cache
GET /api/stats/vehicle/{craft}/players某载具的玩家下钻—
GET /api/player/{user_id}/summary玩家生涯 / 时段汇总—
GET /api/player/{user_id}/vehicle/{craft}某玩家某载具战绩—
GET /api/players/search?q=玩家昵称模糊搜索—

联队

端点用途请求体 / 参数
GET /api/clan/ranking?limit=200联队排行:官方名次、总分、成员数、封禁数—
GET /api/clan/rank-detail?tag=单联队:总分/名次史、成员变迁、封禁名单—
GET /api/clan/member-history成员评分变迁历史—
GET /api/clan/member-diff两次快照间的成员变动—
POST /api/clan/watch-teams多联队各队最新战局tags: [], per_clan

快照图片

班长率(壮丁率)快照以 PNG 图片提供:

curl -s https://api.fzbot.top/api/militia/latest-slot
# {"slot_key":"2026-10-19_morning","session_key":"2026-10-19_morning","label":"..."}

curl -o report_all.png \
  'https://api.fzbot.top/api/militia/img?slot=2026-10-19_morning&file=report_all.png'
端点用途参数
GET /api/militia/latest-slot最新统计完毕的快照时段 —— 取下它的 slot_key 用mode=ground|air
GET /api/militia/imgPNG 快照图(image/png)slot, file, mode

file 可用:report_overview.png、report_all.png、report_<国家>.png(britain/china/france/germany/israel/italy/japan/sweden/usa/ussr)、report_squad_overview.png、report_weekly_overview.png、report_weekly_all.png、report_compare_7d.png、rank_nations.png、rank_squads.png、rank_quad.png、rank_militia_nations.png、rank_militia_squads.png、heatmap.png,以及 rank_weekly_* 与 heatmap_weekly 系列。

使用须知

非官方粉丝服务。游戏数据与商标归原权利人所有。