Developer API Policy
Before you begin, read through the Terms of Use and Legal Notices. Developers must adhere to policy changes as they arise.
When developing using the API, you must abide by the following:
- Products cannot violate any laws.
- Do not create or develop games utilizing Riot’s Intellectual Property (IP).
- No cryptocurrencies or no blockchain.
- No apps serving as a “data broker” between our API and another third-party company.
- Products cannot closely resemble Riot’s games or products in style or function.
- Only the following Riot IP assets may be used in the development and marketing of your product:
- Press kit
- Example: Using Riot logos and trademarks from the Press Kit must be limited to cases where such use is unavoidable in order to serve the core value of the product.
- Game-Specific static data
- You must post the following legal boilerplate to your product in a location that is readily visible to players:
- [Your Product Name] is not endorsed by Riot Games and does not reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Riot Games properties. Riot Games and all associated properties are trademarks or registered trademarks of Riot Games, Inc
Registration
If your product serves players, you must register it with us regardless of whether or not your product uses official documented APIs. You must make sure its description and metadata are kept up to date with the current version of your product.
Monetization
To monetize your product, you must abide by the following:
- Your product must be registered on the Developer Portal and your product status is either Approved or Acknowledged.
- You must have a free tier of access for players, which may include advertising.
- Your content must be transformative if you are charging players for it.
- What is transformative?
- Was value added to the original by creating new information, new aesthetics, new insights, and understandings? If so, then it was transformative.
- Acceptable ways to charge players are:
- Subscriptions, donations, or crowdfunding.
- Entry fees for tournaments.
- Currencies that cannot be exchanged back into fiat.
- Your monetization cannot gouge players or be unfair, as decided by Riot.
- What is transformative?
If you are unsure if your monetization platform is acceptable, contact us through the Developer Portal.
Security
You must adhere to the following security policies:
- Do not share your Riot Games account information with anyone.
- Do not use a Production API key to run multiple projects. You may only have one product per key.
- Use SSL/HTTPS when accessing the APIs so your API key is kept safe.
- Your API key may not be included in your code, especially if you plan on distributing a binary.
- This key should only be shared with your teammates. If you need to share an API key for your product with teammates, make sure your product is owned by a group in the Developer portal. Add additional accounts to that account as needed.
Game Integrity
- Products cannot alter the goal of the game (i.e. Destroy the Nexus).
- Products cannot create an unfair advantage for players, like a cheating program or giving some players an advantage that others would not otherwise have.
- Products should increase, and not decrease the diversity of game decisions (builds, compositions, characters, decks).
- Products should not remove game decisions, but may highlight decisions that are important and give multiple choices to help players make good decisions.
- Products cannot create alternatives for official skill ranking systems such as the ranked ladder. Prohibited alternatives include MMR or ELO calculators.
- Products cannot identify or analyze players who are deliberately hidden by the game.
Tournament Policies
- Tournaments must:
- Follow all monetization policies above.
- Allot at least 70% of the entry fees to the prize pool.
- Win conditions must be fair and transparent to players (we determine fair).
- Must have at least 20 participants.
- Not include any gambling.
- If you are a tournament organizer operating in the US or Canada please refer to, and adhere to, these North American tournament organizer policies.
- If you are a tournament organizer operating in Oceania please refer to, and adhere to, these Oceanic tournament organizer policies.
Game Policy
Use Cases
Riot analyzes two main factors when evaluating applications:
- Is the use case good and approved?
- Does the developer show they will deliver on that use case?
To demonstrate that your app meets the use case, you should have one or more of the following:
- Be an established brand that wants to add Riot Games to its portfolio.
- New app that is fully functional and testable by Riot.
- Prototype that is mostly testable by Riot.
- Mockups where Riot can clearly express your intent and the user flow.
- A deck that shows your ambition and intent and some of the user flow.
Riot needs to see the user flow to understand what your intended player experience is, such as account creation process, login pipeline, or queuing up for match pipeline.
You must also send a link to a working site, mockup, prototype, or rendering where it is easy to understand the user flows of the tool.
Examples of Approved Use Cases for Personal Keys:
- Personal sites.
- School projects .
- Creating a proof of concept for Production Key request.
Examples of Approved Use Cases for Production Keys requiring RSO integration:
- Showing (self) player stats.
- Running tournaments.
- Training tools that allow players to view their own match histories and aggregate stats.
- LFG tools.
- Game overlays that provide static data that is available prior to the game.
Examples of Approved Use Cases for Production Keys not requiring RSO integration:
- Aggregate player stats (no specific players).
- Official Ladder Leaderboards.
Examples of Unapproved Use Cases
The following use cases will not be approved:
- Scouting - tracking the champions opponents have on their boards.
- Products that bypass a skill test for the player. Skill tests can include the tracking of diverse information over a short period of time.
- Apps that provide dynamic, real-time information.
- Apps that dictate player decisions.
TFT Personal Keys
Use keys for the following reasons:
- Personal keys are meant for smaller-size, personal projects.
- Production keys are meant for larger-size, professional projects.
General Teamfight Tactics Policy
The following policies apply to Teamfight Tactics:
- Products cannot alter the goal of the game, for example, they cannot destroy the Nexus.
-
Products that help players improve their skills over time are encouraged. Pre-game best practices or post-game analysis are great spaces for this.
-
Having a static recommendation for a player pre-game is acceptable, even if that same recommendation is available to you the entire game.
-
Issues arise when the recommendations adjust in real time based on the player’s actions in game and give direct prescriptions of what to do.
-
Products cannot bypass a skill test for the player. Skill tests can include the tracking of diverse information over a short period of time.
-
Protect the learning curve. The great thing about Riot's games is that you are always learning. If an app takes away that ability or desire to learn and improve, this takes away from the fun and what makes this game so engaging.
-
Products should not remove game decisions, but may highlight decisions that are important and give multiple choices to help players make good decisions.
-
Products may not provide information that was not available prior to the game. For example, an app can provide metadata on augment statistics as this information is available prior to the game and is not based on in-game activity. An app cannot make suggestions based on the player’s current game state as that information is dynamic and not readily available prior to the game start.
- Products should increase not decrease the diversity of game decisions, in builds, compositions, characters, decks.
-
Products cannot create an unfair advantage for players, such as cheating or giving some players an advantage that others would not otherwise have.
-
Apps and overlays during the game may not include any real-time data that would improve a player’s performance immediately by altering player behavior, such as "go here now" versus altering it upon reflection, learning and coaching the player game over game.
RSO Integration
RSO or Riot Sign On, allows players to safely link their Riot Account to other applications.This access is only available to developers with Production Level API Keys
Getting a Production Key
Before you can get started with RSO, you will need a production key. If you do not have one, please create one at developer.riotgames.com. We will contact you using the email linked to your developer account to kick off the RSO integration process.
RSO Client Creation
To create an RSO client, send us the following information:
- Email addresses of contacts for your application.
- Name of your company/service.
- Logo for your company/service.
- The logo should scale well between 275x275 down to 60x60. We typically suggest images in the SVG format. The logo will be displayed on light and dark backgrounds.
- URL for your privacy policy.
- URL for your Terms of Service.
- Redirect URLs.
- Your redirect URIs cannot be direct IP addresses. HTTPS is required.
- Your redirect URIs cannot include localhost. Instead, for local development, you can use something like "http://local.safe.urlgoeshere.com/account/connect/riotgames/oauth-callback" and add an entry to your local machine's host file for "local.safe.urlgoeshere.com".
- A list of any URLs you'd like RSO to redirect the players to after they've completed their login.
- Typically this is a callback URL (e.g., example.com/oauth-callback) that you'll use to gather information about the player who completed the login.
- Post Logout Redirect URIs.
- A list of any URLs you'd like RSO to redirect the players to after they've logged out.
- Preferred ClientID
- A unique name for your product without punctuation or spaces.
- A list of games you'll need access to.
Direct players to login at this link: https://auth.riotgames.com/authorize?client_id=&redirect_uri=&response_type=code&scope=openid+offline_access.
After logging in, players are redirected back to the redirect_uri you specified. See Implementing Riot Sign On and Example RSO Node App for information about how to integrate with RSO and to view a sample Node web server that implements the example.
Your RSO client has access to endpoints that will allow you to identify who logged in.
For Legends of Runeterra, you will use /riot/account/v1/accounts/me:
curl --location --request GET 'https://americas.api.riotgames.com/riot/account/v1/accounts/me' --header 'Authorization: Bearer {accessToken}'
curl --location --request GET 'https://europe.api.riotgames.com/riot/account/v1/accounts/me' --header 'Authorization: Bearer {accessToken}'
curl --location --request GET 'https://asia.api.riotgames.com/riot/account/v1/accounts/me' --header 'Authorization: Bearer {accessToken}'
The data return from each cluster is identical. We recommend using the cluster closest to your servers.
Routing Values
To execute a request to the Teamfight Tactics (TFT) API, you must select the correct host to execute your request to. The TFT uses routing values in the domain to ensure your request is properly routed. Platform IDs and regions as routing values, such as na1
and americas
. Routing values are determined by the topology of the underlying services. Services are frequently clustered by platform resulting in platform IDs being used as routing values. Services may also be clustered by region, which is when regional routing values are used. The best way to tell if an endpoint uses a platform or a region as a routing value is to execute a sample request through the Reference page.
Platform Routing Values
Platform | Host |
---|---|
BR1 | br1.api.riotgames.com |
EUN1 | eun1.api.riotgames.com |
EUW1 | euw1.api.riotgames.com |
JP1 | jp1.api.riotgames.com |
KR | kr.api.riotgames.com |
LA1 | la1.api.riotgames.com |
LA2 | la2.api.riotgames.com |
NA1 | na1.api.riotgames.com |
OC1 | oc1.api.riotgames.com |
TR1 | tr1.api.riotgames.com |
RU | ru.api.riotgames.com |
PH2 | ph2.api.riotgames.com |
SG2 | sg2.api.riotgames.com |
TH2 | th2.api.riotgames.com |
TW2 | tw2.api.riotgames.com |
VN2 | vn2.api.riotgames.com |
Regional Routing Values
Region | Host |
---|---|
AMERICAS | americas.api.riotgames.com |
ASIA | asia.api.riotgames.com |
EUROPE | europe.api.riotgames.com |
Match History
Best Practices
To best use TFT match history, there are two things to keep in mind—match history is still evolving and fresh data is cheaper.
Response Body Structure
A basic version of TFT match history was released in the client in patch 9.19. If you look up matches played during this patch, they return data_version: "1"
which is used through patch 9.20. In patch 9.19, the only fields for a participant that are guaranteed to be accurate are last_round
, level
, placement
, and puuid
. In patch 9.20, items were added to the response body but were not guaranteed to be accurate. As of patch 9.21, all fields in the response should be accurate. As of patch 9.22, a new field called character_id
was added to the UnitDto and the data version was bumped to data_version: "2"
.
Fresh Data
The match history service itself is optimized for fresh data. The newer the matches, the cheaper the cost to look them up. It is not recommended to backfill data for Set 1.
Static Data
There is no static content automatically built for each patch of Teamfight Tactics. Many of the assets from Teamfight Tactics can be gathered from League of Legends' Data Dragon. Below you can find some basic static data for Teamfight Tactic sets.
Traits
[
{
"key": "Set5_Abomination",
"name": "Abomination",
"description": "When allied champions have died, the Monstrosity will rise from its grave. The Monstrosity receives bonus Health and Attack Damage based on allied Abomination champions' star levels. The 3 Abomination champions nearest the grave will also grant the Monstrosity a random copy of one of their items when combat starts.",
"type": "origin",
"sets": [
{
"style": "silver",
"min": 3,
"max": 3
},
{
"style": "gold",
"min": 4,
"max": 4
},
{
"style": "chromatic",
"min": 5
}
]
},
...
]
Champions
[
{
"name": "Aatrox",
"championId": "TFT5_Aatrox",
"cost": 1,
"traits": [
"Set5_Redeemed",
"Set5_Legionnaire"
]
},
...
]
Items
[
{
"id": 1,
"name": "B.F. Sword",
"description": "Gain Attack Damage.",
"isUnique": false,
"isShadow": false
},
...
]
Previous Sets
Reckoning
Fates: Festival of Beasts
Fates
Galaxies: Return to the Stars
Galaxies
Rise of the Elements
Getting Help and Staying Up-to-date
If you run into any difficulties or are having technical issues, please join Developer Discord for support. Follow our Twitter for the latest updates.