Teamfight Tactics

Overview

This document will provide you with a basic understanding of the Teamfight Tactics developer resources. It is designed to help you begin exploring and developing your own tools and products for Teamfight Tactics.

Getting Started

Before starting on a product for Teamfight Tactics, there are two requirements every developer must complete:

  1. Read the general policies
  2. Register your product

Only after developers have read the policies and registered their product on the Developer Portal, are they granted a limited license to use Riot Games’ intellectual property (IP) outlined in the Legal Jibber Jabber.

After you’ve read the policies and registered your product, it’s smooth sailing from there. We suggest following our Twitter and checking our blog to receive updates and joining the Developer Discord for help from the community. The Developer Discord is full of super talented and passionate developers that often run into the same issues you have. When you ask questions in the Discord you’ll likely get more people helping you and your question will help others that joined after you. We hold office hours every other Friday where members of the Discord can ask questions related to developer tools or their projects. Beyond that gl and hf. Send us an app note if you run into issues that the community couldn’t help you with.

Routing Values

The first step to executing a request to the Teamfight Tactics API is to select the correct host to execute your request to. The Teamfight Tactics (TFT) API uses what we call routing values in the domain to ensure your request is properly routed. We use both platform ids and regions as routing values (e.g., na1 and americas). These 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. Occasionally services are 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

Regional Routing Values

Region Host
AMERICAS americas.api.riotgames.com
ASIA asia.api.riotgames.com
EUROPE europe.api.riotgames.com

Teamfight Tactics 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 be able to 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.

Match History

Best Practices

To best utilize 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'll return data_version: "1" which is used through patch 9.20. In patch 9.19, the only fields for a participant that are guranteed to be accurate are last_round, level, placement, and puuid. In patch 9.20, items were added to the response body but were not guranteed to be accurate. As of patch 9.21 all the 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. With Set 2 launching on November 4th, 2019 and the data inconsistencies prior to patch 9.20, we’re discouraging developers from backfilling data for Set 1.

Static Data

There is currently no static content that is 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.

Current Set

Reckoning: Dawn of Heroes contains static data for traits, champions, and items.

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