Stats API do Rocket League

Este documento descreve os recursos da API de dados do jogo do Rocket League. Primeiro, os jogadores devem solicitar ao jogo que ative esse recurso editando o arquivo TAStatsAPI.ini (ou DefaultStatsAPI.ini, se não existir), conforme explicado abaixo. Uma vez ativado, esse recurso abrirá um socket TCP e/ou web no computador do jogador que transmitirá dados e eventos do jogo e receberá certos comandos. Programas de terceiros podem utilizar esses dados para alimentar uma variedade de aplicações, como interfaces personalizadas para transmissores.

Visão geral

A Stats API transmite mensagens JSON por meio de um socket local enquanto uma partita está em andamento. As mensagens são enviadas tanto em intervalos configuráveis quanto ao ocorrerem eventos específicos na partida. Os dados do evento são sempre transmitidos no mesmo tick em que o evento ocorre, independentemente da PacketSendRate do usuário.
Observação: Todas as configurações devem ser feitas antes da inicialização do cliente — alterações no arquivo .ini enquanto o cliente estiver em execução exigem uma reinicialização.
Visibilidade do campo:
  • Campos marcados CONDICIONAL só estão presentes quando relevante.
  • Campos marcados ESPECTADOR são enviadas apenas ao assistir.
  • Campos marcados EQUIPE só são enviadas quando você está no mesmo grupo que o jogador descrito por elas.
  • Campos marcados REPLAY são relevantes apenas durante replays.

Configuração

Edite <Install Dir>\TAGame\Config\TAStatsAPI.ini (ou DefaultStatsAPI.ini, se não existir) na seção [TAGame.MatchStatsExporter_TA] antes de iniciar o cliente.
ConfiguraçãoTipoPadrãoDescrição
PacketSendRatefloat0 (desativado)Número de pacotes UpdateState transmitidos por segundo. Limite de 120; 0 desabilita o recurso.
Portint49123Porta local na qual o cliente escuta para conexões TCP. Defina como 0 para desabilitar. Deve ser diferente de WebPort.
WebPortint49124Porta local na qual o cliente escuta para abrir um WebSocket. Defina como 0 para desabilitar. Deve ser diferente da Porta.

Formato da mensagem

Toda mensagem segue esta estrutura de envelopamento:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

Enviado X vezes por segundo, com base na preferência PacketSendRate do jogador.

Exemplo

