---
title: "Compare tanks"
method: GET
path: "/{region}/tanks/compare"
tags: ["Tanks"]
---

# Compare tanks

`GET /{region}/tanks/compare`

## Request

- Base URL: `https://unicum.gg/api`
- URL: `https://unicum.gg/api/{region}/tanks/compare`
- Auth: none required

Everything a side-by-side comparison of 2 to 4 columns renders (`?slugs=is-7,e-100`): each vehicle's specifications, module combinations, equipment slots, crew and progression, plus its server-average performance. The mountable catalogues (equipment, directives, consumables, crew skills) are hoisted out of the vehicles and described once under `catalog`, referenced by key, and `ranges` carries the catalogue-wide spread of every characteristic so a client can score a vehicle per category. A slug may suffix the game client to read the vehicle on (`?slugs=amx-13-90,amx-13-90@ct`), which is how a vehicle is compared against what the running Common Test makes of it, and every column carries back the `client` it was read on. It may also suffix a position (`?slugs=is-7,is-7~2`), which is how the same vehicle is compared under two setups: both columns carry the vehicle's data, told apart by `occurrence`. A repeat spelled the same way twice still collapses, and a slug the catalogue doesn't know is dropped rather than failing the request, as long as two columns remain.

## Path parameters

- `region` 'eu' | 'na' | 'asia', required: Game server region.

## Query parameters

- `slugs` string[], required: Columns to compare (2 to 4). A slug on its own, or suffixed with the game client to read it on (`is-7@ct`) or with its position among the columns showing that same vehicle (`is-7~2`, one tank under two setups).

## Response `200`

Successful response

