Skill Rating API
Skill Rating API is a hosted REST API that turns a match log (who played, who won, optional timestamps) into skill ratings and a leaderboard using OpenSkill, Glicko-2 or Elo, and predicts the win probability of any matchup. It handles singles, doubles, teams, free-for-alls and draws, and it is stateless: nothing is stored, you keep the ratings and send them back with your next batch.
Get an API key
Quick start
Send your match log to POST /api/public/v1/rate. Each match lists its teams and who won; everything else is optional.
curl -X POST "https://skill-rating-api.p.rapidapi.com/rate" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_KEY" -H "X-RapidAPI-Host: skill-rating-api.p.rapidapi.com" \
-d '{"algorithm":"openskill","matches":[{"teams":[["ana"],["ben"]],"winner":0,"timestamp":"2026-10-01T18:00:00Z"},{"teams":[["cat"],["dan"]],"winner":1,"timestamp":"2026-10-01T18:30:00Z"},{"teams":[["ana","dan"],["ben","cat"]],"winner":0,"timestamp":"2026-10-02T19:00:00Z"},{"teams":[["ana"],["dan"]],"ranks":[0,0],"timestamp":"2026-10-03T18:00:00Z"},{"teams":[["ben"],["cat"]],"winner":0,"weight":0.5,"timestamp":"2026-10-03T18:45:00Z"},{"teams":[["ana"],["cat"]],"winner":0,"timestamp":"2026-10-04T18:00:00Z"}],"history":false}'
Response (the real output for the request above):
{
"data": {
"algorithm": "openskill",
"params": {
"mu": 25,
"sigma": 8.333333333333334,
"beta": 4.166666666666667,
"tau": 0.08333333333333333,
"idleTau": 0,
"bias": 0,
"kappa": 0.0001
},
"players": {
"ana": {
"mu": 30.5018,
"sigma": 7.4836,
"games": 4,
"display": 8.0511
},
"ben": {
"mu": 22.2753,
"sigma": 7.8085,
"games": 3,
"display": -1.1501
},
"cat": {
"mu": 18.2068,
"sigma": 7.5946,
"games": 4,
"display": -4.5769
},
"dan": {
"mu": 28.9659,
"sigma": 7.684,
"games": 3,
"display": 5.9139
}
},
"leaderboard": [
{
"rank": 1,
"id": "ana",
"display": 8.0511,
"wins": 3,
"losses": 0,
"draws": 1
},
{
"rank": 2,
"id": "dan",
"display": 5.9139,
"wins": 2,
"losses": 0,
"draws": 1
},
{
"rank": 3,
"id": "ben",
"display": -1.1501,
"wins": 1,
"losses": 2,
"draws": 0
},
{
"rank": 4,
"id": "cat",
"display": -4.5769,
"wins": 0,
"losses": 4,
"draws": 0
}
]
}
}
Keep data.players and send it back as players with your next batch: rating in two calls gives exactly the same result as one call over the whole history.
Endpoints
| Method | Path | What it does |
|---|---|---|
| POST | /api/public/v1/rate | Replays a match log; returns ratings, a leaderboard and optional per-match history |
| POST | /api/public/v1/predict | Win probability per team and a 0–1 match-quality score for a hypothetical match |
| GET | /api/public/v1/algorithms | Algorithms, default parameters and allowed ranges |
Parameters (POST /rate)
| Name | Required | What it does |
|---|---|---|
matches | yes | List of matches, 1 to 5,000 |
matches[].teams | yes | 2 to 8 teams of 1 to 8 player ids, e.g. [["ana","ben"],["cat","dan"]] |
matches[].winner | no | Index of the winning team (default 0) |
matches[].ranks | no | Finishing position per team, lower is better; equal ranks are a draw, e.g. [0,0] |
matches[].weight | no | 0.1 to 3; how much the match counts (default 1) |
matches[].timestamp | no | ISO 8601 or epoch ms; with one on every match, matches are replayed in time order |
algorithm | no | openskill, glicko2, elo, custom (default openskill) |
players | no | Ratings from a previous response, keyed by player id (max 2,000) |
params | no | Algorithm parameters, e.g. {"k": 24} for Elo |
history | no | Include each match's expected win probability and rating changes (default true) |
Limits: 5,000 matches, 2,000 players and 2 MB of JSON per request; 2 to 8 teams of 1 to 8 players per match. Full schema: openapi.json.
Algorithms
| Algorithm | Best for |
|---|---|
OpenSkill (Weng-Lin, default) (openskill) | Bayesian μ/σ ratings built for teams, doubles and free-for-alls; the patent-free TrueSkill alternative |
Glicko-2 (glicko2) | Rating, deviation and volatility; the chess-style choice for 1v1 with uncertainty |
Elo (elo) | The classic single number with a K-factor; simplest to explain |
Club Points (custom) | Points-style rating with tunable margins and upset bonuses |
Pricing
| Plan | Price | Quota |
|---|---|---|
| BASIC (RapidAPI) | Free | 200 requests / month |
| PRO (RapidAPI) | $12 / month | 10,000 requests / month |
| ULTRA (RapidAPI) | $39 / month | 100,000 requests / month |
| Apify Actor | $0.20 per 1,000 rated matches | Pay per match, up to 5,000 matches per run |
Every RapidAPI request can rate up to 5,000 matches.
How it compares
| Option | How it works | Price |
|---|---|---|
| Skill Rating API | Hosted REST API; OpenSkill, Glicko-2 and Elo; teams, draws and weights; rates a whole match log in one call; win-probability endpoint | Free 200 requests/month; $12 for 10,000; $39 for 100,000; Apify $0.20 per 1,000 matches |
| Oanor Elo Rating API | Hosted REST API; Elo only; one 1v1 result per call | Free 4,835 calls/month; $6 for 14,350; $26 for 194,500; $64 for 1,015,000 |
| openskill (npm) / openskill.py | Open-source library (MIT); you host it and store the ratings | Free; your own servers and code |
| glicko2 (npm) | Open-source library (MIT); Glicko-2 for 1v1 | Free; your own servers and code |
| TrueSkill (trueskill / ts-trueskill) | Open-source libraries (BSD / MIT); Microsoft permits the TrueSkill brand only for Xbox Live games or non-commercial projects | Free for non-commercial use |
Competitor prices as listed on their own pages on 2026-10-24.
Frequently asked questions
Is there an API that calculates Elo or Glicko-2 ratings from a list of match results?
Yes. Skill Rating API takes your whole match log in one POST to /api/public/v1/rate (up to 5,000 matches) and returns every player's rating, games played and a ranked leaderboard. Set algorithm to elo, glicko2 or openskill.
How do I rate players in team games or doubles?
Use OpenSkill (the default). Each match lists its teams, e.g. [["ana","ben"],["cat","dan"]], and who won or each team's finishing position. Up to 8 teams of 8 players per match, so free-for-alls and battle royales work too.
What is a patent-free alternative to Microsoft TrueSkill?
OpenSkill (the Weng-Lin Bayesian rating method). It gives the same kind of μ and σ team ratings as TrueSkill, while Microsoft permits the TrueSkill brand only for Xbox Live games and non-commercial projects. Skill Rating API uses OpenSkill by default.
How do I build a matchmaking or leaderboard backend without storing ratings on a server?
Send the matches, keep the players object from the response, and send it back with the next batch. Rating in two calls gives exactly the same result as rating the whole history in one, so your own database holds the ratings and the API stores nothing.
How do I predict who will win a match from player ratings?
POST /api/public/v1/predict with the teams and the players' current ratings. It returns each team's win probability and a 0–1 match-quality score, which you can use to pick balanced pairings. Every rated match also returns the expected win probability before it was played.
Can I rank AI models or prompts from pairwise comparisons?
Yes. Treat each model as a player and each head-to-head judgement as a match (winner, or ranks [0,0] for a tie). Glicko-2 or OpenSkill also give an uncertainty (σ), so you can see which rankings are still unsettled.
Does it handle draws, match weights and the order matches were played?
Draws are equal ranks. A weight from 0.1 to 3 makes a match count less or more (friendlies at half weight, finals at double). Matches are replayed in the order sent, or by timestamp when every match has one.
How much does Skill Rating API cost?
RapidAPI: free for 200 requests a month, PRO $12/month for 10,000 requests, ULTRA $39/month for 100,000 requests; each request can rate up to 5,000 matches. Apify: pay per event, $0.20 per 1,000 rated matches.
Is my match data stored?
No. The API is stateless: no database, no disk, no logging of request bodies. Ratings exist only in the response you receive.
Free tools
- Elo rating calculator: win probability and new ratings for one game, in your browser
Last updated 2026-10-24. Machine-readable summary: llms.txt.