{
  "Event": "UpdateState",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "PrimaryId": "Steam|123|0",
        "Shortcut": 1,
        "TeamNum": 0,
        "Score": 125,
        "Goals": 1,
        "Shots": 2,
        "Assists": 0,
        "Saves": 1,
        "Touches": 14,
        "CarTouches": 3,
        "Demos": 0,
        "Loadout": [
          "body_grain",
          "Skin_bartees",
          "Wheel_SoccerBall",
          "Boost_AlphaReward",
          "None",
          "None"
        ],
        "bHasCar": true,
        "Speed": 1200,
        "Boost": 45,
        "bBoosting": true,
        "bOnGround": true,
        "bOnWall": false,
        "bPowersliding": false,
        "bDemolished": true,
        "Attacker": {
          "Name": "PlayerB",
          "Shortcut": 2,
          "TeamNum": 1
        },
        "bSupersonic": true,
        "PickupClass": "SpecialPickup_GrapplingHook_TA"
      }
    ],
    "Game": {
      "Teams": [
        {
          "Name": "Blue",
          "TeamNum": 0,
          "Score": 1,
          "ColorPrimary": "0000FF",
          "ColorSecondary": "0000AA"
        }
      ],
      "PlaylistId": 11,
      "TimeSeconds": 180,
      "bOvertime": false,
      "Frame": 120,
      "Elapsed": 50.2,
      "Ball": {
        "Speed": 850.5,
        "TeamNum": 0
      },
      "bReplay": false,
      "bHasWinner": true,
      "Winner": "Blue",
      "Arena": "Stadium_P",
      "bHasTarget": true,
      "Target": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    }
  }
}
CampoTipoDescrição
PlayersarrayUma entrada por jogador na partida.
NamestringNome de exibição.
PrimaryIdstringIdentificador da plataforma no formato Plataforma|Uid|Splitscreen (por exemplo, "Steam|123|0", "Epic|456|0").
ShortcutintNúmero do atalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
ScoreintPontuação total da partida.
GoalsintGols marcados nesta partida.
ShotsintTentativas de chute nesta partida.
AssistsintAssistências conquistadas nesta partida.
SavesintDefesas realizadas nesta partida.
TouchesintTotal de toques de bola.
CarTouchesintToques feitos pelo chassi do carro (não pela bola).
DemosintDemolições realizadas.
Loadoutarray<string>Nomes dos recursos do equipamento equipado para a equipe atual do jogador, ordenados por slot de produto.
bHasCarboolESPECTADORVerdadeiro se o jogador tiver um veículo.
SpeedfloatESPECTADORVelocidade do veículo em Unidades Unreal/segundo.
BoostintESPECTADORQuantidade de Impulsos 0–100.
bBoostingboolESPECTADORVerdadeiro se o jogador estiver impulsionando no momento.
bOnGroundboolESPECTADORVerdadeiro se pelo menos 3 rodas estiverem em contato com o mundo.
bOnWallboolESPECTADORVerdadeiro se o veículo estiver em uma parede.
bPowerslidingboolESPECTADORVerdadeiro se o jogador estiver segurando o freio de mão.
bDemolishedboolESPECTADORVerdadeiro se o veículo estiver destruído no momento.
bSupersonicboolESPECTADORVerdadeiro se o veículo estiver em velocidade supersônica.
PickupClassstringESPECTADORNome da classe do item de Rumble disponível para o jogador. Omitido quando não estiver jogando com poderes de Rumble.
AttackerobjectCONDICIONALO jogador que demoliu este jogador. Presente apenas quando há uma demolição.
NamestringNome do jogador que demoliu este jogador.
ShortcutintAtalho para espectador do atacante.
TeamNumintÍndice da equipe do atacante.
GameobjectMetadados da partida.
TeamsarrayUma entrada por equipe, ordenada por TeamNum.
NamestringNome da equipe.
TeamNumintÍndice da equipe.
ScoreintContagem de gols da equipe.
ColorPrimarystringCódigo de cor hexagonal (sem #) para a cor primária da equipe.
ColorSecondarystringCódigo de cor hexagonal para a cor secundária da equipe.
PlaylistIdintID da Lista de partidas da partida atual.
TimeSecondsintSegundos restantes na partida.
bOvertimeboolVerdadeiro se a partida estiver em prorrogação.
BallobjectEstado atual da bola.
SpeedfloatVelocidade atual da bola em Unidades Unreal/segundo.
TeamNumintÍndice da última equipe a tocar a bola. 255 se a bola não foi tocada.
bReplayboolVerdadeiro se um replay do gol ou replay de histórico estiver ativo.
bHasWinnerboolVerdadeiro se uma equipe venceu.
WinnerstringNome da equipe vencedora. Linha vazia se ainda não há vencedores.
ArenastringNome do ativo do mapa atual (por exemplo, "Stadium_P").
bHasTargetboolVerdadeiro se o cliente estiver visualizando um veículo específico no momento.
TargetobjectCONDICIONALPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNome do jogador sendo visualizado.
ShortcutintAtalho para espectador do jogador visualizado.
TeamNumintÍndice de equipe do jogador visualizado.
FrameintCONDICIONALNúmero do quadro atual se um replay estiver ativo.
ElapsedfloatCONDICIONALSegundos decorridos desde o início do jogo se um replay estiver ativo.

Eventos

Enviado um quadro após a bola ser atingida.

Exemplo

{
  "Event": "BallHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    ],
    "Ball": {
      "PreHitSpeed": 0,
      "PostHitSpeed": 1450.2,
      "Location": {
        "X": -512,
        "Y": 100,
        "Z": 200
      }
    }
  }
}
CampoTipoDescrição
PlayersarrayJogadores que atingem a bola no quadro.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
BallobjectEstado da bola no momento do acerto.
PreHitSpeedfloatVelocidade da bola antes do acerto (Unidades Unreal/segundo).
PostHitSpeedfloatVelocidade da bola após o acerto (Unidades Unreal/segundo).
LocationvectorPosição no mundo (X, Y, Z) da bola no impacto.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

ESPECTADOR
Enviado quando um veículo coleta um painel de impulso ou pílula.

Exemplo

