战争雷霆 联队战 API

只读 JSON:联队战历史数据 —— 对局、逐玩家战绩、排行榜、联队评级、载具资料、 班长率快照。无需密钥、无需登录、不依赖 JavaScript。

基址 https://api.fzbot.top · 同一套数据也可从 https://fzbot.top/api/... 取 · English

快速开始

https://api.fzbot.top/api/db/status
https://api.fzbot.top/api/query?session_key=recent&max_battles=5
https://api.fzbot.top/api/battle/5391392491559117420
https://api.fzbot.top/api/battle/5391392491559117420/stats
https://api.fzbot.top/api/player/103098928/summary?session_key=all
https://api.fzbot.top/api/stats/rank?session_key=recent&min_games=5&limit=20

上面每条都能直接打开。示例 id 是库内真实记录。

端点

路径返回参数
/api/queryBattles in a session, by squadron tag (empty tag = server-wide)tag, seed_nicks, session_key, max_battles, min_hits, no_cache
/api/query/by-idsBattle rows for a list of idssession_ids[]
/api/query/team-numbersStable team numbering across queriessession_ids[], session_key, no_cache
/api/query/team-battlesAll battles of one team inside a sessionsession_ids[], team_n, session_key
/api/squad/latest-vehiclesVehicles spawned in each squad's most recent battle (scouting)tag, seed_nicks, session_key
/api/squad/vehicle-oddsVehicle usage share per player over a sessionuser_ids[], session_key, min_pct, mode=weighted|average
/api/session/rangeStart/end timestamps of the current 'recent' session—
/api/battle/{session_id}Battle header: mission, mode, rosters, winner, row count. Add include=stats,roster,vehicles,log-chat to get every sub-resource at onceinclude=stats,roster,vehicles,log-chat
/api/battle/{session_id}/statsPer-player rows keyed by user_id—
/api/battle/{session_id}/rosterRosters plus parse completeness—
/api/battle/{session_id}/trajectory-statusWhether a trajectory is available for this battle—
/api/battle/{session_id}/vehiclesVehicles spawned in the battle—
/api/battle/{session_id}/log-chatBattle log and in-game chat (parsed battles only)—
/api/stats/rankPlayer / vehicle / team leaderboards over the whole databasesession_key, min_games, sort=kd|kr|kills|games|deaths|assists|score|win_rate, order=asc|desc, vehicle_sort, vehicle_order, team_sort, team_order, member_names[], time_from, time_to, no_cache
/api/stats/lineup-rankLineup win-rate ranking (8-vehicle multiset per side)no_cache
/api/stats/vehicle/{craft}/playersPlayers of one vehiclelimit, sort=kd|kr|kills|games, min_games, time_from, time_to, member_names[]
/api/player/{user_id}/summaryPlayer career / session summarysession_key (all = career, recent = current session), top_crafts
/api/player/{user_id}/vehicle/{craft}Player results on one vehicle—
/api/players/searchFuzzy player searchq
/api/clan/rankingSquadron table: official rank, score, members, banslimit, sort=pos|tag|total|total_delta|rank_delta|members|banned_count|last_ts, order=asc|desc
/api/clan/recent-lineupLatest battle of one squadron plus its 8-player lineup and vehicles, in one request (searches back regardless of window)tag, per_side
/api/clan/rank-detailOne squadron: score/rank history, roster changes, banstag
/api/clan/member-historyMember rating history—
/api/clan/member-diffRoster diff between snapshots—
/api/clan/watch-teamsLatest battle per team for several squadronstags[], per_clan
/api/db/statusDatabase summary (battles, parsed, pending)none
/api/db/freshnessData freshness (latest battle age, pending parse, backup watermark)none
/api/db/parse-healthUnparsed battles within the compliance window (7 days)none
/api/db/timelineBattle counts over time (bucketed, or one row per calendar day)session_key, time_from, time_to, buckets=1..500, bucket=day
/api/db/anomaly-countAnomaly counters (unparsed / abandoned / stale)none
/api/db/list-idsSession id list for export/pagingsession_key, limit, filters (required)
/api/lang/namesLocalized display-name map (ASCII keys)none
/api/lang/vehicle-nameOne vehicle display namevid
/api/vehicle/type-mapVehicle id -> type mapnone
/api/militia/latest-slotLatest completed battle-rating snapshot slotmode=ground|air
/api/militia/reportBattle-rating distribution as Markdown tables (same data as the PNG snapshots)slot, mode=ground|air, format=md|json
/api/militia/imgBattle-rating snapshot PNGslot, file, mode=ground|air
/api/db/listDatabase page rows (time, map, mode, download/parse status, replay id)limit, offset, keyword, status, parse_status, session_key, time_from, time_to, after_start_time, after_session_id, air_side_gt, include_counts
/api/vehicles/searchFuzzy vehicle search (Chinese or English free text + structured filters)q, country, type, mode, br_min, br_max, event, premium, squadron, feature, limit
/api/vehicles/{identifier}One vehicle in full (BR, role, features, wiki description)identifier
/api/vehicles/healthVehicle dataset health (sync age, coverage, unknown vehicles)none
/api/helpThis document (add ?format=json for a structured listing)format=md|json

