v4.0.0
Key Requirement
Due to recent botting attacks that impacted everyone in terms of global 429 errors, an API Key is now required. As this would break twitch bots (no ability to set headers), you can authenticate with the?api_key query param. But no worries, you can easily get a key without waiting time, just follow the following steps:
- Join on the discord: https://discord.com/invite/X3GaVkX2YN
- Verify
- Go to the #get-a-key channel
- Select from the dropdown list “VALORANT (Basic Key)”
Friendly reminder here: This API is not designed to be used in production apps, so custom keys are not guaranteed to be granted
Performance & Capacity
Version 4 is written in Rust, which enables higher performance and lower latency for each request & and the overall ability to handle more requests at the same time. The amount of backend proxies also were upgraded to 7.5x in comparison to v3, allowing higher limits and more requests to be handled.Rate Limit Calculation
The way of how the rate limit is calculated will be changed. Right now it’s simply 1 request to API = +1 in your rate limit. As some of these calls require fetches from riot, some do not (cache, database or simply local generated like the crosshair endpoint) this will change. The biggest issue is the rate limit to riot, not the amount of requests the server can handle. So the new rate limiting will look like this:Example 1
- Endpoint: /valorant/v3/matches/eu/Henrik3/VALO?size=10
- 7 Matches stored on the server for this user
- Hit cache: false
- Required Requests to Riot:
- 1x history
- 3x matches (the ones not stored on server)
- Ratelimit increase: 1 (Call to API) + 4 (Calls to Riot) = 5
Example 2
- Endpoint: /valorant/v3/matches/eu/Henrik3/VALO?size=10
- 10 Matches stored on the server for this user
- Hit cache: true
- Required Requests to Riot:
- 0x history
- 0x matches (the ones not stored on server)
- Ratelimit increase: 1 (Call to API) + 0 (Calls to Riot) = 1
New Headers
Every Request now contains a X-Cache-Status header, which indicates if the response data was created from the internal cache. These values can be HIT or MISS. If the state is HIT, there also is a X-Cache-TTL header, indicating the time in seconds the cache (or if multiple caches used the cache TTL that will expire first) will expire and new data can be fetched. If the state is MISS, this header will not exist.Error Handling & Error Codes
- Error messages should be now more clear and reliable, no more random 500 error codes except real code issues
- Due to this, the error codes have changed and there are some few more of them, you can find them here
Deprecations
The following endpoints will be deprecated- /valorant/v1/mmr/:affinity/:name/:tag
- /valorant/v1/by-puuid/mmr/:affinity/:puuid
- /valorant/v1/leaderboard/:affinity
- /valorant/v1/lifetime/matches/:affinity/:name/:tag
- /valorant/v1/by-puuid/lifetime/matches/:affinity/:puuid
- /valorant/v1/lifetime/mmr/:affinity/:name/:tag
- /valorant/v1/by-puuid/lifetime/matches/:affinity/:puuid
Routing Issues (Telekom)
As you may have noticed, there is an issue with routing if you have a Telekom (German, Hungary, Romania) connection. This is related to the peering between Telekom and CF, routing the package via NewArk in every case, resulting in a latency increase by 9x in average in the eu. The change that should fix this is applied forbeta.api and eu.api already.
For example:
Endpoint: Account
New Version
- Implement new, more stable way to get the puuid
- Streamlined data structure (no more unix timestamps, no formated “X minutes ago”)
Endpoint: Leaderboard
Changes
- Query params:
name,tag,puuid,season- Will now be fetched directly if it’s the current season (and not from 30min update cycle)
- Has a cache of 5min to reduce load
New Version
- Improved fetching performance
- Support for
pcandconsole - Streamlined data structure (no mix between camelCase and under_score properties)
- New query params:
start_index:number=> Between1&amount Of Players (dynamic)size:number=> Defaults to 1000 => Between1&amount Of Players (dynamic)
Endpoint: MMR
Changes
- The MMR v2 endpoints will now not have the ability anymore to filter by season with
?season
New Version
- Streamline property names (like
currenttier=>tierorranking_in_tier=>rr by_seasonis now an array
Endpoint: Matches
New Version
- Skipped v3 for
/valorant/:version/match/:region/:idto align version numbers - Added
regionparam to the url- This saves (potentially) 3 unnecessary requests to the riot servers => 3 requests less that can be used elsewhere
- Removes duplicate data fragments and unnecessary data
Endpoint: Premier
Changes
/valorant/v1/premier/search
- The API now only returns 50 entries if no query parameters are provided instead of the whole database
- This was a bug in v3 and not intentional
- Added a new property to each object:
updated_at: Date
/valorant/v1/premier/:name/:tag & /valorant/v1/premier/:id
- These endpoints will now not return the 500 error code anymore
- You can still only find teams that are enrolled and indexed in the ingame leaderboard
- The leaderboard is getting scanned for updated/teams every three hours
