Developer API Policy
Before you begin, read through the General and Game Policies, Terms of Use and Legal Notices. Developers must adhere to policy changes as they arise.
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 cannot feature betting or gambling functionality.
- 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.
- If you are a tournament organizer operating in Europe, please refer to, and adhere to, these European 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 display win rates for Legends and Legend-based Augments. This applies to all websites, applications, and overlays.
- 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.
-
Apps and overlays during gameplay (including the loading screen) may not track your opponent’s champions/plays or predict their next plays. This includes aggregate stats for both individual players and the lobby
- Examples:
- A player/lobby’s most played champ/synergy/augment may not be displayed during gameplay
- A player/lobby’s predicted next play based on the board may not be displayed during gameplay
- Examples:
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 request one at developer.riotgames.com after reading through our policies. If approved, we will contact you in the developer portal app messaging to kick off the RSO integration process.
Implementing RSO
- Client Secret Basic RSO instructions: Implementing Riot Sign On
- JWT RSO instructions: Implementing RSO - JWT
- Sample RSO Node App
Players should be directed to login at this link:
After logging in, players are redirected back to the redirect_uri you specified.
See Implementing Riot Sign On and Sample 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 Teamfight Tactics, 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 accounts data returned 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.
Data Dragon
Teamfight Tactics static data is included in the League of Legends Data Dragon. You can download a compressed tarball (.tgz) for each patch that contains all active set assets for that patch.
Please note there are no indicators about which data is related to which set apart from the naming convention, which varies by set and type of data.
Updating Data Dragon after each League of Legends/Teamfight Tactics patch is a manual process, so it is not always updated immediately after a patch.
Latest
https://ddragon.leagueoflegends.com/cdn/dragontail-14.16.1.tgz
Patch 10.10 was uploaded as a zip archive (.zip) instead of the typical compressed tarball (.tgz)
https://ddragon.leagueoflegends.com/cdn/dragontail-10.10.5.zip
Versions
You can find all valid Data Dragon versions in the versions file. Typically there is only a single build of Data Dragon for a given patch, however, there may be additional builds. This typically occurs when there is an error in the original build. As such, you should always use the most recent Data Dragon version for a given patch for the best results.
https://ddragon.leagueoflegends.com/api/versions.json
Regions
Data Dragon versions are not always equivalent to the League of Legends client version in a region. You can find the version each region is using in the realms files.
https://ddragon.leagueoflegends.com/realms/na.json
Data & Assets
Below, you can find the available data for Teamfight Tactic sets.
Arena Mode
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-arena.json
Includes id, translated name and image for all arena skins. Icons are under img/tft-arena/
{
"type": "tft-arena",
"version": "0.0.0",
"data": {
"Base": {
"id": "1",
"name": "Default Arena",
"image": {
"full": "1.png",
"sprite": "tft-arena0.png",
"group": "tft-arena",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Augments
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-augments.json
Includes id, translated name, and image for all non-hero augments for all active sets. Separate section at the top of the file has information about the augment container for all active sets. Augment container icons are under img/tft-augment-container
. Augment icons are under img/tft-augment
.
{
"type": "tft-augment",
"version": "0.0.0",
"augment-container": {
"name": "Hexcore Augments",
"image": {
"full": "EOG_AugmentPop_Generic.TFT_Set9.png",
"sprite": "tft-augment0.png",
"group": "tft-augment",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
"data": {
"TFT6_Augment_SalvageBin": {
"id": "TFT6_Augment_SalvageBin",
"name": "Salvage Bin",
"image": {
"full": "Salvage2.png",
"sprite": "tft-augment0.png",
"group": "tft-augment",
"x": 48,
"y": 0,
"w": 48,
"h": 48
}
}
...
Champions
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-champion.json
Includes id, translated name, tier, and image for all champions for all active sets. Icons are under img/tft-champion
.
{
"type": "tft-champion",
"version": "0.0.0",
"data": {
"TFT9_Irelia": {
"id": "TFT9_Irelia",
"name": "Irelia",
"tier": 1,
"image": {
"full": "TFT9_Irelia.TFT_Set9.png",
"sprite": "tft-champion0.png",
"group": "tft-champion",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Items
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-item.json
Includes id, translated name, and image for all items for all active sets. Note that items is a broad category and this includes equippable components and items, consumables, and armory options. Icons are under img/tft-item
.
{
"type": "tft-item",
"version": "0.0.0",
"data": {
"TFT_Consumable_NeekosHelp": {
"id": "TFT_Consumable_NeekosHelp",
"name": "Champion Duplicator",
"image": {
"full": "TFT_Consumable_NeekosHelp.png",
"sprite": "tft-item0.png",
"group": "tft-item",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Queues
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-queues.json
Includes queue id, translated name, queue type (can be cross-referenced with tft-regalia), and image. Icons are under img/tft-queue
.
{
"type": "tft-queue-types",
"version": "0.0.0",
"data": {
"1090": {
"id": "1090",
"name": "NORMAL",
"queueType": "NORMAL_TFT",
"image": {
"full": "1090.png",
"sprite": "tft-queue-type0.png",
"group": "tft-queue-type",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Regalia
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-regalia.json
Includes the image for the ranked and rated icons. Underneath "data" is each queue type (can be cross-referenced with the data in tft-queues.json); underneath each of those is the tiers and the associated images. Icons are under img/tft-regalia
.
{
"type": "tft-regalia",
"version": "0.0.0",
"data": {
"RANKED_TFT": {
"Bronze": {
"image": {
"full": "TFT_Regalia_Bronze.png",
"sprite": "tft-regalia0.png",
"group": "tft-regalia",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Tacticians
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-tactician.json
Includes the id, tier, translated name, and image for all tacticians (Chibis and little legends). Icons are under img/tft-tactician
.
{
"type": "tft-tactician",
"version": "0.0.0",
"data": {
"13010": {
"id": "13010",
"tier": "1",
"name": "Beatmaker Ossia",
"image": {
"full": "Tooltip_AkaliDragon_Beatmaker_Tier1.png",
"sprite": "tft-tactician0.png",
"group": "tft-tactician",
"x": 0,
"y": 0,
"w": 48,
"h": 48
}
},
...
Traits
https://ddragon.leagueoflegends.com/cdn/13.24.1/data/en_US/tft-trait.json
Includes the id, translated name, and image for all traits for all active sets. Icons under img/tft-trait
.
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/X for the latest updates.