rengarapi docs
DOCUMENTATION

valorant api with 9 endpoints. no auth required, json responses. built for twitch bots, discord commands, and stream overlays.

base url
https://reng.ar/api
player endpoints

mmr

GET/api/mmr/{name}/{tag}

returns the current competitive rank for a player. region is auto-detected.

namestring
riot id name
tagstring
riot id tagline
response
{
  "name": "my melody",
  "tag": "aaa",
  "region": "eu",
  "rank": "Ascendant 3",
  "card": "adb00c74-4505-4e29-e359-74adfc0ead87"
}

stats

GET/api/stats/{name}/{tag}

returns current act stats: kd, acs, adr and totals from ranked games. region is auto-detected.

namestring
riot id name
tagstring
riot id tagline
response
{
  "name": "my melody",
  "tag": "aaa",
  "region": "eu",
  "matches": 24,
  "kills": 486,
  "deaths": 312,
  "assists": 102,
  "kd": "1.56",
  "acs": 284,
  "adr": 198
}

account

GET/api/account/{name}/{tag}

returns the puuid and account info for a player.

namestring
riot id name
tagstring
riot id tagline
response
{
  "puuid": "abc123...",
  "name": "my melody",
  "tag": "aaa"
}
match endpoints

matches

GET/api/matches/{name}/{tag}

returns the last 20 matches for a player. region is auto-detected.

namestring
riot id name
tagstring
riot id tagline
response
{
  "name": "my melody",
  "tag": "aaa",
  "puuid": "abc123...",
  "region": "eu",
  "matches": [
    {
      "id": "match-uuid",
      "started": 1700000000000,
      "queue": "competitive"
    }
  ]
}

match

GET/api/match/{id}

returns full match details including all players and teams.

idstring
match id
regionquery
optional, auto-detected
response
{
  "id": "match-uuid",
  "map": "Ascent",
  "mode": "competitive",
  "started": 1700000000000,
  "length": 2400000,
  "region": "eu",
  "players": [
    {
      "puuid": "abc123...",
      "name": "my melody",
      "tag": "aaa",
      "team": "Blue",
      "agent": "Jett",
      "kills": 25,
      "deaths": 15,
      "assists": 5,
      "score": 6200
    }
  ],
  "teams": [
    {
      "id": "Blue",
      "won": true,
      "rounds": 13,
      "total": 24
    }
  ]
}
game data

leaderboard

GET/api/leaderboard/{actId}

returns the ranked leaderboard for an act.

actIdstring
act uuid
regionquery
eu, na, ap, kr (default: eu)
sizequery
results per page (max 200)
startquery
start index
response
{
  "act": "act-uuid",
  "total": 50000,
  "region": "eu",
  "players": [
    {
      "rank": 1,
      "name": "Player",
      "tag": "0001",
      "rr": 850,
      "wins": 120
    }
  ]
}

content

GET/api/content

returns game content: active acts, agents, maps, and modes.

regionquery
eu, na, ap, kr (default: eu)
response
{
  "version": "08.00.00.123456",
  "acts": [
    { "id": "act-uuid", "name": "Episode 8 Act 1", "type": "act" }
  ],
  "agents": [
    { "id": "agent-uuid", "name": "Jett" }
  ],
  "maps": [
    { "id": "map-uuid", "name": "Ascent" }
  ],
  "modes": [
    { "id": "competitive", "name": "Competitive" }
  ]
}

valorant status

GET/api/status/valorant

returns valorant server status, maintenances, and incidents.

regionquery
eu, na, ap, kr (default: eu)
response
{
  "id": "eu",
  "name": "Europe",
  "region": "eu",
  "maintenances": [],
  "incidents": []
}
integrations

twitch

use rengar in streamelements or nightbot chat commands.

streamelements
$(customapi.https://reng.ar/api/mmr/YOUR_NAME/YOUR_TAG)
dynamic command
!addcmd rank $(customapi.https://reng.ar/api/mmr/$(1)/$(2))

usage: !rank my melody aaa
nightbot
!addcom !rank $(urlfetch https://reng.ar/api/mmr/$(1)/$(2))

discord

example discord.js command that returns rank.

javascript
client.on('messageCreate', async (message) => {
  if (!message.content.startsWith('!rank')) return;

  const [name, tag] = message.content
    .split(' ')[1]?.split('#') || [];

  if (!name || !tag) {
    return message.reply('usage: !rank Name#Tag');
  }

  const res = await fetch(
    `https://reng.ar/api/mmr/${name}/${tag}`
  );
  const data = await res.json();

  message.reply(data.rank);
});

obs overlay

add as a browser source. updates every 60 seconds.

html
<div id="rank" style="font-family: monospace; color: white;"></div>
<script>
async function update() {
  const res = await fetch(
    'https://reng.ar/api/mmr/YOUR_NAME/YOUR_TAG'
  );
  const d = await res.json();
  document.getElementById('rank').textContent = d.rank;
}
update();
setInterval(update, 60000);
</script>
reference

errors

200success
404player not found
429rate limited
500server error