Per-player CS2 depth breakdowns for one match
The five CS2 depth breakdowns for one match, grouped into a single object: per-player `weapons`, `grenades`, `hitgroups` (body hit-group distribution), `duels` (the killer→victim kills matrix) and `flashes` (the flasher→flashed blind matrix). These are per-MATCH aggregates (not per map). Each group is a flat array whose elements carry their own `player_id` (and, for duels/flashes, the ordered pair of player ids), so a client groups by player itself. A match with no depth on record (older or lower-tier matches — roughly one in six lack it) returns every group as an empty array (never null); an unknown match id does the same. Single-resource envelope: `{"data": {weapons, grenades, hitgroups, duels, flashes}}`.
The five CS2 depth breakdowns for one match, grouped into a single object: per-player weapons, grenades, hitgroups (body hit-group distribution), duels (the killer→victim kills matrix) and flashes (the flasher→flashed blind matrix). These are per-MATCH aggregates (not per map). Each group is a flat array whose elements carry their own player_id (and, for duels/flashes, the ordered pair of player ids), so a client groups by player itself. A match with no depth on record (older or lower-tier matches — roughly one in six lack it) returns every group as an empty array (never null); an unknown match id does the same. Single-resource envelope: {"data": {weapons, grenades, hitgroups, duels, flashes}}.
Primary auth (live). Authorization: Bearer <api-key> — the header takes precedence over the query fallback. The raw key is hashed (SHA-256, hex) and looked up in api.keys.key_hash; the raw value is never stored.
In: header
Path Parameters
Game slug. cs2 is the only populated title today; an un-onboarded game 404s cleanly.
Resource identifier. UUID today; slug-or-UUID (TARGET) — a human slug (e.g. navi, s1mple) resolves to the same row, scoped to {game}.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/cs2/matches/018f9c7e-8b2a-7e3d-9f10-2a4b6c8d0e1f/depth"{ "data": { "weapons": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "match_id": "89006248-1085-4089-ad02-d2cbc517e718", "player_id": "f8b23bf6-c56d-4f96-b79c-96d80504663d", "weapon_slug": "ak-47", "weapon_name": "AK-47", "weapon_class": "Rifle", "team_side": "ct", "shots": 0, "hits": 0, "kills": 0, "headshots": 0, "damage": 0, "wall_bangs": 0, "trade_kills": 0, "created_at": "2019-08-24T14:15:22Z" } ], "grenades": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "match_id": "89006248-1085-4089-ad02-d2cbc517e718", "player_id": "f8b23bf6-c56d-4f96-b79c-96d80504663d", "grenade_name": "Flashbang", "team_side": "ct", "owns": 0, "throws": 0, "hits": 0, "kills": 0, "created_at": "2019-08-24T14:15:22Z" } ], "hitgroups": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "match_id": "89006248-1085-4089-ad02-d2cbc517e718", "player_id": "f8b23bf6-c56d-4f96-b79c-96d80504663d", "hit_group": "Head", "team_side": "ct", "hits": 0, "damage": 0, "kills": 0, "created_at": "2019-08-24T14:15:22Z" } ], "duels": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "match_id": "89006248-1085-4089-ad02-d2cbc517e718", "killer_player_id": "ad7c60a5-2623-46f1-b124-4e93958dc113", "victim_player_id": "0c172423-c413-4659-a242-11dc710723e8", "kills": 0, "weapon_names": "AK-47, AWP", "created_at": "2019-08-24T14:15:22Z" } ], "flashes": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "match_id": "89006248-1085-4089-ad02-d2cbc517e718", "flasher_player_id": "c138fd68-2d7a-44e0-99c7-69107c4ecc15", "flashed_player_id": "c40f16d1-1ccc-41da-80b1-94a7efb3c1c2", "count": 0, "duration_ns": 0, "created_at": "2019-08-24T14:15:22Z" } ] }}{ "error": { "code": "not_found", "message": "not found", "request_id": "018f9c7e-8b2a-7e3d-9f10-2a4b6c8d0e1f" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "018f9c7e-8b2a-7e3d-9f10-2a4b6c8d0e1f" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "018f9c7e-8b2a-7e3d-9f10-2a4b6c8d0e1f" }}