{
  "Event": "BoostPickup",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Player": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "Location": {
      "X": -3072,
      "Y": 0,
      "Z": 73
    },
    "BoostAmount": 100,
    "BoostType": "BoostType_Pill",
    "bReplay": false
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
PlayerobjectO jogador que coletou o impulso.
NamestringNome de exibição.
ShortcutintNúmero do atalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
LocationvectorLocalização no mundo do item, como { X, Y, Z }.
BoostAmountfloatQuantidade de impulso concedido pela coleta.
BoostTypestringClasse de coleta: BoostType_Pad (painel pequeno), BoostType_Pill (impulso completo/grande).
bReplayboolVerdadeiro se a coleta ocorreu durante a reprodução do replay.

Enviado quando o relógio do jogo muda.

Exemplo

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
CampoTipoDescrição
TimeSecondsintSegundos restantes na partida.
bOvertimeboolVerdadeiro se o jogo estiver em prorrogação.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado no início de cada rodada, quando a contagem regressiva começa.

Exemplo

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando a bola bate na trave.

Exemplo

{
  "Event": "CrossbarHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "BallLocation": {
      "X": 120,
      "Y": -2944,
      "Z": 320
    },
    "BallSpeed": 870.3,
    "ImpactForce": 127.5,
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 120
    }
  }
}
CampoTipoDescrição
BallSpeedfloatVelocidade da bola no impacto.
ImpactForcefloatForça do impacto da bola relativo ao normal da trave.
BallLastTouchobjectO último toque da bola antes de acertar a trave.
PlayerobjectO jogador que fez o último toque.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
SpeedfloatVelocidade da bola resultante do acerto.
BallLocationvectorPosição no mundo (X, Y, Z) da bola quando ocorreu o impacto.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o replay de um gol termina.

Exemplo

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o replay de um gol começa.

Exemplo

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Exibido quando a bola explode durante o replay de um gol. Se o replay for ignorado, este evento não será acionado.

Exemplo

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando um gol é marcado.

Exemplo

{
  "Event": "GoalScored",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "GoalSpeed": 87.3,
    "GoalTime": 127.5,
    "ImpactLocation": {
      "X": 0,
      "Y": -2944,
      "Z": 320
    },
    "Scorer": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "Assister": {
      "Name": "PlayerC",
      "Shortcut": 3,
      "TeamNum": 0
    },
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 125
    }
  }
}
CampoTipoDescrição
GoalSpeedfloatVelocidade da bola (Unidades Unreal/segundo) ao cruzar a linha do gol.
GoalTimefloatDuração da rodada anterior em segundos.
ImpactLocationvectorPosição no mundo (X, Y, Z) da bola quando o gol foi marcado.
ScorerobjectO jogador que marcou o gol.
NamestringNome de exibição do marcador.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe do marcador.
BallLastTouchobjectO último toque da bola antes do gol.
PlayerobjectO jogador que fez o último toque.
NamestringNome do último jogador a tocar a bola.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe.
SpeedfloatVelocidade da bola resultante do toque.
AssisterobjectCONDICIONALMesma forma que o Scorer. Presente apenas quando uma assistência foi registrada.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando todas as equipes são criadas e replicadas.

Exemplo

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado ao sair do jogo.

Exemplo

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando a partida termina e o vencedor é definido.

Exemplo

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
WinnerTeamNumintÍndice de equipe da equipe vencedora.

Enviado quando a primeira contagem regressiva começa.

Exemplo

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o jogo é pausado por um administrador da partida.

Exemplo

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o jogo é retomado por um administrador da partida.

Exemplo

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando um jogador é adicionado à partida atual.

Exemplo

