只读 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/query | Battles in a session, by squadron tag (empty tag = server-wide) | tag, seed_nicks, session_key, max_battles, min_hits, no_cache |
/api/query/by-ids | Battle rows for a list of ids | session_ids[] |
/api/query/team-numbers | Stable team numbering across queries | session_ids[], session_key, no_cache |
/api/query/team-battles | All battles of one team inside a session | session_ids[], team_n, session_key |
/api/squad/latest-vehicles | Vehicles spawned in each squad's most recent battle (scouting) | tag, seed_nicks, session_key |
/api/squad/vehicle-odds | Vehicle usage share per player over a session | user_ids[], session_key, min_pct, mode=weighted|average |
/api/session/range | Start/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 once | include=stats,roster,vehicles,log-chat |
/api/battle/{session_id}/stats | Per-player rows keyed by user_id | — |
/api/battle/{session_id}/roster | Rosters plus parse completeness | — |
/api/battle/{session_id}/trajectory-status | Whether a trajectory is available for this battle | — |
/api/battle/{session_id}/vehicles | Vehicles spawned in the battle | — |
/api/battle/{session_id}/log-chat | Battle log and in-game chat (parsed battles only) | — |
/api/stats/rank | Player / vehicle / team leaderboards over the whole database | session_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-rank | Lineup win-rate ranking (8-vehicle multiset per side) | no_cache |
/api/stats/vehicle/{craft}/players | Players of one vehicle | limit, sort=kd|kr|kills|games, min_games, time_from, time_to, member_names[] |
/api/player/{user_id}/summary | Player career / session summary | session_key (all = career, recent = current session), top_crafts |
/api/player/{user_id}/vehicle/{craft} | Player results on one vehicle | — |
/api/players/search | Fuzzy player search | q |
/api/clan/ranking | Squadron table: official rank, score, members, bans | limit, sort=pos|tag|total|total_delta|rank_delta|members|banned_count|last_ts, order=asc|desc |
/api/clan/recent-lineup | Latest 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-detail | One squadron: score/rank history, roster changes, bans | tag |
/api/clan/member-history | Member rating history | — |
/api/clan/member-diff | Roster diff between snapshots | — |
/api/clan/watch-teams | Latest battle per team for several squadrons | tags[], per_clan |
/api/db/status | Database summary (battles, parsed, pending) | none |
/api/db/freshness | Data freshness (latest battle age, pending parse, backup watermark) | none |
/api/db/parse-health | Unparsed battles within the compliance window (7 days) | none |
/api/db/timeline | Battle counts over time (bucketed, or one row per calendar day) | session_key, time_from, time_to, buckets=1..500, bucket=day |
/api/db/anomaly-count | Anomaly counters (unparsed / abandoned / stale) | none |
/api/db/list-ids | Session id list for export/paging | session_key, limit, filters (required) |
/api/lang/names | Localized display-name map (ASCII keys) | none |
/api/lang/vehicle-name | One vehicle display name | vid |
/api/vehicle/type-map | Vehicle id -> type map | none |
/api/militia/latest-slot | Latest completed battle-rating snapshot slot | mode=ground|air |
/api/militia/report | Battle-rating distribution as Markdown tables (same data as the PNG snapshots) | slot, mode=ground|air, format=md|json |
/api/militia/img | Battle-rating snapshot PNG | slot, file, mode=ground|air |
/api/db/list | Database 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/search | Fuzzy 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/health | Vehicle dataset health (sync age, coverage, unknown vehicles) | none |
/api/help | This document (add ?format=json for a structured listing) | format=md|json |
以上都接受 GET + 查询串,多数也接受 POST + JSON 请求体。
列表参数用逗号分隔(member_names=A,B)。
| 取值 | 含义 |
|---|---|
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)| 取值 | 窗口 | 说明 |
|---|---|---|
noon | 09:00-15:30 | 联队战午间场 |
night | 22:00-次日 06:30 | 归属开始那一天 |
morning | 06:30-15:30 | 与 noon 重叠,二选一,不要相加 |
afternoon | 15:30-22:00 | — |
am / pm | 00: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 秒数重试 |
多数错误报文同时带英文与中文;参数校验类错误可能只有中文。
"2026-10-21 02:25" 这样的东八区字符串;
请求时间用 unix 秒,或在 range: 里用 YYYY-MM-DD。clans 保留原名,clan_teams
的键是小写 —— 对齐时按小写比较。/api/db/status。War Thunder 为 Gaijin Entertainment 的商标。本站是非官方社区项目,与 Gaijin 无关联。