Go to article Go to contents Go to chapter navigation

sOU uses cookies for sign-in and form protection. There are no analytics or advertising cookies and no third-party tracking.

You can continue immediately. Only if you choose “Hide notice for 180 days” do we also store this preference in your browser.

Complete HUD type reference

All public fields, data types and enum values of the HUD schema, plus downloadable type definitions.

Updated: 23 October 2026 · approx. 9 minute read

This reference contains all public types, fields and enum values of the HUD contract from the bundled SDK. TypeScript notation describes the JSON data; using TypeScript is not required. For sources, timing and domain meaning, read the HUD API guide.

Download complete type definitions (contracts.d.ts)

Read the reference

A value marked | null may be absent. Array<T> represents a list and Record<K, V> a mapping. Closed sets of states are listed as literal string values. unknown represents an unknown state and is different from null. Data is transmitted in camelCase. Numeric fields containing Seconds are measured in seconds. This contract file belongs to the SDK version documented on this website; use matching contracts and clients for your HUD.

BombState

export interface BombState {
  state: BombStatus | null;
  playerSteamId: string | null;
  position: Vector3State | null;
  secondsRemaining: number | null;
}

BombStatus

export type BombStatus = "unknown" | "carried" | "dropped" | "planting" | "planted" | "defusing" | "defused" | "exploded";

CompetitionSectionKind

export type CompetitionSectionKind = "unknown" | "region" | "division" | "phase" | "group" | "round" | "other";

CountdownPhase

export type CountdownPhase = "unknown" | "warmup" | "freezeTime" | "live" | "over" | "bomb" | "defuse" | "timeoutCounterTerrorists" | "timeoutTerrorists" | "paused" | "gameOver";

CountdownState

export interface CountdownState {
  phase: CountdownPhase | null;
  secondsRemaining: number | null;
}

DataFreshness

export type DataFreshness = "unknown" | "waiting" | "live" | "stale" | "disconnected";

DraftStatus

export type DraftStatus = "unknown" | "live";

DraftTeam

export interface DraftTeam {
  id: number | null;
  name: string | null;
}

FeedConnectionStatus

export type FeedConnectionStatus = "unknown" | "connecting" | "connected" | "disconnected";

FlamePoint

export interface FlamePoint {
  id: string;
  position: Vector3State;
}

GameMode

export type GameMode = "unknown" | "competitive" | "casual" | "deathmatch" | "wingman" | "armsRace" | "demolition" | "custom" | "cooperative" | "skirmish" | "training" | "scrimCompetitive5v5";

GameState

export interface GameState {
  map: string | null;
  phase: MatchPhase | null;
  roundNumber: number | null;
  roundPhase: RoundPhase | null;
  ct: SideState | null;
  t: SideState | null;
  observedPlayer: PlayerState | null;
  players: Array<PlayerState>;
  managedMatch: ManagedMatch | null;
  radar: RadarState | null;
  killFeed: Array<KillFeedEntry>;
  mapKind: MapKind | null;
  provider: ProviderState | null;
  tournamentDraft: TournamentDraftState | null;
  matchesToWinSeries: number | null;
  currentSpectators: number | null;
  souvenirsTotal: number | null;
  roundWinReason: RoundWinReason | null;
  availableSections: Array<GsiSection>;
  currentPlayer: PlayerState | null;
  mode: GameMode | null;
  roundWinner: TeamSide | null;
  roundBomb: BombStatus | null;
  roundWins: Array<RoundResult> | null;
  countdown: CountdownState | null;
  bomb: BombState | null;
  grenades: Array<GrenadeState> | null;
}

GrenadeKind

export type GrenadeKind = "unknown" | "smoke" | "flashbang" | "highExplosive" | "molotov" | "incendiary" | "decoy" | "inferno" | "firebomb";

GrenadeState

export interface GrenadeState {
  id: string;
  type: GrenadeKind | null;
  ownerSteamId: string | null;
  position: Vector3State | null;
  velocity: Vector3State | null;
  lifetimeSeconds: number | null;
  effectTimeSeconds: number | null;
  flames: Array<FlamePoint> | null;
}

GsiSection

export type GsiSection = "unknown" | "provider" | "map" | "round" | "player" | "allPlayers" | "phaseCountdowns" | "bomb" | "grenades" | "tournamentDraft";

HudPanelAction

export interface HudPanelAction {
  id: string;
  section: string;
  name: string;
  value: string | null;
}

HudPanelChoice

export interface HudPanelChoice {
  name: string;
  label: string;
}

HudPanelFieldType

export type HudPanelFieldType = "text" | "checkbox" | "select" | "player" | "team" | "match" | "image" | "images" | "action";

HudPanelInput

export interface HudPanelInput {
  type: HudPanelFieldType;
  name: string;
  label: string;
  values: Array<HudPanelChoice> | null;
}

HudPanelMessage

export interface HudPanelMessage {
  hudId: string;
  version: string;
  state: HudPanelState | null;
  action: HudPanelAction | null;
}

HudPanelReference