{
  "Event": "PlayerJoined",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "PlayerName": "PlayerA",
    "PrimaryId": "Steam|123|0"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
PlayerNamestringNome de exibição do jogador que entrou.
PrimaryIdstringIdentificador da plataforma no formato Plataforma|Uid|Splitscreen (por exemplo, "Steam|123|0", "Epic|456|0").

Enviado quando um jogador é removido da partida atual.

Exemplo

{
  "Event": "PlayerLeft",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "PlayerName": "PlayerA",
    "PrimaryId": "Steam|123|0"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
PlayerNamestringNome de exibição do jogador que saiu.
PrimaryIdstringIdentificador da plataforma no formato Plataforma|Uid|Splitscreen (por exemplo, "Steam|123|0", "Epic|456|0").

Enviado quando o jogo entra na fase de pódio após o término da partida.

Exemplo

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando um replay é iniciado. Não se aplica a replays de gols, apenas aos replays carregados pelo menu "Histórico da partida".

Exemplo

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "FileName": "Stadium_P_2026-06-05_18-42",
    "Date": "2026-06-05 18:42:13"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
FileNamestringNome do arquivo do replay.
DatestringCarimbo de data/hora de criação do replay.

Enviado quando o jogo entra no estado ativo (após o término da contagem regressiva).

Exemplo

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando alguém ganha uma estatística.

Exemplo

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
CampoTipoDescrição
EventNamestringNome do ativo do StatEvent (por exemplo, "Demolish", "Save").
TypestringRótulo de exibição localizado para a estatística (por exemplo, "Demolition").
MainTargetobjectJogador que recebeu a estatística.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
MatchGuidstringDefinido apenas para partidas online ou em LAN.
SecondaryTargetobjectCONDICIONALJogador envolvido na estatística (por exemplo, o jogador demolido). Mesma forma que o MainTarget.

Comandos

Comandos enviados do socket para o cliente receber. Cada um é um objeto JSON com um campo Comando que nomeia o comando e um objeto Dados que contém as variáveis abaixo.

Formato do comando

Todo comando segue esta estrutura de envelopamento:
{
  "Command": "CommandName",
  "Data":    { /* command-specific variables */ }
}

ChangePOV

ESPECTADORREPLAY
Muda o ponto de vista do espectador/replay. É necessário fornecer pelo menos um entre Foco ou Perspectiva; ambos podem ser combinados.
VariávelTipoRequerDescrição
FocusstringUma das opçõesO que olhar — a bola ou um jogador específico. Valores limitados (veja abaixo).
PerspectivestringUma das opçõesModo de câmera para alternar. Valores limitados (veja abaixo).
Foco — valores aceitos
ValorSignificado
"Ball"Focar na bola.
"<shortcut>"O número de atalho de espectador de um jogador como uma string (por exemplo, "1", "2"). Deve ser apenas dígitos; qualquer outro valor é rejeitado.
Perspectiva — valores aceitos
ValorModoDescrição
"Fly"FlyMova-se livremente pelo mapa.
"SoftAttach"Soft AttachSiga a posição de um jogador ou bola.
"HardAttach"Hard AttachSiga a posição e rotação de um jogador.
"PlayerView"Player ViewVer pela perspectiva de um jogador. Aplicado automaticamente quando o Foco mira em um jogador e nenhuma Perspectiva é dada.
"AutoCam"Auto CamEspectador automático.
"Camera_Director"DirectorAlterna automaticamente entre as visões de jogadores.

Exemplo

{
  "Command": "ChangePOV",
  "Data": {
    "Focus": "1",
    "Perspective": "PlayerView"
  }
}

LoadReplay

Carrega e inicia a reprodução de um replay por nome de arquivo ou por caminho de arquivo.
VariávelTipoRequerDescrição
FileNamestringUma das opçõesNome do arquivo de replay a jogar. Tem precedência sobre o Caminho quando ambos estão definidos.
PathstringUma das opçõesCaminho do arquivo de um replay para jogar. Usado quando FileName está vazio.

Exemplo

{
  "Command": "LoadReplay",
  "Data": {
    "FileName": "Stadium_P_2026-06-05_18-42"
  }
}

SeekReplay

REPLAY
Pula a reprodução do replay para um quadro ou tempo específico.
VariávelTipoRequerDescrição
FrameintUma das opçõesNúmero do quadro específico. Tem precedência sobre TimeSeconds quando definido.
TimeSecondsfloatUma das opçõesTempo-alvo em segundos.

Exemplo

{
  "Command": "SeekReplay",
  "Data": {
    "TimeSeconds": 120.5
  }
}

SetGameSpeed

REPLAY
Define a velocidade de reprodução do replay.
VariávelTipoRequerDescrição
SpeedfloatSimMultiplicador de reprodução. 1.0 = normal, 0.5 = metade da velocidade, 2.0 = o dobro da velocidade. Deve ser ≥ 0.

Exemplo

{
  "Command": "SetGameSpeed",
  "Data": {
    "Speed": 0.5
  }
}

SetHUDVisibility

Exibe ou oculta o HUD no jogo.
VariávelTipoRequerDescrição
bVisibleboolSimtrue mostra o HUD; false esconde o HUD.

Exemplo

{
  "Command": "SetHUDVisibility",
  "Data": {
    "bVisible": false
  }
}

SetMatchPaused

Pausa ou despausa a partida ou o replay atual.
VariávelTipoRequerDescrição
bPausedboolSimtrue pausa; false retoma.

Exemplo

{
  "Command": "SetMatchPaused",
  "Data": {
    "bPaused": true
  }
}