Reviewer Guide & API Usage
01Product summary
ORIVEIL is a Windows desktop app that helps VALORANT players review their own post-match data and play with friends. It has four features: (1) stats, growth analytics and party history, (2) a team composition advisor, (3) a friend league and (4) a streaming overlay for OBS. It is free, and all data is stored on the user’s PC.
Audience: players who want to improve, groups of friends, and streamers.
02Current status
- The app (v1.1.1) is complete and every feature works in Demo Mode with sample data labeled “DEMO”.
- The Riot Sign On and API integration (authorization-code flow, token refresh, sync, rate limiting, error handling) is implemented and verified with automated tests against a mocked API. It has not yet been connected to the live Riot API.
- After approval we will enable official party confirmation (from the party information in match data) and measure estimation accuracy on real data.
Available now vs. after approval
| Feature | Status |
|---|---|
| Try every feature in Demo Mode (sample data labeled “DEMO”) | Available now |
| Team composition advisor (suggest, save, compare) | Available now |
| Friend league (manual reports, approval, audit log, sharing standings) | Available now |
| OBS overlay (manual mode, or demo data) | Available now |
| Friend registration & consent management, self-reported party info | Available now |
| Riot account linking (Riot Sign On, opt-in) | After Riot approval |
| Syncing your own match history and analytics on real data | After Riot approval |
| Party confirmation from official data (partyId) | After Riot approval |
| Auto-sync after VALORANT closes, league auto-fill, overlay auto data (real data) | After Riot approval |
| Live in-match data, pre-match opponent information (scouting) | Not offered (no official API / not allowed) |
03User flow
- Install and launch the app (no sign-up). It starts in Demo Mode.
- Settings → Riot account shows a notice that account linking makes player data public; the player must tick the opt-in checkbox (the consent time is recorded). Only then can they press “Sign in with Riot”, which opens Riot Sign On in the default browser for the player to authorize.
- Riot redirects the authorization code to the app on the loopback address (127.0.0.1); it is exchanged for tokens via the operator’s relay server. ACCOUNT-V1 returns the player’s PUUID and Riot ID.
- The player’s match list and the details of matches not yet stored are fetched and saved on the PC (about 90 seconds after VALORANT closes, manually, or by a periodic check).
- The data powers analytics, party history, the advisor, the league and the overlay.
- The player can unlink, or unlink and delete their data, from Settings.


04Riot APIs used
| API | Endpoint | Purpose | Frequency |
|---|---|---|---|
| ACCOUNT-V1 | /riot/account/v1/accounts/me | Get the PUUID and Riot ID of the user who signed in via RSO | Once per sign-in |
| VAL-MATCH-V1 | /val/match/v1/matchlists/by-puuid/{puuid} | Match list of the linked user only | 1 request per sync |
| VAL-MATCH-V1 | /val/match/v1/matches/{matchId} | Details of matches not yet stored only (stored matches are never re-fetched) | Only for new matches (max 60 per sync) |
| VAL-STATUS-V1 | /val/status/v1/platform-data | The “Test connection” button in settings | User action only |
RSO scopes: openid and offline_access. Syncs are triggered by VALORANT closing (after ~90 s), manually, or by a periodic check. The periodic check (every 15 min by default) is skipped without any API call unless VALORANT has run since the last sync (otherwise at most one check every 6 hours). The app never requests other players’ match lists.
05Policy compliance
| Player opt-in | Before linking, the app displays a notice that account linking makes player data public; “Sign in with Riot” stays disabled until the player ticks the opt-in checkbox (consent time recorded, revoked on unlink). Linking then requires the player’s authorization on Riot Sign On. Only the linked user’s own match list is requested. |
| Players who have not opted in | Everyone except the user and consenting friends is shown only with a per-match anonymous label (e.g. “Ally 1”, “Enemy 3”); their Riot IDs, agents, stats (K/D/A, ACS, HS%), ranks and any identifier that could link them across matches are never shown. Rematches, results with friends, league auto-fill, party self-reports and share codes only cover the user and consenting friends, and a friend is linked to match data only after they are marked as consenting. In addition, party information for groups that include neither the user nor a consenting friend is never shown — neither from official partyId data nor from estimation — and the app states that it is withheld because those players have not opted in. Estimation only considers pairs involving the user or a consenting friend, and enemy parties are never estimated. Demo data follows exactly the same rules. |
| Scouting | None. No opponent information before or during a match. The advisor uses no opponent data. |
| Real-time performance overlays | None. The OBS overlay shows only the streamer’s own aggregated results and manual values, and is rendered only in streaming software — not over the game. |
| Players hidden by the game | Never identified or analyzed. Shown as “Hidden player” and excluded from stats and party estimation. |
| Live data | Not collected. No memory reading, traffic interception or private/local APIs. Every 15 seconds the app only checks whether VALORANT is running via the Windows process list, then syncs from the official API after it closes. |
| API key security | The API key and RSO client secret are never shipped in the app; they live only on the operator’s relay server, which forwards only an allow-list of VALORANT / Account API paths. |
| Rate limits | Client-side rate limiter; on 429 the app honors Retry-After before retrying. |
| Game assets | Agent and map images come only from Riot’s official VALORANT Public Content Catalog (08.09). Newer agents/maps that are not in the catalog are shown with an initial instead of an image. |
| Legal boilerplate | The exact Riot boilerplate (with a Japanese translation) is shown at the bottom of every app screen, in Settings → API status, and on every page of this site. |


06Data handling
- Match data, settings, friends, leagues and overlay presets are stored in a SQLite database on the user’s PC.
- Secrets such as tokens are encrypted with Windows DPAPI and never stored in plain text.
- The operator’s server only relays API requests and token exchanges; it does not store match data or tokens.
- Other players in the user’s own matches are displayed only inside that user’s app on their PC; players who have not opted in appear only with per-match anonymous labels, never with their Riot ID.
- See the Privacy Policy for details.
07Legal notice (Riot boilerplate)
ORIVEIL isn't endorsed by Riot Games and doesn't 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.
This notice appears at the bottom of every screen in the app, in the app’s Settings → API status, and on every page of this website.
08How to try it
Download and launch the app: every feature can be explored in Demo Mode without a Riot account. Demo data is labeled “DEMO” on screen and stored separately from real data.