[Custom API] Valorant MMR Rank API v1

Asked Jun 14, 2021·230 replies·Last activity 9 months ago·Open in Discord ↗
Archived from the original community forum
Things may have changed since it was written. Still stuck? Ask the community on Discord.

I have written Valorant MMR Rank API v1 wrapper to display your rank tier, RR and Elo according to your MMR as well as your ranking placement in leaderboard across the Valorant Account Region.

[Credits to Valorant Data Providers]
RiotAPI
RiotGames Developers Discord
Valorant-API
Tracker.gg
Dak.gg
OverWolf
Liamcottle
Henrik3

Also specially featured in:
Tutorial For Nightbot/Streamlabs by @SuperPink95
https://www.youtube.com/watch?v=X2WdvgDNNUI
Tutorial For Nightbot by @itxFyre
https://www.youtube.com/watch?v=tuQNVuCCmkU
Tutorial For Kick by @Guih Sabino TV
https://www.youtube.com/watch?v=MEFrSpE1vQE
Tutorial For Botrix (For Kick) by @Jamyyeval
https://www.youtube.com/watch?v=rMluLLdYkMY
Tutorial For StreamElements by @Lari Vargas
https://www.youtube.com/watch?v=r1qQ0ijLmNU
Tutorial For Nightbot by @SimoFendeRs
https://www.youtube.com/watch?v=s_BsInLPdDo
Tutorial For MixItUp by @Soybeanz
https://www.youtube.com/watch?v=_BesRTEWENs

230 replies

Tutorial For Nightbot by @IrishRazz https://www.youtube.com/watch?v=rSAIZNULwxA
Tutorial For Streamelements by @zeevaii https://www.instagram.com/reel/DCLaiFYoeGj/
Tutorial For Streamlabs by @Jota_0007 https://www.youtube.com/watch?v=gyWAePPQltE
Tutorial For MixItUp by @heysoybeanz
https://www.tiktok.com/@heysoybeanz/video/7213006816689655048
Tutorial Reddit (r/Twitch) by @BlueFray_
https://www.reddit.com/r/Twitch/comments/xnytwi/guide_api_rank_command_for_va…
Tutorial Reddit (r/VALORANT) by @BlueFray_
https://www.reddit.com/r/VALORANT/comments/xnyxsl/for_streamers_api_rank_comm…
Tutorial Official @StreamElements - Help Article https://support.streamelements.com/hc/en-us/articles/12362107401234-How-to-ad…

Valorant MMR Rank API

Usage: https://api.kyroskoh.xyz/valorant/v1/mmr/[region]/[ID]/[Tag]

[Note]
region: `na, eu, ap, kr, latam, br` (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___

For example, using belles#huats in ap region:
`https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats`

The following will not display the ID, Tag, Region with showing rank and RR only (By DEFAULT):

`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=combo&display=0)`
Response: "Gold 1 - 47RR." (Screenshot)

The following will display the ID, Tag, Region with showing rank and RR only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=combo&display=1)`
Response: "belles#huats (ap Region): Gold 1 - 47RR." (Screenshot)

The following will display the ID, Tag, Region with showing rank, RR and Elo:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=all&display=1)`
Response: "belles#huats (ap Region): Gold 1 - 32RR. MMR Elo: 932." (Screenshot)

The following will not display the ID, Tag, Region with showing rank, RR and Elo:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=all&display=0)`
Response: "Gold 1 - 32RR. MMR Elo: 932." (Screenshot)

The following will display the ID, Tag, Region with showing rank only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=rankonly&display=1)`
Response: "belles#huats (ap Region): Gold 1." (Screenshot)

The following will not display the ID, Tag, Region with showing rank only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=rankonly&display=0)`
Response: "Gold 1." (Screenshot)

The following will display the ID, Tag, Region with showing RR only:

`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=rronly&display=1)`
Response: "belles#huats (ap Region): 47RR." (Screenshot)

The following will not display the ID, Tag, Region with showing RR only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=rronly&display=0)`
Response: "47RR." (Screenshot)

The following will display the ID, Tag, Region with showing Elo only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=eloonly&display=1)`
Response: "belles#huats (ap Region): MMR Elo: 947." (Screenshot)

The following will not display the ID, Tag, Region with showing Elo only:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/belles/huats?show=eloonly&display=0)`
Response: "MMR Elo: 947." (Screenshot)

Valorant Leaderboard Ranking API (Based on Valorant Account Region) - Only Display Top 500 users