以上都接受 GET + 查询串,多数也接受 POST + JSON 请求体。 列表参数用逗号分隔(member_names=A,B)。

参数

session_key

取值含义
recent最近一个时段(进行中或刚结束)
today今天(东八区自然日)
this_season / last_season本赛季 / 上赛季(约 61 天)。只适用于玩家类端点;排行榜上会超 60 天上限并返回 400
all全部记录。玩家类端点可用;排行榜会拒绝(超 60 天),请用 range:
range:FROM:TO:H1:H2自定义日期范围,FROM/TO 用 YYYY-MM-DD(不是时间戳)

半场(range: 里的 H1 / H2)

取值窗口说明
noon09:00-15:30联队战午间场
night22:00-次日 06:30归属开始那一天
morning06:30-15:30与 noon 重叠,二选一,不要相加
afternoon15:30-22:00—
am / pm00:00-12:00 / 12:00-24:00要自然日就用这一对
full整天(含夜间)—

日期按东八区切,与响应时间同一时区。
night 跨日。 range:2026-10-19:2026-10-19:noon:night 会返回 10-19 09:00 到 10-20 06:30 的对局; 只要某一天请用 am:pm。半场写 0/1 会返回 422。

排序与分页

玩家用 sort/order,载具用 vehicle_sort/vehicle_order, 队伍用 team_sort/team_order。 可用键:games kills deaths assists score kd kr win_rate。 空值在两个方向都固定排最后。

limit/offset 对三张榜统一分页;max_battles(别名 limit)限制对局条数;min_games 过滤场次过少的行; member_names 只看指定玩家且不受窗口限制;no_cache 强制重算。

班长率快照

优先用文本版 —— 一次 GET 拿到可解析的数字:

https://api.fzbot.top/api/militia/report
https://api.fzbot.top/api/militia/report?slot=2026-10-20_afternoon&format=json

返回四张 Markdown 表:概览、按国家、按 BR 房间、按联队组合。 format=json 给同一份数据的结构化形式。

图片是 PNG,仅用于展示:

https://api.fzbot.top/api/militia/latest-slot
https://api.fzbot.top/api/militia/img?slot=2026-10-20_afternoon&file=report_overview.png&mode=ground

file 取值: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,以及 rank_weekly_* 与 heatmap_weekly 系列。

返回结构

字段名与嵌套层级照抄线上真实返回(已截断),示例用的是库内真实记录。

/api/query —— 单条对局

{
  "id": "5391392491559117420",
  "time": "2026-10-21 01:43",
  "mission": "[Conquest #2] Flanders",
  "gametype": "clanBattle",
  "winner_team": 2,
  "hits": 16,
  "clans": ["IRAN", "iZG0Y"],
  "clan_teams": {"izg0y": 1, "iran": 2},
  "clan_counts": [{"tag": "IRAN", "count": 8, "team": 2}],
  "team_1": ["___Shishel___", "…"],
  "team_2": ["Agha_Ahmad", "…"],
  "civil_war": false
}

外层是 {tag, members, battles: […], all_mode, stats: {total_matched, displayed_battles, …}}。 team_1 / team_2 存的是昵称不是 id —— id 在 /api/battle/{id}/stats 或加 &include=roster。

/api/battle/{id}

{
  "session_id": "5391392491559117420",
  "mission": "[Conquest #2] Flanders",
  "time": "2026-10-21 01:43",
  "gamemode": "realistic",
  "teams": {
    "red":  [{"nickname": "___Shishel___", "user_id": "103098928"}, "…"],
    "blue": [{"nickname": "Agha_Ahmad", "user_id": "115735641"}, "…"],
    "unknown": []
  },
  "winner": {"winner_team": 2, "winner_confident": 1,
             "team1_score": 1737, "team2_score": 2455,
             "team1_tickets": 0, "team2_tickets": 12968},
  "stats_rows": 16
}

