05 / RIOT GAMES APIWhat DRAFT asks Riot for, and why.
The core ranking works without any request to Riot. The official API powers three optional features, always started by the user from the settings or the tray icon menu. They are described as they work in version 2.16 beta.
1 · PERSONAL HISTORYImport your ranked games
The user enters one or more Riot IDs, a region and how many games to read (100, 200 or 500 per import). The tool is meant for the user's own accounts; in the beta, nothing verifies ownership (see Riot Sign On below).
ACCOUNT-V1 /riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine}MATCH-V5 /lol/match/v5/matches/by-puuid/{puuid}/ids?queue=420MATCH-V5 /lol/match/v5/matches/{matchId}
Kept on the PC until deleted: the Riot ID entered; for each ranked solo/duo game longer than 5 minutes, its ID, date, patch, duration, champion, position, result, K/D/A and the enemy champions. No name or identifier of any other player.
Shown: most played champions and records in the Games tab.
2 · ROLES PER CHAMPIONAggregated statistics
To guess the enemy champions' roles, especially mid, DRAFT counts positions played over about 1,000 recent ranked games (last 14 days). It takes about 40 minutes.
LEAGUE-EXP-V4 /lol/league-exp/v4/entries/RANKED_SOLO_5x5/{tier}/II?page=1 — Silver to Emerald, starting pointMATCH-V5 match lists (5 games per player) and match details
Kept: champion × position counters per patch, the IDs of matches already read and a few compositions (champions only) used to measure how accurate the guesses are. Starting players stay in memory and are never saved.
3 · POOL MATCHUPSRecords against the direct opponent
For the "direct matchup" criterion, DRAFT measures how the pool's champions fare against their same-position opponent over the last 30 days. It starts from the same lists, then follows, in memory, players who play those champions. At most 3,000 requests, about 65 minutes.
LEAGUE-EXP-V4 same starting point as aboveMATCH-V5 ranked solo/duo match lists and details
Kept: wins and games per pool champion and per opponent, per patch, and the IDs of matches read. Below 30 games for a matchup, the record is not used and the hand-written table remains the reference.
Key never exposedIn the beta, each user enters their own development key. It is masked on entry, sent only to Riot in the X-Riot-Token header, never in a URL, and is neither stored nor logged.
Rate limits respectedAt most one request every 1.3 seconds, below a personal key's limit (100 requests per 2 minutes). On a 429 response, DRAFT waits for the Retry-After delay. On 401 or 403, it stops.
No duplicatesMatches already read are never requested again. A recent role computation (under 3 days) is not rerun, and the next import resumes where the previous one stopped.
NOT THE RIOT DEVELOPER APIClient reading (LCU) Experimental · off by default
The League client's local API runs on the player's PC: it is not the public Riot Developer API, and Riot states it is not officially supported for third-party applications. If the user enables it, DRAFT only sends read requests (GET) to two local endpoints: /lol-gameflow/v1/gameflow-phase and /lol-champ-select/v1/session. It keeps the phase, enemy champions already locked in and the player's assigned position. It ignores names, identifiers, hovers, allied picks and bans. This use will be declared in the registration request to Riot.
STATIC DATAData Dragon
Champion artwork and the version list are loaded from ddragon.leagueoflegends.com, Riot's static content service. No key is needed.
PLANNED ARCHITECTURE WITH A PRODUCTION KEY · NOT BUILT YETA production key cannot be embedded in a distributed app. The project therefore plans a DRAFT server that would keep the key, compute aggregated statistics (roles and matchups) once and distribute them as anonymous counters. The app would no longer need any key, and the total number of requests sent to Riot would drop sharply. Personal history import would go through Riot Sign On, so that each player only imports their own accounts.