GET Match Details
https://pd.{shard}.a.pvp.net/match-details/v1/matches/{matchID}
Get the details of a match after it ends
Headers:
-
X-Riot-ClientPlatform: {client platform}
-
X-Riot-ClientVersion: {client version}
-
X-Riot-Entitlements-JWT: {entitlement token}
-
Authorization: Bearer {auth token}
URL Parameters:
-
{matchID}
Match ID
Other Variables:
-
client platform
A string representing the platform of the client. Base-64 encoded JSON with the following fields:
{ "platformType": "PC", "platformOS": "Windows", "platformOSVersion": "10.0.19042.1.256.64bit", "platformChipset": "Unknown" }
ew0KCSJwbGF0Zm9ybVR5cGUiOiAiUEMiLA0KCSJwbGF0Zm9ybU9TIjogIldpbmRvd3MiLA0KCSJwbGF0Zm9ybU9TVmVyc2lvbiI6ICIxMC4wLjE5MDQyLjEuMjU2LjY0Yml0IiwNCgkicGxhdGZvcm1DaGlwc2V0IjogIlVua25vd24iDQp9
is a value that works. -
client version
-
entitlement token
Can be obtained locally with the Entitlements Token endpoint or remotely using Riot auth and the Entitlement endpoint -
auth token
Can be obtained locally with the Entitlements Token endpoint or remotely by first using the Auth Cookies endpoint then using the cookies with the Auth Request endpoint
Response:
type MatchDetailsResponse = {
matchInfo: {
/** Match ID */
matchId: string;
/** Map ID */
mapId: string;
gamePodId: string;
gameLoopZone: string;
gameServerAddress: string;
gameVersion: string;
gameLengthMillis: number | null;
gameStartMillis: number;
provisioningFlowID: "Matchmaking" | "CustomGame";
isCompleted: boolean;
customGameName: string;
forcePostProcessing: boolean;
/** Queue ID */
queueID: string;
/** Game Mode */
gameMode: string;
isRanked: boolean;
isMatchSampled: boolean;
/** Season ID */
seasonId: string;
completionState: "Surrendered" | "Completed" | "VoteDraw" | "";
platformType: "PC";
premierMatchInfo: {};
partyRRPenalties?: {
[x: string]: number;
} | undefined;
shouldMatchDisablePenalties: boolean;
};
players: {
/** Player UUID */
subject: string;
gameName: string;
tagLine: string;
platformInfo: {
platformType: "PC";
platformOS: "Windows";
platformOSVersion: string;
platformChipset: "Unknown";
};
teamId: ("Blue" | "Red") | string;
/** Party ID */
partyId: string;
/** Character ID */
characterId: string;
stats: {
score: number;
roundsPlayed: number;
kills: number;
deaths: number;
assists: number;
playtimeMillis: number;
abilityCasts?: ({
grenadeCasts: number;
ability1Casts: number;
ability2Casts: number;
ultimateCasts: number;
} | null) | undefined;
} | null;
roundDamage: {
round: number;
/** Player UUID */
receiver: string;
damage: number;
}[] | null;
competitiveTier: number;
isObserver: boolean;
/** Card ID */
playerCard: string;
/** Title ID */
playerTitle: string;
/** Preferred Level Border ID */
preferredLevelBorder?: (string | "") | undefined;
accountLevel: number;
sessionPlaytimeMinutes?: (number | null) | undefined;
xpModifications?: {
/** XP multiplier */
Value: number;
/** XP Modification ID */
ID: string;
}[] | undefined;
behaviorFactors?: {
afkRounds: number;
/** Float value of unknown significance. Possibly used to quantify how much the player was in the way of their teammates? */
collisions?: number | undefined;
commsRatingRecovery: number;
damageParticipationOutgoing: number;
friendlyFireIncoming?: number | undefined;
friendlyFireOutgoing?: number | undefined;
mouseMovement?: number | undefined;
stayedInSpawnRounds?: number | undefined;
} | undefined;
newPlayerExperienceDetails?: {
basicMovement: {
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
basicGunSkill: {
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
adaptiveBots: {
adaptiveBotAverageDurationMillisAllAttempts: 0;
adaptiveBotAverageDurationMillisFirstAttempt: 0;
killDetailsFirstAttempt: null;
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
ability: {
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
bombPlant: {
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
defendBombSite: {
success: false;
idleTimeMillis: 0;
objectiveCompleteTimeMillis: 0;
};
settingStatus: {
isMouseSensitivityDefault: boolean;
isCrosshairDefault: boolean;
};
versionString: "";
} | undefined;
}[];
bots: unknown[];
coaches: {
/** Player UUID */
subject: string;
teamId: "Blue" | "Red";
}[];
teams: {
teamId: ("Blue" | "Red") | string;
won: boolean;
roundsPlayed: number;
roundsWon: number;
numPoints: number;
}[] | null;
roundResults: {
roundNum: number;
roundResult: "Eliminated" | "Bomb detonated" | "Bomb defused" | "Surrendered" | "Round timer expired";
roundCeremony: "CeremonyDefault" | "CeremonyTeamAce" | "CeremonyFlawless" | "CeremonyCloser" | "CeremonyClutch" | "CeremonyThrifty" | "CeremonyAce" | "";
winningTeam: ("Blue" | "Red") | string;
/** Player UUID */
bombPlanter?: string | undefined;
bombDefuser?: (("Blue" | "Red") | string) | undefined;
/** Time in milliseconds since the start of the round when the bomb was planted. 0 if not planted */
plantRoundTime?: number | undefined;
plantPlayerLocations: {
/** Player UUID */
subject: string;
viewRadians: number;
location: {
x: number;
y: number;
};
}[] | null;
plantLocation: {
x: number;
y: number;
};
plantSite: "A" | "B" | "C" | "";
/** Time in milliseconds since the start of the round when the bomb was defused. 0 if not defused */
defuseRoundTime?: number | undefined;
defusePlayerLocations: {
/** Player UUID */
subject: string;
viewRadians: number;
location: {
x: number;
y: number;
};
}[] | null;
defuseLocation: {
x: number;
y: number;
};
playerStats: {
/** Player UUID */
subject: string;
kills: {
/** Time in milliseconds since the start of the game */
gameTime: number;
/** Time in milliseconds since the start of the round */
roundTime: number;
/** Player UUID */
killer: string;
/** Player UUID */
victim: string;
victimLocation: {
x: number;
y: number;
};
assistants: string[];
playerLocations: {
/** Player UUID */
subject: string;
viewRadians: number;
location: {
x: number;
y: number;
};
}[];
finishingDamage: {
damageType: "Weapon" | "Bomb" | "Ability" | "Fall" | "Melee" | "Invalid" | "";
/** Item ID of the weapon used to kill the player. Empty string if the player was killed by the spike, fall damage, or melee. */
damageItem: (string | ("Ultimate" | "Ability1" | "Ability2" | "GrenadeAbility" | "Primary")) | "";
isSecondaryFireMode: boolean;
};
}[];
damage: {
/** Player UUID */
receiver: string;
damage: number;
legshots: number;
bodyshots: number;
headshots: number;
}[];
score: number;
economy: {
loadoutValue: number;
/** Item ID */
weapon: string | "";
/** Armor ID */
armor: string | "";
remaining: number;
spent: number;
};
ability: {
grenadeEffects: null;
ability1Effects: null;
ability2Effects: null;
ultimateEffects: null;
};
wasAfk: boolean;
wasPenalized: boolean;
stayedInSpawn: boolean;
}[];
/** Empty string if the timer expired */
roundResultCode: "Elimination" | "Detonate" | "Defuse" | "Surrendered" | "";
playerEconomies: {
/** Player UUID */
subject: string;
loadoutValue: number;
/** Item ID */
weapon: string | "";
/** Armor ID */
armor: string | "";
remaining: number;
spent: number;
}[] | null;
playerScores: {
/** Player UUID */
subject: string;
score: number;
}[] | null;
}[] | null;
kills: {
/** Time in milliseconds since the start of the game */
gameTime: number;
/** Time in milliseconds since the start of the round */
roundTime: number;
/** Player UUID */
killer: string;
/** Player UUID */
victim: string;
victimLocation: {
x: number;
y: number;
};
assistants: string[];
playerLocations: {
/** Player UUID */
subject: string;
viewRadians: number;
location: {
x: number;
y: number;
};
}[];
finishingDamage: {
damageType: "Weapon" | "Bomb" | "Ability" | "Fall" | "Melee" | "Invalid" | "";
/** Item ID of the weapon used to kill the player. Empty string if the player was killed by the spike, fall damage, or melee. */
damageItem: (string | ("Ultimate" | "Ability1" | "Ability2" | "GrenadeAbility" | "Primary")) | "";
isSecondaryFireMode: boolean;
};
round: number;
}[] | null;
};