加 include=stats,roster,vehicles,log-chat 会把这几项一起放进 included,不用多跑四次。

/api/stats/rank

{
  "players": [{"user_id": "46522662", "name": "Ultimate_Cikla", "clan_tag": "…",
               "games": 13, "kills": 34, "deaths": 3, "kd": 11.33,
               "wins": 10, "judged": 13, "win_rate": 0.77}],
  "vehicles": [{"craft": "ki_67_1_otsu", "games": 10, "kills": 14, "kd": 2.8}],
  "teams": [{"members": ["Alonzo007#1", "…"], "member_ids": ["109549702", "…"],
             "clan": "…",
             "battles": [{"session_id": "5391392491559170134", "team": 2,
                          "start_time": 1792529058, "mission": "[Domination] Sun City",
                          "is_win": true, "score_self": 4015, "score_opp": 2758,
                          "winner_team": 2}],
             "wins": 60, "games": 63, "total_games": 64, "win_rate": 0.952}],
  "label": "昨日晚上",
  "sort": {"players": ["kd", "desc"], "vehicles": ["kd", "desc"], "teams": ["games", "desc"]},
  "page": {"limit": 20, "offset": 0,
           "total": {"players": 1126, "vehicles": 165, "teams": 169}}
}

teams[].battles 带该队伍每一场的明细 —— 这就是不加过滤时 响应能到几 MB 的原因,用 limit / offset 分页。

/api/player/{id}/summary

{
  "user_id": "103098928", "name": "___Shishel___", "clan_tag": "…",
  "games": 19, "kills": 14, "deaths": 14, "assists": 8, "score": 8304,
  "kd": 1.0, "kr": 0.74, "wins": 11, "judged": 19, "win_rate": 0.5789,
  "crafts": [{"craft": "us_t26e4_superpershing", "games": 14, "kills": 12,
              "deaths": 10, "kd": 1.2, "wins": 8, "win_rate": 0.5714}],
  "label": "…"
}

不带 session_key=all 时只覆盖当前时段; crafts 是按载具拆的明细。

错误码

状态码含义
400无过滤排行榜的窗口超过 60 天
404路径不存在,或该对局 / 玩家 / 图片不存在
422参数非法或所需数据缺失,报文会指出是哪一项
503已有重查询在跑,按 Retry-After 秒数重试

多数错误报文同时带英文与中文;参数校验类错误可能只有中文。

注意

War Thunder 为 Gaijin Entertainment 的商标。本站是非官方社区项目,与 Gaijin 无关联。

Terminology — squad vs team vs squadron (read before querying) squad: in squadron battles, one side of a battle — the eight players fighting together. It is the game's own unit, exposed as team_1 / team_2 on a battle row and as team on each player row. Other modes' party rules are out of scope. Caveat: /api/squad/* predates this naming — latest-vehicles returns each identified team's vehicles, vehicle-odds works on an arbitrary user_ids list. team (the field): 1 or 2 — which side of that battle, i.e. the squad above. identified team: this project's abstraction. Two battle sides count as the same roster when their 8-player lists overlap by >= 6 players, transitively closed. The game has no team that persists between battles. Returned under teams in /api/stats/rank, numbered by /api/query/team-numbers. squadron (clan): the guild, identified by a tag. Seen in clan_tag, in the clans array of a battle row, and under /api/clan/*. One squadron may field several different identified teams in the same window; an identified team is usually drawn from a single squadron, but this is not enforced. 术语:小队=联队战里一场对局的一方 8 人(游戏机制本身,即 team_1/team_2;其他模式的 组队规则不在范围内)。/api/squad/* 是历史命名,返回的是"识别出的队伍"而非某场的一方。 队伍=响应里的 team 字段就是 1 或 2(即上面的一方);"识别出的队伍"是本项目抽象—— 两场 8 人名单 ≥6 人重合即同队并取传递闭包,游戏里没有跨场次持久的队伍实体。 联队=游戏内公会,看 clan_tag 与 /api/clan/*。一个联队在同一时间窗内可能有多支不同 名单的队伍;一支队伍通常来自一个联队,但不强制。 Full version: /agent-context.md