[Note]
region: `na, eu, ap, kr, latam, br` (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___

Usage: [https://api.kyroskoh.xyz/valorant/v1/leaderboard/[region]/[ID]/[Tag] ](https://api.kyroskoh.xyz/valorant/v1/leaderboard/%5Bregion%5D/%5BID%5D/%5BTag%5D)

For example, using XSET Cryo#cells in na region:
`https://api.kyroskoh.xyz/valorant/v1/leaderboard/na/XSET%20Cryo/cells`

The following will not display the ID, Tag but with Region (By default):

`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/leaderboard/na/XSET%20Cryo/cells)`
Response: “(na Region): Ranked #2 with 998RR. Total Games Won: 140.” (Screenshot)

The following will display the ID, Tag, Region:
`!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/leaderboard/na/XSET%20Cryo/cells?display=1)`
Response: “"XSET Cryo#cells (na Region): Ranked #2 with 998RR. Total Games Won: 140."” (Screenshot)

Valorant MMR Rank API: Episode Acts (No more displaying RR)

Usage: https://api.kyroskoh.xyz/valorant/v1/mmr/[region]/[ID]/[Tag]/[epiact]

[Note]
region: `na, eu, ap, kr, latam, br` (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___
epiact: e1a1, e1a2, e1a3, e2a1, e2a2, e2a3, e3a1, e3a2, e3a3, e4a1, e4a2, e4a3, e5a1, e5a2, e5a3 etc...

For example, using Superpink95#Pink in eu region:
https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring) (Screenshot)

The following will display the ID, Tag, Region, Episode 5 Act 3:
!addcom !epiact $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?display=1)
Query: !epiact e5a3
Response: “Superpink95#Pink (EU Region): In e5a3 - Platinum 3. 4 wins in 6 games” (Screenshot)

The following will not display the ID, Tag, Region, Episode 5 Act 3 (By default):

!addcom !epiact $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?display=0)
Query: !epiact e5a3
Response: “In e5a3 - Platinum 3. 4 wins in 6 games” (Screenshot)

The following will display the ID, Tag, Region, Episode 5 Act 3 with showing rank only:
!addcom !epiactrank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?show=rankonly&display=1)
Query: !epiactrank e5a3
Response: “Superpink95#Pink (EU Region): In e5a3 - Platinum 3” (Screenshot)

The following will not display the ID, Tag, Region, Episode 5 Act 3 with showing rank only:
!addcom !epiactrank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?show=rankonly&display=0)
Query: !epiactrank e5a3
Response: “In e5a3 - Platinum 3” (Screenshot)

The following will display the ID, Tag, Region, Episode 5 Act 3 with showing wins only:
!addcom !epiactwins $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?show=winsonly&display=1)
Query: !epiactwins e5a3
Response: “Superpink95#Pink (EU Region): In e5a3 - 4 wins in 6 games” (Screenshot)

The following will not display the ID, Tag, Region, Episode 5 Act 3 with showing wins only:
!addcom !epiactwins $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/Superpink95/Pink/$(querystring)?show=winsonly&display=0)
Query: !epiactwins e5a3
Response: “In e5a3 - 4 wins in 6 games” (Screenshot)

Valorant MMR Rank API: Change in RR in last recent map

Usage: https://api.kyroskoh.xyz/valorant/v1/mmrchange/[region]/[ID]/[Tag]

[Note]
region: `na, eu, ap, kr, latam, br` (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___

For example, using Superpink95#Pink in eu region:
https://api.kyroskoh.xyz/valorant/v1/mmrchange/eu/Superpink95/Pink
Response: “Current RR is 21 in Gold 3. -15RR changes in the recent Breeze map.” (Screenshot)

The following will display the ID, Tag, Region:
!addcom !mmrchange $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmrchange/eu/Superpink95/Pink?display=1)
Query: !mmrchange
Response: “Superpink95#Pink (EU Region): Current RR is 21 in Gold 3. -15RR changes in the recent Breeze map.” (Screenshot)

The following will not display the ID, Tag, Region (By default):
!addcom !mmrchange $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmrchange/eu/Superpink95/Pink?display=0)
Query: !mmrchange
Response: “Current RR is 21 in Gold 3. -15RR changes in the recent Breeze map.” (Screenshot)

Valorant MMR Rank API: Win-Lose in last ranked games within the past 24 hours!