- TanksCompare: Everything a side-by-side vehicle comparison renders: each vehicle's configurable data, the mountable catalogues they share, and the catalogue-wide spread of every characteristic.
  - `vehicles` TankCompareVehicle[], required: The compared columns, in the requested order. A slug the catalogue doesn't know is dropped rather than failing the request, so the array can be shorter than the query. It is one entry per column rather than per vehicle, so a vehicle asked for twice appears twice, told apart by `occurrence`.
    - `tankId` number, required
    - `slug` string, required: Canonical slug. Callers that reached a vehicle through a legacy id or wrong-case slug should redirect to it. It carries no client suffix: `client` below says which one this column is.
    - `client` 'live' | 'ct', required: The game client this column was read on. `ct` when the query asked for it, and always for a vehicle that exists only on the test client.
    - `occurrence` integer, required: Which column this is among those showing the same vehicle on the same client, counted from 1. Above 1 when the comparison holds one vehicle more than once, which is how the same tank is compared under two setups: the query asks for it by suffixing the position (`is-7,is-7~2`) and every such column repeats the vehicle's data under its own number.
    - `testVersion` string, nullable, required: The Common Test build available for this vehicle, e.g. `2.4.0.5415`. Null when no test is running or when it leaves the vehicle alone.
    - `meta` VehicleMeta, required: The tank's catalogue identity.
      - `tier` number, required
      - `type` string, required
      - `nation` string, required
      - `name` string, required
      - `shortName` string, required
      - `tag` string, required
      - `isPremium` boolean, required
      - `isReward` boolean, required
      - `isCommonTest` boolean, required: Only on the Common Test client, not yet released.
      - `isHidden` boolean, required: Not a vehicle at all (training bot, story-mode prop). Always false here: these are excluded from the catalogue.
      - `variant` string, nullable, required: The parallel catalogue this vehicle comes from, spelled as the suffix its name ends with ("IGR" for the retired cybercafe reissues). Null for a normal vehicle.
      - `role` string, nullable, required
      - `contourIcon` string, nullable, required
      - `bigIcon` string, nullable, required
    - `specs` string, nullable, required: The vehicle's top-configuration combat specification, same shape as the `/specifications` endpoints.
    - `modules` TankModuleNode[], required
      - `moduleId` number, required
      - `type` string, required: WG module class: vehicleChassis, vehicleTurret, vehicleGun, vehicleEngine or vehicleRadio.
      - `name` string, required
      - `tier` number, nullable, required
      - `image` string, nullable, required
      - `isDefault` boolean, required: True for the stock module the tank ships with.
      - `priceXp` number, required
      - `priceCredit` number, required
      - `nextModules` number[], required: Module ids this one unlocks (edges may cross classes, e.g. a turret unlocking a gun).
      - `nextTanks` number[], required: Vehicle ids this module's research opens up.
      - `stats` union, required
        - object
          - `kind` 'gun', required
          - `reloadTime` number, required
          - `fireRate` number, required
          - `aimTime` number, required
          - `dispersion` number, required
          - `maxAmmo` number, required
          - `moveDownArc` number, required
          - `moveUpArc` number, required
          - `traverseSpeed` number, required
          - `shells` ModuleShell[], required
            - `type` string, required
            - `damage` number, required
            - `penetration` number, required
        - object
          - `kind` 'turret', required
          - `armorFront` number, required
          - `armorSides` number, required
          - `armorRear` number, required
          - `hp` number, required
          - `viewRange` number, required
          - `traverseSpeed` number, required
        - object
          - `kind` 'engine', required
          - `power` number, required
          - `fireChance` number, required
        - object
          - `kind` 'chassis', required
          - `loadLimit` number, required
          - `traverseSpeed` number, required
        - object
          - `kind` 'radio', required
          - `signalRange` number, required
      - `tanks` ModuleTankRef[], required: Every vehicle that can mount this module, highest tier first.
        - `tankId` number, required
        - `slug` string, required
        - `name` string, required
        - `tier` number, required
        - `type` string, required
        - `tag` string, required
    - `configs` TankConfig[], required: Every selectable module combination with its derived specs, so a column re-renders its characteristics from the modules picked on it.
      - `modules` object, required: The WG module ids mounted in this configuration, one per slot (null when the tank has no module of that class).
        - `gun` number, nullable, required
        - `turret` number, nullable, required
        - `engine` number, nullable, required
        - `chassis` number, nullable, required
        - `radio` number, nullable, required
      - `keys` object, required: The game client's own name for each module in this configuration. The geometry mirror publishes which piece a module draws under exactly these keys, so a viewer can show the gun a reader picked rather than the vehicle's first.
        - `gun` string, required
        - `turret` string, required
        - `engine` string, required
        - `chassis` string, required
        - `radio` string, required
      - `specs` string, required: The full combat specification for this module combination, same shape as the top-level `specs` row.
    - `modes` VehicleMode[], required
      - `kind` 'siege' | 'rapid', required
      - `switchOnTime` number, required
      - `switchOffTime` number, required
      - `factors` object[], required
        - `attribute` string, required
        - `type` 'mul' | 'add', required
        - `value` number, required
      - `depression` number, nullable, required
      - `elevation` number, nullable, required
    - `mechanic` string, nullable, required: Which mechanic the vehicle's second state is, where it has one: siege, wheeled, dualGun, twinGun, turboshaftEngine, shellParamsSwitcher or lowChargeShot. Null for the vast majority of vehicles, which have no second state.
    - `loadout` object, nullable, required: The vehicle's equipment slots plus the catalogue keys it can mount, resolved against `catalog`. Null when the wot-src catalogue has nothing for it.
      - `slots` EquipmentSlot[], required
        - `category` string, nullable, required: The slot's category (null for a legacy universal slot).
        - `role` boolean, required: True for the swappable role slot.
        - `roleOptions` string[]
      - `equipmentKeys` string[], required
      - `directiveKeys` string[], required
      - `consumableKeys` string[], required
    - `crew` object, nullable, required: The vehicle's crew composition plus the skill keys its members can train, resolved against `catalog.crewSkills`.
      - `members` CrewMember[], required
        - `memberId` string, required
        - `roles` string[], required
        - `image` string, nullable, required: The member's WG tankopedia nation portrait, by slot position.
        - `roleBadge` string, nullable, required: The role badge overlaid on the portrait (its primary role).
        - `skills` string[], required: Skill keys this member can learn (its roles' + universal).
      - `skillKeys` string[], required
    - `fieldMods` TankFieldMods, required
      - `treeKey` string, required: The post-progression tree: the vehicle's role or its own special tree.
      - `steps` FieldModStep[], required
        - `level` number, required
        - `kind` 'feature' | 'modification' | 'pair', required
        - `feature` object, nullable, required
          - `key` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `image` string, nullable, required
        - `modification` FieldModItem, required
          - `key` string, required
          - `name` string, required
          - `image` string, nullable, required
          - `effects` object[], required
            - `attribute` string, required
            - `type` 'mul' | 'add', required
            - `value` number, required
        - `pair` object, nullable, required
          - `key` string, required
          - `first` FieldModItem, required
            - `key` string, required
            - `name` string, required
            - `image` string, nullable, required
            - `effects` object[], required
              - …
          - `second` FieldModItem, required
            - `key` string, required
            - `name` string, required
            - `image` string, nullable, required
            - `effects` object[], required
              - …
    - `skillTree` TankSkillTree, required (unresolved $ref)
    - `stats` TankServerStats, required: Server-wide performance for a tank, averaged over tracked players. moeN/momN are holder counts among tracked players; null until the by-tank cron has coverage.
      - `players` number, required
      - `avg_battles` number, required
      - `total_battles` number, nullable, required
      - `avg_damage` number, required
      - `winrate` number, required
      - `player_wr` number, nullable, required
      - `wn7` number, nullable, required
      - `wn8` number, nullable, required
      - `wnx` number, nullable, required
      - `avg_spots` number, nullable, required
      - `avg_assist` number, nullable, required
      - `kdr` number, nullable, required
      - `hit_pct` number, nullable, required
      - `pen_pct` number, nullable, required
      - `avg_blocked` number, nullable, required
      - `survival` number, nullable, required
      - `moe1` number, nullable, required
      - `moe2` number, nullable, required
      - `moe3` number, nullable, required
      - `mom_class3` number, nullable, required
      - `mom_class2` number, nullable, required
      - `mom_class1` number, nullable, required
      - `mom_ace` number, nullable, required
    - `moe` object, nullable, required
      - `mark1` number, required
      - `mark2` number, required
      - `mark3` number, required
    - `mastery` object, nullable, required
      - `class3` number, required
      - `class2` number, required
      - `class1` number, required
      - `ace` number, required
    - `wn8Expected` object, nullable, required
      - `expDamage` number, required
      - `expSpot` number, required
      - `expFrag` number, required
      - `expDef` number, required
      - `expWinRate` number, required
    - `wnxExpected` object, nullable, required
      - `damage` number, required
      - `frags` number, required
      - `spots` number, required
      - `assist` number, required
  - `catalog` TankCompareCatalog, required: The mountable catalogues shared by the compared vehicles, described once: every device, directive, consumable and crew skill any of them can mount. Each vehicle references them by key.
    - `equipment` LoadoutEquipment[], required
      - `key` string, required
      - `name` string, required
      - `description` string, required: The device's in-game description, from the client localization.
      - `descriptionKey` string, required: The client catalogue entry that description came from, which is not always the device's own key: a grade variant carries the base device's. A reader's language resolves the blurb through this.
      - `image` string, nullable, required
      - `grade` 'standard' | 'bond' | 'bounty' | 'bountyUpgraded' | 'experimental', required: Acquisition grade: standard (credits), bond (improved), bounty, bountyUpgraded or experimental.
      - `icon` string, required: wot-src family icon; the directive/equipment family key.
      - `categories` string[], required: Equipment 2.0 categories (firepower, mobility, survivability, stealth).
      - `effects` EquipmentEffect[], required
        - `attribute` string, required
        - `type` 'mul' | 'add', required
        - `base` number, required
        - `bonus` number, required: Value applied when the slot's category matches (Equipment 2.0).
    - `directives` LoadoutDirective[], required
      - `key` string, required
      - `equipmentIcon` string, required: The equipment family (its `icon`) an equipment directive enhances; empty for crew directives. Any mounted device of that family enables it.
      - `name` string, required
      - `description` string, required: The directive's in-game description, from the client localization.
      - `image` string, nullable, required
      - `attribute` string, required
      - `type` 'mul' | 'add', required
      - `value` number, required
      - `crew` boolean, required: A crew directive (boosts a crew skill, always mountable) rather than an equipment directive.
      - `boostKind` 'level' | 'efficiency', nullable, required: Crew directives: scales the boosted skill's effective level or its efficiency.
      - `boostValue` number, required
      - `effects` object[], required: The boosted skill's per-level spec effects.
        - `attribute` string, required
        - `value` number, required
      - `camouflage` boolean, required
      - `commander` boolean, required
    - `consumables` LoadoutConsumable[], required
      - `key` string, required
      - `name` string, required
      - `description` string, required: The consumable's in-game description, from the client localization.
      - `image` string, nullable, required
      - `effects` object[], required: Passive multiplicative effects on a characteristic (fuel, extinguisher, ...); empty for repair/first-aid kits and crew rations.
        - `attribute` string, required
        - `value` number, required
    - `crewSkills` CrewSkill[], required
      - `key` string, required
      - `name` string, required
      - `image` string, nullable, required
      - `description` string, required
      - `isPerk` boolean, required
      - `role` string, required: Owning role (commander, gunner, ...) or 'common' (universal).
      - `effects` object[], required: Passive per-skill-level effects on a displayed characteristic; empty for situational or non-spec skills (still shown, no delta).
        - `attribute` string, required
        - `value` number, required
      - `crewLevel` number, required: Crew-training-level bonus in level points (Brothers in Arms = 5), 0 for a normal skill; applied to every crew-affected stat, not a single one.
      - `camouflage` boolean, required: The Camouflage skill: scales the camo values by 0.57 + 0.43 * level, applied to camo rather than a single characteristic.
  - `ranges` object, required: Where each specification sits across the whole vehicle catalogue, as its 5th (`low`) and 95th (`high`) percentile, keyed by specification field. Percentiles rather than min/max so a single outlier vehicle doesn't flatten the scale. Lets a client read a value as a position in the catalogue (and score a vehicle per category) rather than as a bare number.

---

[API](https://skmtc.dev/unicum/apis/unicum-gg-api.md) · [All operations](https://skmtc.dev/unicum/apis/unicum-gg-api/llms.txt) · [OpenAPI document](https://skmtc.dev/unicum/apis/unicum-gg-api/revisions/7a7d79a26001?raw)