export interface HudPanelReference {
  id: string;
  name: string | null;
  image: string | null;
  teamId: string | null;
  missing: boolean;
}

HudPanelSection

export interface HudPanelSection {
  name: string;
  label: string;
  inputs: Array<HudPanelInput>;
}

HudPanelState

export interface HudPanelState {
  revision: number;
  values: Record<string, Record<string, unknown>>;
  references: Record<string, Record<string, HudPanelReference>>;
}

KillFeedEntry

export interface KillFeedEntry {
  id: number;
  connectionId: string;
  epoch: number;
  gameTimeSeconds: number;
  killer: KillParticipant | null;
  victim: KillParticipant;
  assister: KillParticipant | null;
  weapon: string;
  weaponKind: WeaponKind;
  flashAssist: boolean;
  headshot: boolean;
  wallbang: boolean;
  attackerBlind: boolean;
  throughSmoke: boolean;
  noScope: boolean;
}

KillParticipant

export interface KillParticipant {
  entityIndex: number;
  steamId: string | null;
  name: string | null;
  side: TeamSide | null;
}

LiveSnapshot

export interface LiveSnapshot {
  schemaVersion: number;
  sessionId: string;
  revision: number;
  receivedAt: string | null;
  freshness: DataFreshness;
  game: GameState | null;
  managedMatch: ManagedMatch | null;
}

LocalDiagnostics

export interface LocalDiagnostics {
  accepted: number;
  rejected: number;
  subscribers: number;
  snapshot: LiveSnapshot;
}

ManagedCompetition

export interface ManagedCompetition {
  id: string;
  name: string;
  seasonId: string | null;
  seasonName: string | null;
  sections: Array<ManagedCompetitionSection>;
  round: string | null;
  logo: string | null;
  sponsors: Array<ManagedCompetitionSponsor> | null;
  sectionId: string | null;
  structure: ManagedCompetitionStructure | null;
}

ManagedCompetitionSeason

export interface ManagedCompetitionSeason {
  id: string;
  competitionId: string;
  name: string;
}

ManagedCompetitionSection

export interface ManagedCompetitionSection {
  id: string;
  name: string;
  kind: CompetitionSectionKind;
}

ManagedCompetitionSponsor

export interface ManagedCompetitionSponsor {
  id: string;
  name: string;
  image: string;
}

ManagedCompetitionStructure

export interface ManagedCompetitionStructure {
  seasons: Array<ManagedCompetitionSeason>;
  sections: Array<ManagedCompetitionStructureSection>;
}

ManagedCompetitionStructureSection

export interface ManagedCompetitionStructureSection {
  id: string;
  competitionId: string;
  seasonId: string | null;
  parentId: string | null;
  name: string;
  kind: CompetitionSectionKind;
}

ManagedMatch

export interface ManagedMatch {
  id: string;
  name: string;
  bestOf: number;
  teamA: ManagedTeam;
  teamB: ManagedTeam;
  ct: TeamSideResolution;
  t: TeamSideResolution;
  startsAt: string | null;
  maps: Array<ManagedMatchMap>;
  vetos: Array<ManagedVeto>;
  competition: ManagedCompetition | null;
}

ManagedMatchMap

export interface ManagedMatchMap {
  id: string;
  name: string;
  gameName: string;
  number: number;
  kind: MapKind | null;
  status: MapResultStatus | null;
  scoreA: number | null;
  scoreB: number | null;
  winnerTeamId: string | null;
}

ManagedTeam

export interface ManagedTeam {
  id: string;
  name: string;
  shortName: string;
  logo: string | null;
  seriesWins: number;
}

ManagedVeto

export interface ManagedVeto {
  mapId: string;
  name: string;
  gameName: string;
  type: MapDecisionKind;
  teamId: string | null;
  number: number;
  playNumber: number | null;
}

MapDecisionKind

export type MapDecisionKind = "unknown" | "pick" | "ban" | "decider";

MapKind

export type MapKind = "unknown" | "dust2" | "mirage" | "inferno" | "nuke" | "overpass" | "ancient" | "anubis" | "vertigo" | "train" | "cache" | "office" | "italy" | "assault" | "aztec" | "cobblestone" | "tuscan" | "canals" | "agency" | "baggage" | "shoots" | "lake" | "safehouse" | "shortDust" | "shortNuke" | "rialto" | "stMarc" | "bank" | "sugarcane" | "monastery" | "dizzy";

MapResultStatus

export type MapResultStatus = "unknown" | "pending" | "live" | "completed";

MatchPhase

export type MatchPhase = "unknown" | "warmup" | "live" | "intermission" | "gameOver";

MatchStats

export interface MatchStats {
  kills: number | null;
  assists: number | null;
  deaths: number | null;
  mvps: number | null;
  score: number | null;
}

PlayerActivity

export type PlayerActivity = "unknown" | "menu" | "playing" | "textInput";

PlayerState