Usage: [https://api.kyroskoh.xyz/valorant/v1/winlose/[region]/[ID]/[Tag]](https://api.kyroskoh.xyz/valorant/v1/winlose/%5Bregion%5D/%5BID%5D/%5BTag%5D)

[Note]
region: na, eu, ap, kr (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)

ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___

For example, using oolongcha#yums in ap region:
https://api.kyroskoh.xyz/valorant/v1/winlose/ap/oolongcha/yums
Response: “[Refresh Daily] Total of 2 wins and 1 losses in ranked matches within the past 24 hours! Win Percentage: 66.67% | Win-Loss Ratio: 2.00” (Screenshot)

The following will display the ID, Tag, Region:
!addcom !winlose $(urlfetch https://api.kyroskoh.xyz/valorant/v1/winlose/ap/oolongcha/yums?display=1)
Query: !winlose
Response: “[Refresh Daily] oolongcha#yums (AP Region): Total of 2 wins and 1 losses in ranked matches within the past 24 hours! Win Percentage: 66.67% | Win-Loss Ratio: 2.00” (Screenshot)

The following will not display the ID, Tag, Region (By default):
!addcom !winlose $(urlfetch https://api.kyroskoh.xyz/valorant/v1/winlose/ap/oolongcha/yums?display=0)
Query: !winlose
Response: “[Refresh Daily] Total of 2 wins and 1 losses in ranked matches within the past 24 hours! Win Percentage: 66.67% | Win-Loss Ratio: 2.00” (Screenshot)

Valorant MMR Rank API: Detailed Last Match Stats with K/D/A, shots and damages info!

Usage: [https://api.kyroskoh.xyz/valorant/v1/lastmatchstats/[region]/[ID]/[Tag]](https://api.kyroskoh.xyz/valorant/v1/lastmatchstats/%5Bregion%5D/%5BID%5D/%5B…)

[Note]
region: `na, eu, ap, kr, latam, br` (Read Note #2 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
ID: username (Read Note #1 in /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854#m1534589856997572748)
Tag: #___

For example, using sparks#hehe in ap region:
!addcom !laststats $(urlfetch https://api.kyroskoh.xyz/valorant/v1/lastmatchstats/ap/sparks/hehe)
Response: “In e7a2, playing Competitive mode in Bind map, sparks#hehe is playing as Skye in Team Red with a score of 5275. 18K/20D/9A. 14 headshots, 29 bodyshots, 0 legshots. 3427 damage made, 3840 damage received. [Summary] Team Red: 12 VS Team Blue: 14” (Screenshot)

You might encounter "Bad Request" (Status Code: 400) in return if the ID#Tag user account did not played ranked/rated games in last 20 game matches and your ID and Tag. Due to high demands, API will face 429 (Too many requests) from/to RiotAPI.

As of 20 Feb 2022: My API now supports non-alphanumeric characters but not in Russian characters.

*Feel free to reach me directly in here or whisper me via Twitch (kyroskoh). | My r/ Handle

\[Change Log\]

  • \[29 Dec 2025\] Node increased from 27 to 33. Load balanced across geolocation.
  • V2.0 \[18 Nov 2025\] Added Frontend to allow end user to generate command!
  • \[15 Nov 2025\] Node increased from 14 to 27. Load balanced across geolocation.
  • \[9 Nov 2025\] Node increased to 14. Load balanced across geolocation.
  • \[7 Nov 2025\] Servers migrated and revamped with rate limits. Changed Hosting Providers. Node increased to 4. Load balanced across geolocation.
  • v1.11 \[11 Oct 2023\] Released: Valorant MMR Rank API: Detailed Last Match Stats with K/D/A, shots and damages info!
  • V1.10 \[01 Oct 2023\] Released Valorant MMR Rank API: Win-Lose in last ranked games within the past 24 hours!
  • V1.9 \[16 Sep 2023\] Released Valorant MMR Rank API: Change in RR in last recent map
  • V1.8 \[24 Oct 2022\] Added Parameter: Episode Acts with X wins in Y games.
  • V1.7 \[31 Aug 2022\] Added show=all&display=1 & show=all&display=0 to display rank, RR and Elo (with and without Username, Tag & Region).
  • v.1.6 \[08 Apr 2022\] Remove “” (double quotes string from response output).
  • v1.5 \[22 Feb 2022\] Removed “[ ]” wrapper in Rank Tier Name.
  • v1.4 \[20 Feb 2022\] My API now supports non-alphanumeric characters but not in Russian characters.
  • v1.3 \[14 Feb 2022\] Released Valorant Leaderboard Ranking API (Based on Valorant Account Region) - Only Display Top 500 users.
  • v1.2 \[Nov 2021\] Removed MMR Elo from the default displaying.
  • v1.1 \[24 Jun 2021\] Updated with more parameters support: rronly, eloonly, combo.
  • v1.0 \[15 Jun 2021\] If your ID contains 2 words or more with spacing, please use %20 to replace with the spacing as it is URI encoded.

\[Notes\]

Note #1: If your Valorant Region resides in South America such as LATAM or BR, please use the ‘na’ Region to query.

Note #2: Your ID and Tag in non-alphanumeric characters are now supported.

Note #3: Removed “[ ]” wrapper in Rank Tier Name as per highly requested.

Note #4: Added Frontend to allow end user to generate command!
**View: /t/custom-api-valorant-mmr-rank-api-v1/1534589838634913854

\[Infrastructure Changes\]

As of 29 Dec 2025: Valorant API nodes increased to 33, +6 Added to the nodes.
Hosting Peering Providers:

  • M247 (Hong Kong, CN - ASIA)
  • M247 (Tokyo, JP - ASIA)
  • LAX (Los Angeles, CA - USA)
  • NZS (Naaldwijk, NL - EU)
  • FiberState (Salt Lake, CA - USA)
  • HyTron (Tokyo, JP - ASIA)

As of 15 Nov 2025: Valorant API nodes increased to 27, +13 Added to the nodes.
Hosting Peering Providers:

  • Colocrossing (Chicago, IL - USA)
  • Lumen Technologies (Las Vegas, NV - USA)
  • Aptum (Los Angeles, CA - USA)
  • IOFLOOD (Phoenix, AZ - USA)
  • Segra (Charlotte, NC - USA)
  • Hetzner (Helsinki, FI - EU)
  • OVH (Paris, FR - EU)
  • OVH (Warsaw, PL - EU)
  • OVH (London, UK - UK)
  • Hetzner (Nuremberg, DE - EU)
  • OVH (Singapore, SG - ASIA)
  • OVH (Sydney, AU - OCE)
  • OneProvider (Bangkok, TH - ASIA)

As of 9 Nov 2025: Valorant API nodes increased to 14. +10 Added to the nodes.
Hosting Peering Providers:

  • Orange (Timisoara, RO - EU)
  • Digi (Constanta, RO - EU)
  • ColocaTel (Eygelshoven, NL - EU)
  • Cogent (Silicon Valley, CA - USA)
  • Cogent (Dallas, TX - USA)
  • WebWerkz (Mumbai, IN - ASIA)
  • Equinix (Johor, MY - ASIA)
  • LeaseWeb (Singapore, SG - ASIA)
  • ZenLayer (Utah, WA - USA)
  • Hong Kong Broadband Network (Hong Kong, CN - ASIA)

As of 7 Nov 2025: Valorant API nodes increased to 4.
Hosting Peering Providers:

  • MultaCom (Los Angeles, CA - USA)
  • Cologix (Toronto - Canada, NA)
  • Cogent (Tampa, FL - USA)
  • Kolo DC (Siauliai - Lithuania, EU)

I have changed my Valorant API nodes from AWS (Singapore) to DigitalOcean (Singapore) & Linode (Singapore). To help with the ease of CDN, Anti-DDOS and geolocation, I use Cloudflare DNS on top of the nodes.

\[Project Support\]

This project is free to use. However you can choose to support this project with donation to keep it alive: https://streamlabs.com/kyroskoh

\[Honorable Mention - Valorant Data Providers\]

RiotAPI
RiotGames Developers Discord
Valorant-API
Tracker.gg
Dak.gg
OverWolf
Liamcottle
Henrik3

Hi, kyroskoh
Is your api free to use?

@Fizzy Giraffe
Yes. You can use it for Streamlabs/Streamelements too with the similar respective variables.

Hi, can I use this command if I am from a region other than na, eu, ap or kr? (lan or las)

I'm not sure but give it a try.

So far the API allows me to input those given regions. However you can try it out if it is supported, else Valorant regions might be combined with another main regions as their database collections.

Such as SA is using NA.

thanks, I already managed to configure it using NA

I have received a Feature Request...

Valorant Leaderboard API based on Region. (It will be based on example: https://playvalorant.com/en-gb/leaderboards/?page=1&act=2a27e5d2-4d30-c9e2-b1…)

Please poll on your interest below:
(poll from the original forum)

  • Yes
  • No

P.S: I have done the coding for this. Due to RiotAPI has a huge leaderboard ranking per region, sometimes the API will response "not found" even tho the ID and Tag is in the leaderboard. (probably not stable at this point for RiotAPI Developers for API calling fetching using my workaround implementation method)

Status: Beta Released

RequestError: certificate has expired

Is it possible to customize the response a bit more. The given response is always in "" and the "rank" part is always in [], is it possible to get rid of these/opt to not display them?

Hi,

You can use the above parameters to only show the certain data. So far, there's no issue for other users. Are you using Nightbot for this? Please also note that there's a cooldown for calling the API as per documented in RiotAPI.

Edit:
@Hazel Dog I have removed the []

Is there a way to use for latam users?
I tried using "la1" and "lan" but it doesn't seems to work. The bot gives me this message: "Remote Server Returned Code 400"

Region 'la1' and 'lan' are not supported. Try the listed region above as Riot may combined regions account together for rated ranks.

Works using "na", but in the response shows "(na region)

As it is defined as such for Riot region database side.

like, I just wanted to say thank you, u are really just made it much easier

hey man was wondering if there is an updated version of this api

I see you said you did the coding for this, but I can't find it anywhere. Is it still out there/functional? I would really appreciate using this as i'm top 9k at the moment and it SHOULD be able to find my account on the leaderboard

Thanks a ton

@Fabled Zebra This is not displaying the global rank position in leaderboard, this is just valorant rank with RR. Please do not be confused with this topic statement.

i got "Remote Server Returned Code 400"

is it because it's SEA region isn't supported yet?

@Kind Goose @Winter Boar May I know what are both of your ID, Tag and Region?

@Winter Boar
For displaying with your ID, Tag in Region:
Use: `!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/sol/0420?display=1)`

Else
Use: `!addcom !rank $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/ap/sol/0420)`

Note: Currently, my API is facing Status Code, 429 as it is throttled by Riot within this window period. You can trigger the !rank command later for the result.

it gives me the same "Remote Server Returned Code 400"

hey @Hushed Monkey i found the problem

its soi#0420 with capital i instead of an actual l hahahah

everything is good now all working just fine

Hey kryoskoh! Was wondering if your api can do something like this:

(players) current RR is 22RR in Diamond 1. Lost -16RR in the last game. 278RR needed for Immortal.

Been looking everywhere to see how to do this with other api's but cant find anything. I see people using custom twitch bots with it. If you can help me in anyway I'd appreciate it thanks :)

@Winter Boar
Good that you know the issue.

@Tangy Camel
For your info, every Valo rank tier is 0-99RR, it cannot be tracked for 'needed for Immortal' for accumulated RR, unless it is calculated for each tier of every 100RR with each defined RankName.

Further customised API is required for reference table which will make the Riot API much slower to compare with the return result of the RankName from each user requested with !rank command is triggered.

However, it can be done for "player_ID_Tag's current RR is RR in RankName. RR was lost in the previous game.".

mine is giving: "Remote Server Returned Code 400" could you help me?

Nick: Bradoock#LLL
BR

@Cozy Penguin Please use this:

`https://api.kyroskoh.xyz/valorant/v1/mmr/na/Bradoock/LLL`

it worked, thank you very much!! saved a lot

Hi I was wondering how you were able to create this API? Do you have a Valorant production API key from Riot?

@Windy Dog Yes I use Riot API, you can create your own in their development API key or acceptance by them for getting the Production API key.

@Hushed Monkey mine is giving: “Remote Server Returned Code 400” could you help me?

Nick: XL FOREVER #Bruh
AP

@Sleepy Shark all are caps? Can you show me your actual ID and Tag as screenshot here? Looks like Riot has made the ID and Tag to be case-sensitive.

@Sleepy Shark Thank you for your verification. I have checked on my backend as it has faced too many requests. So sometimes it needed to try it again later as I have just checked. It worked: https://i.imgur.com/cRb1gKf.png

Hey kyroskoh, I am facing some trouble regarding your API. So I am a Moderator on a Youtubers Channel and he is a South Asian Valorant Pro. His In-game Name contains some Japanese Charecters. When I put his name into the URL it shows it has Unescaped Charecters. So how do you escape these characters?
I tried encoding the characters to utf-8 but that doesn't seem to work. Can you let me know of a working solution for this?? He is there in the Riot Website Leaderboard though and the name there comes correctly.

Hi @Quick Sloth ,

What is his ID, Tag and Region?

My API Wrapper is already in UTF-8 for output but RiotAPI's original charset is not only UTF-8, but latin-1, Chinese, Japanese, etc too.

[Update] I have resolved it to handle such escaped characters and non-alphanumeric characters.

GE SkRossi赤司 征十郎#4646 AP
The above is the ID Tag and Region. And yes the update has fixed the issue mate thank you so much <3

Can you update the same for Leaderbaord Command aswell bro??

Is the Leaderboard doesnt work on APAC region?

@Autumn Bat can you type it here for the ID, Tag and Region here?

@Autumn Bat You should try to readd it again. It has some issues in connecting from Nightbot to my server to Riot Dev site to get data (bcos of the non-alphanumeric characters) and also please note that the API might have faced more on Error 400 due to overwhelmed API requests.

You can add ?display=1 or ?display=0 to delay the request since it has timeout within Nightbot.

image.png

Ah got it. Mb. I read someone's comment who managed to do that, I thought I was the only one who failed. Once again, thankyou for the help! Really appreciate it.

@Quick Sloth The Leaderboard also supported the non-alphanumeric characters.

@Autumn Bat It works, you just need to have the valid ID and Tag that is listed in the Valorant's Official Leaderboard, usually those are Radiants.

The Leaderboard API Returns with -> Request failed with status code 404.
when using UTF-8 Encoded Charecters.

@Quick Sloth Error 404 means Not Found. It means that the mentioned ID and Tag is not found in ap region in the leaderboard of Valorant Official Site as the mentioned ID and Tag are not at least an Immortal 1 to 3 or Radiant Rank within the top list in the current Act (always updated until confirmation in the end of Act Season) or being removed as someone had replaced the position hence out of the list. You can search the ID and Tag in there.

If the mentioned ID and Tag are one of the top listed, you will get a result.

For example:

Official Valorant Leaderboard (ap region):

My Valorant Leaderboard API (ap region):

image.pngimage.png

@Hushed Monkey Mate I fixed it after getting to the official Leaderboards .. So it seems that the Leaderboard on the website has the old ID and TAG, hence why the error.

The Rank is Radiant, But he had recently changed his ID and TAG. The new ID and TAG is not reflected in the Official Leaderboard but the Old one is shown.

While for the other Rank API of yours the NEW ID and TAG works fine.

Idk why the old ID and TAG is still used. Its a Riot Issue I suppose.

  • OLD ID and TAG -> GE SkRossiエース #GEGE
  • NEW ID and TAG -> GE SkRossi赤司 征十郎 #4646

--

  • Pic of OLD ID and TAG - which is working in Leaderboard API.
  • Pic of New ID and TAG - which is ONLY working in Rank API
image.pngimage.pngimage.png

Hi,kyrosh
Mine is not working: Remote Server Returned Code 400

limejjii#0728

Hello, does this work with any rank?
I tried it but I am also getting Remote Server Returned Code 400.
My tag is Jastine#TTV in NA

I just checked it, the link works but in chat it still pops up as the server returned code. Is there a reason or a way to fix it?

@Earnest Worm

When you faced Error 400, it is either you have input wrong ID/Tag/Region and it is case-sensitive. Or else the API is overwhelmed at the point of time in that time window.

@Snowy Tiger
When you faced Error 400, it is either you have input wrong ID/Tag/Region and it is case-sensitive. Or else the API is overwhelmed at the point of time in that time window.

@Amber Pig
Since you are in BR, you have to use NA region.
Use this instead:
!addcom $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/na/Hinrikao/GGBR)

Hi bro, I try with my nick, but it returns error 429. I changed my RIOT ID, I don't know if that will affect. my region is las, but i tried with na

RinSantiro#2095

Hi @Hushed Monkey,

it is possible to get the lost RR or won RR from the last game? In your Notes are just mentioned the rank, RR in this rank, elo and so on.

best regards
raDDeTV ;)

@Sugary Bat u can try the ID and Tag before u changed before trying the new one. SA region is stored in NA region.

@Cheerful Lobster yes it is possible to code that. I can write that if others are interested.

Is it Possible to host the API by my self?

keep getting this error: Nightbot: Error Connecting To Remote Server

@Dainty Badger Not at this time, probably in future.
@Wise Chipmunk it has resolved.

okay, now ive been getting the 400 error code all morning trying at different times. i dont think its my name tho

@Wise Chipmunk What is your ID, Tag and Region? You are trying to use which API?

kachau #mary im using the leaderboard one,

@Wise Chipmunk please note that the leaderboard API will only display top 500 users.

@Hushed Monkey
It's a great tool, any way there is like a variant of it to return the rank WITHOUT the quotation marks?
I'm sorry but I just don't know coding. Though all I want is the return to be without the quotations. That possible?

Hello @Hushed Monkey ,

I am trying to add this command to streamelements
!command add !rank (the url fetch part and then the id and tag misty#4958)

But I am getting the following error any idea's as to why this is ?

RequestError: getaddrinfo EAI_AGAIN jsonhttps jsonhttps:80

@Keen Bat
I have removed "" (double quotes string from response output) for this v1.6 release changelog and already operational now.

@Royal Hedgehog can you provide me your ID, Tag and Region? and send me the full command that you have written in streamelements?

misty#4958 EU

!command add !rank $(urlfetch https:// api.kyroskoh.xyz /valorant/v1/mmr/eu/misty/4958?display=1)

Without the space

@Royal Hedgehog I don't see any issue with that command syntax for streamelements

image.pngimage.png

Hello,

When I tried to add this command it gave me this error and ran the command in chat it gave me

RequestError: getaddrinfo EAI_AGAIN jsonhttps jsonhttps:80

@Royal Hedgehog can u whisper me on twitch, @Hushed Monkey? and let me know which twitch channel u are adding the command?

Seems like there is a high demand for specific parsings for the nightbot, maybe I will add specific endpoints for that soon....

Would be btw also nice if you give credits to the original API (probably mine, api.henrikdev.xyz)

@Kind Crocodile Thanks for such intensive API endpoints, it works well for handling on the requests on top of my meshed API Application.

Hello

Does the endpoint still show the hidden MMR ? I thought that was removed.

@Jolly Hedgehog the endpoint for MMR (show=eloonly) is not removed, it is just removed from the default response.

What I ment is that I thought that Riot removed the possibility to view your hidden MMR

Also is it possible to add language translations? To show the rank in different languages?

mine is giving: “Remote Server Returned Code 400” could you help me?

Nick: Lipeh final boss #China
BR

@Hushed Monkey

my man i did put the command put when i send !rank he the nightbot send the link not the rank

I keep getting Null - null rr?
anyway u can help

Hey kyroskoh i'm having some trouble trying to set my command
ID: fã do scott
TAG: #abalo
REGION: brazil
i've tried different ways and none had worked... %20 for the blank spaces, also f$atilde (fã) does not to work as well.. if u can help me 🙂

Any change of showing the ranks in different languages??

Having trouble with the command.
ID: AustinXyoojツ
Tag: alone
Region: NA

I tried it on my smurf account and everything works fine, but the moment I do my main account, it says, "Error Connecting To Remote Server." Don't know what could be making it not work as I've tried everything. I've even gone to the webpage itself and it works fine. Don't know if it's Nightbot or something else. Please help me. 🙂

You can do your own with the return result value.

can u show me what u have written for the command?

it means that you are in the wrong region. what is your id, tag, region?

Is it possible to remove the "." from the end of the response after the RR? It seems unnecessary to have it. Or is there some line of code to remove the last character? Thanks!

It is my form of separator from whole payload output as I have filtering parameter. If you know how to handle json string object, you can use json to remove the last letter such as using slice method.

I need help for my friend:

FLD Somaekk #Somii

in Australia

Hey there do you mind helping me get my Name/tag/region/rank/rr/elo?
I can only seem to get either just the rank and rr to show or just the elo, but I can't get the two to show together.
Indubitably#Suh (na region)

I keep having "Request failed with status code 404." but when I try to check the link it shows the rank and rr

If u received 404 status error, means either:

Your IGN changed or you didn't play ranked games for a long time.

This only shows my rank and rr; is it possible to get mmr elo included as well with these?

u can use 2 $(fetch) URLs to form into 1 result which might return the result slow. I will add this request in future.

[Update]
Display WITH Username/Tag/Region: ?show=all&display=1
Display WITHOUT Username/Tag/Region: ?show=all&display=0

For example (Indubitably#Suh in NA region):
Display WITH Username/Tag/Region: https://api.kyroskoh.xyz/valorant/v1/mmr/na/Indubitably/Suh?show=all&display=1
Display WITHOUT Username/Tag/Region: https://api.kyroskoh.xyz/valorant/v1/mmr/na/Indubitably/Suh?show=all&display=0

Released v1.7 [31 Aug 2022] Added show=all&display=1 & show=all&display=0 to display rank, RR and Elo (with and without Username, Tag & Region).

Do you guys want an API for changes in RR based on last game? Like + or - in RR difference.

(poll from the original forum)

  • Yes
  • No

Hi Kyroskoh, Do you know how can i change the rank output language? For example rank Gold 1 to Spanish language. I use nightbot

Hello, how can I fix this error: “Request failed with status code 502.”?

hi, i dont know why this dont working, im using cloudbot on streamlabs, and my account id is:
ojhnn1
#a0a
BR( i put na on url)

image.png

There's no language support. You can wrap around the output with Google Translate API.

It is due to many connection requests, it will recover by itself when the requests are low.

The syntax you use for Streamlabs is wrong. Instead of using ``$(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/na/ojhnn1/a0a?show=combo&display=0)`, you need to use ``
{readapi.https://api.kyroskoh.xyz/valorant/v1/mmr/na/ojhnn1/a0a?show=combo&display=0}```

I urge you to use Nightbot/StreamElements instead of using Streamlabs as Streamlabs responses will be slower.

Released V1.8
[24 Oct 2022] Added Parameter: Episode Acts with X wins in Y games.

Is it possible to include how much a person lost or won the game before and maybe even how much net rr the person got over the last 5 matches.Would be epic if this is possible to include :)

@Free Swan
It is possible to include this feature but it requires more computing power to display each of the matches results or sum up all the matches results into a single API return call.

Probably that will be a future enhancement as need to have more (high performance) servers to perform this - which will turns my Valorant API to be Freemium subscription basis for such features.

Hi, is it possible with your API to display a players peak rank, and if not, do you plan to implement this? Or shall I write something on my end that just queries all acts and grabs peak? Thank you!

@Plaid Otter
I don't have any plans to have this API added but I will do a poll on this soon. If this request is high demand, I will develop. But this might be a freemium feature since it will use more computing power.

Hi, I tried to use the command but it doesn't work, what's the problem?

Screenshot_20221217-061156080_1.jpg

@Loopy Raccoon Can u provide me in text form here? I can try to troubleshoot this for u. It could be the username issue.

$(urlfetch https:// api.kyroskoh.xyz/valorant/v1/mmr/eu/ангедония/404?show=all&display=0)

I removed the space to send it here, on Twitch the command is written normally, that's not the problem.

I don't understand why it doesn't work.

Screenshot_20221220-212100528_1.jpg

@Loopy Raccoon I guess the bot cannot handle russian characters but the browser result has no issue.

So, just need to change the nickname in the valorant to English, and everything will work?

@Loopy Raccoon it should work in English but it will take time to reflect to update due to change of nickname.

I have a problem where I am trying to put it to where it shows Plat 2 - XXrr but it keeps showing as null - nullrr. Any way to fix this?

Yo! How can I do it like here? Without MMR n wins. Something like:
"player" is "rank immo or radiant" and "place in leaderboard" on the leaderboard.

.

Screenshot_1.png

Keeps giving me error "Error Connecting To Remote Server". Anything u can suggest to fix this issue?

Hi, do you know how to make or can you make a record command like this here? Which displays the record of the games during the last stream?

Bildschirmfoto_2023-03-23_um_16.07.52.png

How do I do it with the Google Translate API?

Hello, can you explain to me what is wrong?
I'm putting the right command with the symbol, and space (%20) but it still doesn't work..

elo.jpg

If u received null values means it has issue with your current ID/Tag where u might have recently changed ur handle.

Tracker.GG is more realtime to have leaderboard. The API leaderboard is based on the valorant leaderboard in the website but not realtime. Probably will develop this in future.

It is due too many requests to the server. For now, it is free for all where it doesn't have any priority queue to receive the response. In future, I might implement premium user who supports the project to use priority queue so lower the connection issue difficulties.

This is in the plan in development in future (probably only available for premium project supporter) where it will need more resources to display match history at one code for more intensive computing power.

Translation module is not available and not coded. U might have to parse the result to another translate API/platform at the time being. This feature is taken as consideration for future development where it might be available only for premium project supporter.

that character after %20 isn't supported for encoding. u might need to change ur username.

Hey im trying everything and for some reason i still cant get it to work, I keep getting messages like "error connecting to remote server" or "unexpected identifier" or "remote server returned code 400"

Or if you can are you able to make a link for me to use for !rank on nightbot? my valorant tag is centraleric#cakes

Is it possible to add something like "X RR away from Radiant"? So it'd be like "Deify's current RR is 200RR in Immortal 3. 300RR away from Radiant."

Any update from this feature? I would really like this to be implemented

mine just didn't work and i did everything right :( when i try, it shows the message like: null - null

@Hushed Monkey still not workig :( i swear, i tried a lot of things

elo_2.png

hi! how would you edit it for someone with 2 names in the first part? my riot ID is "alien emoji#420" and i cant figure out how to change it in the command

replace the space with %20
like "frank moses" would be frank%20moses

Suddenly api returning Remote Server Returned Code 400
was working right 24 hours ago.
The last note

are u sure that u are in the correct region?

ty for your assistance in replying! 🙂

Sorry for the return code of status 400. The reason is having too many requests which have overwhelmed the worker nodes and these nodes will terminate earlier than expected since the response for the result will be delayed (bcos it can't find the session)

Confused.
it works sometimes. it is not right now. is there a limitation if we put more than 1 urlfetch in 1 message ?

image.png

what does the command response in nightbot look like?

There's no limitation but it will be a slow response as it will fetch 2 queries (excluding account-uuid lookup) and merge into 1 command. Chatbot doesn't wait. It will just display whatever it fetches even if the result took longer than expected (due to overwhelmed usage).

You could try to separate it into 2 commands.

just to be clear. the backend do it sequentially and not parallelly ?

My friend has been getting the error 400 response for some days now. I've checked that the ID, tag, and region are in properly and even redid it a couple of times but still getting the same error.

The code is implemented with await and async depending on the various API endpoints as each API will perform account-uuid lookup when fetching account information and then parse to the various API endpoints to process the Rank MMR but the chatbots don't increase the timeout duration if the API fetches for a longer time which will result as HTTP Status 400.

So if you add another ID, Tag and Region to the same command, it will be even longer as what you have experienced.

I suggest you to split it up and put it something as !rank and !smurfrank

Can you provide me your friend's ID, Tag and Region for my troubleshooting?

yess, i'm from brazil, it's na right?

Yup! You may try it out or provide me your ID and Tag!

Hey,
would it be possible to also get the data back as JSON?

so for example:

api.kyroskoh.xyz/valorant/v1/mmr/eu/philipp/1710?show=json

{
"rr": 5,
"mmr": 1205,
"last_map": "breeze",
and so on...
}

that would be extremely helpful

Thanks for your interest! 🙂 I need more people to upvote your request so that I will have a plan to release it in JSON format near in the future!

how does one upvote?... i would like to upvote the json idea ^^

Parsing error at position 11: Mismatched input list, missing end of inputs

May I know what is the riot id, tag and region?

Here is the IGN: Ichi ツ#1910

Would it be possible to get two added at the same time?

Since one day ago it always returns error 404

Yes, but the response will be slow... and sometimes one of the results will be invalid.

Why is it show you 404? Did you recently change your Riot ID and Tag?

hi would it be possible to simplify "[Refresh Daily] Total of 4W-5L in ranked matches within the past 24 hours! DOWN: Lost -62RR within the past 24 hours! Win Percentage: 44.44% | Win-Loss Ratio: 0.80"
to something like this [Refresh Daily] Total of 4W-5L in ranked matches within the past 24 hours! DOWN: Lost -62RR within the past 24 hours ? thanks

the api seems to be down maybe? It's been a couple days and it's been returning a 404 and I haven't changed my username or tag since valorant released so I'm wondering if there's a fix?

im trying to set this up for my friend but he has a space in his name and idk how to make it work with the space could you please help me

just put %20 in place of the space... like if the name is "frank moses" u'd put frank%20moses

Hello, is it possible to develop my own project using your API?
If it isn't I will understand
I'm being blocked by CORS, the error that returns is: "has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource."
So I would need something to use it, thanks for you time and patience

Is there a way to edit the responses?

there r several options built in, if u scroll up near the top of this thread it has all the instructions... if none of those fit what u're looking for, a little javascript can rearrange the data it provides

Hello. I'm currently trying to setup the command but it would seem that the API is down. Would you mind checking?

Can you share me your ID, Tag and Region?

Sure. Lmmb74#knd LATAM
I didn't try again the api since my last message though. I must use na for latam, right?

Request failed with status code 400. what happend? my riot id : Lonelyboys#UwU

Hello @Hushed Monkey , can you help me with something?
I'm gonna try to learn how to use api. I have a litte account list for valorant, i want to see all accounts rank and rr points. I wrote it on python but it seems it doesn't work. Getting status code 400. Can you contact or reply me please?
Also is it possible to get a one more region for tr Turkey? Or is it in eu?

Hi @Hushed Monkey , thank you for your custom API. I have setup a rank command in the past and it was working flawlesly, until a few days ago it stopped working, now getting error: "Request failed with status code 400." What happened? Did API get changed?

Well it looks like it is back up and working :)

Broken again for quite some time now... 😦

@Hushed Monkey Hello! I've been using your API for months now but recently it's been returning the 400 error code when the command is used.

I tried the command in 3 other channels and I'm getting the same thing there.

Is the API down at the moment?

Hi, I am having the same problem of the code returning the 400 error. Been using this code for months and it worked fine until now.

hi kyros, the api gives me "request failed with status code 403" for 2-3 weeks. is there any issue?

did the api change or do i need some permission ? getting this error: Request failed with status code 401.

hello i tryed to use your API about rank but its not working its giving
the error Remote Server Returned Code 400 can you plz help me with this ?

{
"status": 401,
"errors": [
{
"message": "Invalid API Key",
"code": 1,
"details": "null"
}
]
}

i think the api seems broken.

I have temporarily implemented a workaround with some rate limits and blacklisting.

Hello

Does the Elo MMR work? It just returns my rank and my RR

Also, any updates on translations?

Thank you

Hello can command work if my region is Turkiye,If so, what should I enter in the [region] section?
TUR
@Hushed Monkey

hi! was wondering if there is a way to make it so every user in chat could check their own rank. !checkrank would trigger the command. !checkrank ign tag and region and then it would enter it to the code you made. you reckon that's possible?

Hey I was wondering if the API is still working when I try my command it give me back an error saying host error

Using $(urlfetch https://api.kyroskoh.xyz/valorant/v1/mmr/eu/BoaHancock/cat1/e9a3?show=winsonly&display=0))
BoaHancock#cat1 (EU Region): In e9a3 - undefinedW-NaNL in undefined games. (NaN% wins)
I get this

hey @Hushed Monkey , I have been trying to put a command, but there are spaces in between the id, and not it shows Remote server returned code 400, can u help me with that
S8ul sid#5891

its S8UL SID #5891 pls tell the command once

Is the API working? Im getting "unable to make request"

I think you are gonna have to apply some harsher rate limit because people are abusing and the command sometimes works and others dont

Guy seems to have left us. Thanks anyways

Hi, any Info if the server problem can be solved?

image.png

Still not working so its down...There are alternatives

After server host migration and revamping with rate limit, It is now up. Running on 4 nodes.

[EDIT - 29 Dec 2025]: Increased from 27 to 33 nodes.
[EDIT - 15 Nov 2025]: Increased from 14 to 27 nodes.
[EDIT - 9 Nov 2025]: Increased to 14 nodes.

Visit for Server Nodes Location info

You can now generate ready-to-use commands for the bot you use in your stream chat directly from my frontend site:

https://api.kyroskoh.xyz/valorant/

How it works:

1. Choose your preferred language.
2. Select the endpoint you want.
3. Generate the command.
4. The next tab will let you pick your stream bot (e.g., Nightbot, StreamElements, etc.).
5. Copy and paste the command straight into your stream chat.

I’ve also added the &lang={lang} parameter, so some commands will automatically translate based on the selected language — for example, the Win/Lose endpoint.

Didn't find your answer? The community is on Discord.

Ask on Discord