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";