export interface PlayerState {
  steamId: string | null;
  name: string | null;
  side: TeamSide | null;
  activity: PlayerActivity | null;
  health: number | null;
  activeWeapon: WeaponState | null;
  isAlive: boolean | null;
  clan: string | null;
  xpOverloadLevel: number | null;
  spectationTargetSteamId: string | null;
  observerSlot: number | null;
  armor: number | null;
  helmet: boolean | null;
  defuseKit: boolean | null;
  money: number | null;
  equipmentValue: number | null;
  flashed: number | null;
  smoked: number | null;
  burning: number | null;
  roundKills: number | null;
  roundHeadshotKills: number | null;
  roundDamage: number | null;
  position: Vector3State | null;
  forward: Vector3State | null;
  stats: MatchStats | null;
  recordedStats: RecordedPlayerStats | null;
  weapons: Array<WeaponState> | null;
}

ProviderState

export interface ProviderState {
  name: string | null;
  appId: number;
  version: number | null;
  steamId: string | null;
  timestampUnixSeconds: number | null;
}

RadarPlayer

export interface RadarPlayer {
  steamId: string;
  pawnHandle: number;
  position: Vector3State;
  forward: Vector3State;
  health: number;
}

RadarState

export interface RadarState {
  connectionId: string;
  epoch: number;
  sequence: number;
  gameTimeSeconds: number;
  receivedAt: string;
  players: Array<RadarPlayer>;
}

RecordedPlayerStats

export interface RecordedPlayerStats {
  rounds: number;
  damage: number;
  kills: number;
  headshotKills: number;
  coversWholeMatch: boolean;
  headshotPercentage: number | null;
  averageDamagePerRound: number | null;
}

RoundPhase

export type RoundPhase = "unknown" | "freezeTime" | "live" | "over";

RoundResult

export interface RoundResult {
  roundNumber: number;
  winner: TeamSide;
  reason: RoundWinReason;
}

RoundWinReason

export type RoundWinReason = "unknown" | "elimination" | "bombExploded" | "bombDefused" | "timeExpired" | "hostageRescued";

SideState

export interface SideState {
  name: string | null;
  score: number | null;
  flag: string | null;
  consecutiveRoundLosses: number | null;
  timeoutsRemaining: number | null;
  matchesWon: number | null;
}

TeamRecognitionStatus

export type TeamRecognitionStatus = "unknown" | "noMatch" | "tied" | "conflicting" | "recognized" | "inferred" | "manual";

TeamSide

export type TeamSide = "unknown" | "counterTerrorists" | "terrorists" | "spectator";

TeamSideResolution

export interface TeamSideResolution {
  side: TeamSide;
  status: TeamRecognitionStatus;
  teamId: string | null;
  teamAScore: number;
  teamBScore: number;
}

TournamentDraftState

export interface TournamentDraftState {
  state: DraftStatus | null;
  eventId: number | null;
  eventName: string | null;
  stageId: number | null;
  stageName: string | null;
  firstTeam: DraftTeam;
  secondTeam: DraftTeam;
}

Vector3State

export interface Vector3State {
  x: number;
  y: number;
  z: number;
}

WeaponCategory

export type WeaponCategory = "unknown" | "knife" | "pistol" | "submachineGun" | "rifle" | "sniperRifle" | "shotgun" | "machineGun" | "grenade" | "bomb" | "equipment" | "stackableItem" | "tablet" | "fists" | "breachCharge" | "melee";

WeaponKind

export type WeaponKind = "unknown" | "ak47" | "aug" | "awp" | "bayonet" | "ppBizon" | "c4" | "cz75Auto" | "desertEagle" | "decoy" | "dualBerettas" | "famas" | "fiveSeven" | "flashbang" | "g3Sg1" | "galilAr" | "glock18" | "healthshot" | "highExplosiveGrenade" | "p2000" | "incendiaryGrenade" | "defaultCtKnife" | "butterflyKnife" | "survivalKnife" | "paracordKnife" | "classicKnife" | "falchionKnife" | "flipKnife" | "gutKnife" | "navajaKnife" | "karambit" | "kukriKnife" | "m9Bayonet" | "nomadKnife" | "shadowDaggers" | "skeletonKnife" | "stilettoKnife" | "bowieKnife" | "defaultTKnife" | "huntsmanKnife" | "ursusKnife" | "talonKnife" | "goldenKnife" | "m249" | "m4A4" | "m4A1S" | "mac10" | "mag7" | "molotov" | "mp5Sd" | "mp7" | "mp9" | "negev" | "nova" | "p250" | "p90" | "r8Revolver" | "sawedOff" | "scar20" | "sg553" | "smokeGrenade" | "ssg08" | "zeusX27" | "tec9" | "ump45" | "uspS" | "xm1014";

WeaponState

export interface WeaponState {
  slot: string;
  name: string | null;
  type: WeaponCategory | null;
  state: WeaponStatus | null;
  paintKit: string | null;
  ammoClip: number | null;
  ammoClipMax: number | null;
  ammoReserve: number | null;
  kind: WeaponKind | null;
}

WeaponStatus

export type WeaponStatus = "unknown" | "active" | "holstered" | "reloading";
Back to top

Image viewer