VALORANT console (PlayStation and Xbox) has separate API endpoints. They mirror the PC endpoints but require a platformType parameter. Valid values are playstation and xbox (case-insensitive).
Match history
import valaw
import asyncio
async def main():
client = valaw.Client("YOUR_TOKEN", "americas")
try:
# Account lookup is the same as PC
account = await client.GET_getByRiotId("ConsolePlayer", "PS5")
print(f"Found: {account.gameName}#{account.tagLine}")
# Get console match history — requires platformType
matchlist = await client.GET_getConsoleMatchlist(
puuid=account.puuid,
region="na",
platformType="playstation"
)
print(f"PlayStation matches: {len(matchlist.history)}")
# Get details for recent matches
for entry in matchlist.history[:3]:
match = await client.GET_getConsoleMatch(entry.matchId, "na")
print(f"\nMap: {match.matchInfo.mapId}")
player = next((p for p in match.players if p.puuid == account.puuid), None)
if player and player.stats:
kda = f"{player.stats.kills}/{player.stats.deaths}/{player.stats.assists}"
print(f"K/D/A: {kda}")
finally:
await client.close()
asyncio.run(main())
Recent console matches
import valaw
import asyncio
async def main():
client = valaw.Client("YOUR_TOKEN", "americas")
try:
recent = await client.GET_getConsoleRecent("console_competitive", "na")
print(f"Recent matches: {len(recent.matchIds)}")
for match_id in recent.matchIds[:3]:
match = await client.GET_getConsoleMatch(match_id, "na")
print(f" {match_id} — {match.matchInfo.mapId} ({len(match.players)} players)")
finally:
await client.close()
asyncio.run(main())
Valid console queues: console_unrated, console_swiftplay, console_hurm, console_competitive, console_deathmatch
Console leaderboard
import valaw
import asyncio
async def main():
client = valaw.Client("YOUR_TOKEN", "americas")
try:
leaderboard = await client.GET_getConsoleLeaderboard(
actId="act-id-here",
region="na",
platformType="playstation",
size=10
)
print(f"PlayStation Top {len(leaderboard.players)}:")
for player in leaderboard.players:
name = f"{player.gameName}#{player.tagLine}" if player.gameName != "Private" else "[Private]"
print(f" #{player.leaderboardRank}: {name} — {player.rankedRating} RR")
finally:
await client.close()
asyncio.run(main())
PlayStation and Xbox leaderboards are separate — each platform has its own rankings.
Error handling
try:
matchlist = await client.GET_getConsoleMatchlist(
puuid=account.puuid,
region="na",
platformType="playstation"
)
except valaw.Exceptions.InvalidPlatformType as e:
print(f"Invalid platform: {e}")
except valaw.Exceptions.InvalidRegion as e:
print(f"Invalid region: {e}")
except valaw.Exceptions.RiotAPIResponseError as e:
print(f"API error {e.status_code}: {e.status_message}")