Blog · Technical

How CS2 Game State Integration (GSI) Works

A technical breakdown of CS2 GSI — the system that powers live overlay data. What data it provides, how to configure it, and how tools like CutROOM use it for real-time broadcast graphics.

What is CS2 Game State Integration?

Game State Integration (GSI) is a built-in feature in Counter-Strike 2 (inherited from CSGO) that sends live match data to an external application via HTTP POST requests. When configured, CS2 broadcasts a JSON payload to a specified URL every time a significant game event occurs.

This allows third-party applications — like CutROOM — to receive and react to live game data without any reverse engineering, game modification, or unofficial APIs. GSI is an officially supported, documented feature intended for use by third-party broadcast tools and analysis applications.

How GSI Sends Data

CS2 acts as the HTTP client. It sends POST requests to the URL specified in the GSI config file. The receiving application (CutROOM) acts as the HTTP server, listening on the configured port. This is a push model: CS2 pushes data to CutROOM; CutROOM does not poll CS2.

Data is sent at the game's tick rate (up to 128 ticks/second on high-performance servers) with a minimum heartbeat interval. The payload is always a complete JSON snapshot of the current game state — not a diff.

The GSI JSON Payload

A typical GSI payload contains these top-level objects:

{
  "provider": { "name": "CS2", "appid": 730, ... },
  "map": {
    "mode": "competitive",
    "name": "de_mirage",
    "phase": "live",
    "round": 14,
    "team_ct": { "score": 8, "name": "Team A" },
    "team_t": { "score": 6, "name": "Team B" }
  },
  "round": {
    "phase": "live",
    "bomb": "planted"
  },
  "player": {
    "steamid": "...",
    "state": { "health": 87, "armor": 100, "helmet": true, ... },
    "weapons": { "weapon_0": { "name": "weapon_ak47", "ammo_clip": 24, ... } }
  },
  "allplayers": {
    "STEAMID_1": { ... },
    "STEAMID_2": { ... },
    ...
  }
}

The allplayers Object

The allplayers field is the most powerful data structure in the GSI payload — it is only available when in spectator mode. It contains per-player data for all 10 players simultaneously:

  • Player name, Steam ID, team assignment
  • Health, armor, helmet status
  • Full weapon inventory with ammo
  • Match stats (kills, assists, deaths, ADR)
  • World position (X, Y, Z) and facing vector
  • Current cash balance and equipment value
  • Active/dead/spectating status

This is what makes broadcast overlays possible — a single GSI event gives CutROOM complete visibility into all 10 players' states simultaneously.

Event-Driven vs Polling

GSI is event-driven from CS2's side. CS2 only sends a payload when the game state changes. Between events (e.g. during the buy phase when nothing is happening), no data is sent. The heartbeat interval (typically 30 seconds) ensures the connection stays alive.

This means CutROOM's overlay data is always current as of the last GSI event — there is no polling delay. When a player gets killed, CS2 fires a GSI event immediately, and the overlay updates before the end of the current server tick.

GSI Config File Parameters

  • uri — The URL CS2 sends data to (e.g. http://localhost:31337/)
  • timeout — How long CS2 waits for an HTTP response before giving up
  • heartbeat — How often CS2 sends data even if nothing changed
  • auth.token — Optional security token to validate incoming requests
  • data.* — Which data categories to include in the payload (set to "1" to enable)

GSI Security Considerations

The GSI endpoint is a local HTTP server. In a single-PC setup, it is only accessible from localhost. In a multi-PC setup where GSI points to another machine's IP, ensure the network is trusted and the receiving port is not exposed to the internet.

CutROOM validates the auth token in every incoming GSI request to ensure data is coming from the expected CS2 instance.

Differences Between CS2 and CSGO GSI

CS2's GSI format is largely compatible with CSGO's format, with additions:

  • Richer weapon data (attachments, inspect states)
  • Improved player position accuracy
  • New map phase values (intermission, gameover)
  • Additional match metadata (tournament name field support)

For the full technical overlay implementation guide, see CS2 Overlay Technical Guide.

Ready to broadcast CS2 like a pro?

Join casters and tournament operators who use CutROOM every day.

Get Started — €9.99/mo