Rone Arena API
v1.2.3

Esports Endpoints

Professional league schedules, standings, and match details.

Requests go to https://arena.rone.dev/api. Forms are generated from the OpenAPI schema.

GET /api/esports/id/schedule

Indonesia Regular Season Schedule

Open on its own page

Regular-season schedule of the Indonesian professional league, grouped by week and day.

Query parameters:

  • week: Optional week number. Omit it to get every week; an unknown week returns 404.
  • lang: Language of the site's text, such as day names: en (default) or id.

Each match has:

  • match_id: Value for the matches endpoint; null while no details page exists.
  • start_at: Start time in UTC (ISO 8601). local_time is the time as shown on the site.
  • team1 / team2 with logo, and score1 / score2 (null until played).

Data is read from the league's public site and cached for 5 minutes.

Example response
{
  "weeks": [
    {
      "week": 1,
      "days": [
        {
          "day": 1,
          "label": "Friday, 14 August 2026",
          "matches": [
            {
              "match_id": "1036",
              "start_at": "2026-08-14T08:00:00+00:00",
              "local_time": "15:00",
              "team1": {
                "name": "EVOS",
                "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
              },
              "team2": {
                "name": "RRQ",
                "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
              },
              "score1": 2,
              "score2": 0
            }
          ]
        }
      ]
    }
  ]
}
week · query

Regular-season week to return. Omit it to get every week. The number of weeks varies by season.

lang · query

Language of the league site's text, such as day names. Available: en, id.

GET /api/esports/id/schedule

GET /api/esports/id/standings

Indonesia Regular Season Standings

Open on its own page

Regular-season standings of the Indonesian professional league: rank, team, match point, match win-lose, net game win and game win-lose.

  • lang: Language of the site's text, such as day names: en (default) or id.

Data is read from the league's public site and cached for 5 minutes.

Example response
{
  "standings": [
    {
      "rank": 1,
      "team": {
        "name": "NAVI",
        "full_name": "NAVI",
        "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
      },
      "match_point": 11,
      "match_wl": {
        "win": 11,
        "lose": 3
      },
      "net_game_win": 14,
      "game_wl": {
        "win": 23,
        "lose": 9
      }
    }
  ]
}
lang · query

Language of the league site's text, such as day names. Available: en, id.

GET /api/esports/id/standings

GET /api/esports/id/matches/{match_id}

Indonesia Match Details

Open on its own page

Full match history of one match of the Indonesian professional league: every game with both teams and all players (hero, KDA, items, emblem, talents, gold, damage dealt, damage taken and tower damage). Each team also reports the game winner and its kills; the game has a duration.

Battle spells are not published by the league site. Data is cached for 5 minutes.

Example response
{
  "match_id": "1036",
  "games": [
    {
      "number": 1,
      "duration": "16:51",
      "timeline_minutes": [],
      "teams": [
        {
          "team": {
            "name": "EVOS",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "winner": true,
          "kills": 11,
          "stats": {},
          "players": [
            {
              "name": "Rendyyy",
              "hero": {
                "name": "Dyrroth",
                "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Fhero_h%2F85.png"
              },
              "kills": 3,
              "deaths": 2,
              "assists": 3,
              "kda": 3.0,
              "items": [
                {
                  "id": "3212",
                  "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Fm%2F33%2Fp%2F2511%2F0617014872193.png"
                }
              ],
              "emblem": {
                "id": "20003",
                "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Femblem%2F20003.png"
              },
              "talents": [
                {
                  "id": "811",
                  "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Frune%2F811.png"
                }
              ],
              "gold": 9316,
              "damage_dealt": 38859,
              "damage_taken": 126389,
              "tower_damage": 1699,
              "item_sequence": []
            }
          ]
        }
      ]
    }
  ]
}
match_id · path

match_id from the schedule endpoint. Minimum: 1.

GET /api/esports/id/matches/{match_id}

GET /api/esports/ph/schedule

Philippines Regular Season Schedule

Open on its own page

Regular-season schedule of the Philippine professional league, grouped by week and day.

Query parameters:

  • week: Optional week number. Omit it to get every week; an unknown week returns 404.

Each match has:

  • match_id: Value for the matches endpoint; null while no details page exists.
  • start_at: Start time in UTC (ISO 8601). local_time is the time as shown on the site.
  • team1 / team2 with logo, and score1 / score2 (null until played).

Data is read from the league's public site and cached for 5 minutes.

Example response
{
  "weeks": [
    {
      "week": 1,
      "days": [
        {
          "day": 1,
          "label": "Friday, 14 August 2026",
          "matches": [
            {
              "match_id": "1036",
              "start_at": "2026-08-14T08:00:00+00:00",
              "local_time": "15:00",
              "team1": {
                "name": "EVOS",
                "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
              },
              "team2": {
                "name": "RRQ",
                "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
              },
              "score1": 2,
              "score2": 0
            }
          ]
        }
      ]
    }
  ]
}
week · query

Regular-season week to return. Omit it to get every week. The number of weeks varies by season.

GET /api/esports/ph/schedule

GET /api/esports/ph/standings

Philippines Regular Season Standings

Open on its own page

Regular-season standings of the Philippine professional league: rank, team, match point, match win-lose, net game win and game win-lose.

Data is read from the league's public site and cached for 5 minutes.

Example response
{
  "standings": [
    {
      "rank": 1,
      "team": {
        "name": "NAVI",
        "full_name": "NAVI",
        "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
      },
      "match_point": 11,
      "match_wl": {
        "win": 11,
        "lose": 3
      },
      "net_game_win": 14,
      "game_wl": {
        "win": 23,
        "lose": 9
      }
    }
  ]
}
GET /api/esports/ph/standings

GET /api/esports/ph/matches/{match_slug}

Philippines Match Details

Open on its own page

Full match history of one match of the Philippine professional league: every game with both teams and all players (hero, KDA, items, emblem, talents, gold, damage dealt, damage taken and tower damage). Each team also reports its totals (gold, damage, buffs, objectives) and every player has the item_sequence, the items in purchase order with their position on the timeline.

Battle spells are not published by the league site. Data is cached for 5 minutes.

Example response
{
  "match_id": "rora-onic-20260821",
  "games": [
    {
      "number": 1,
      "timeline_minutes": [
        0,
        2,
        4
      ],
      "teams": [
        {
          "team": {
            "name": "EVOS",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "kills": 11,
          "stats": {
            "total_gold": 34946,
            "total_damage": 82500,
            "red_buff": 4,
            "lord_kill": 0
          },
          "players": [
            {
              "name": "Rendyyy",
              "hero": {
                "name": "Dyrroth",
                "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Fhero_h%2F85.png"
              },
              "kills": 3,
              "deaths": 2,
              "assists": 3,
              "kda": 3.0,
              "items": [
                {
                  "id": "3212",
                  "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Fm%2F33%2Fp%2F2511%2F0617014872193.png"
                }
              ],
              "emblem": {
                "id": "20003",
                "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Femblem%2F20003.png"
              },
              "talents": [
                {
                  "id": "811",
                  "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Frune%2F811.png"
                }
              ],
              "gold": 9316,
              "damage_dealt": 38859,
              "damage_taken": 126389,
              "tower_damage": 1699,
              "item_sequence": [
                {
                  "id": "1411",
                  "image": "https://wsrv.nl/?url=https%3A%2F%2Fmlbb-image.scoregg.com%2Fequip%2F1411.png",
                  "tier": 1,
                  "timeline_percent": 0.56
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
match_slug · path

match_id from the schedule endpoint, e.g. rora-onic-20260821. Max length: 80.

GET /api/esports/ph/matches/{match_slug}

POST /api/esports/{league}/standings/simulate

Simulate League Standings

Open on its own page

Re-rank a professional league's regular season after changing match results, to see what a different result would do to the table and the playoff line.

The schedule and real results are the league's live ones (see the schedule endpoints). Send {"results": []} to get the current table with statuses. eliminated is how many teams at the bottom miss the playoffs; it defaults to 3 for Indonesia (id) and 2 for the Philippines (ph).

Matches are first to 2 games, so a finished match is 2-0, 2-1, 1-2 or 0-2 (a 1-1 needs a deciding game). A team gets 1 match point per match won. Teams are ranked by match points, then net game wins (games won minus games lost), then head-to-head among the tied teams; a tie that survives all three is reported as unresolved. The same rules reproduce the official Indonesian and Philippine tables.

Each team also gets a status from what it can still reach: clinched (certain to be in the playoffs), eliminated (certain to miss them) or alive. The status is exact once the season is over and conservative before that, so a decided team can still read alive, never the other way round.

Each team also has playoff_probability, its chance in percent, with every decimal the simulation gives, of finishing in the playoff spots. It comes from simulating the matches still to play: with model form (default) a team's chance in a match follows its record so far, with even every match is a coin flip, and the winner takes the match 2-0 in 62% of cases (the real share). simulations sets how many seasons are simulated; omit it to let the server choose. Clinched teams read 100 and eliminated teams 0. The same request always returns the same numbers, and with the default sample they are accurate to about one percentage point.

To edit results, send them in results as week, team1, team2, score1, score2; either team order works, and leaving both scores out clears a match. Matches you do not mention keep their real result.

The real schedule is cached for 5 minutes.

Example response
{
  "teams": 9,
  "weeks_count": 9,
  "playoff_spots": 6,
  "eliminated": 3,
  "matches_played": 61,
  "matches_remaining": 11,
  "edited_matches": 1,
  "probability_model": "form",
  "probability_simulations": 10909,
  "weeks": [
    {
      "week": 8,
      "matches": [
        {
          "team1": {
            "name": "NAVI",
            "full_name": "NAVI",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "team2": {
            "name": "TLID",
            "full_name": "TLID",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "score1": 0,
          "score2": 2,
          "state": "edited"
        }
      ]
    }
  ],
  "standings": [
    {
      "rank": 1,
      "team": {
        "name": "NAVI",
        "full_name": "NAVI",
        "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
      },
      "match_point": 10,
      "match_wl": {
        "win": 10,
        "lose": 4
      },
      "net_game_win": 12,
      "game_wl": {
        "win": 21,
        "lose": 9
      },
      "played": 14,
      "remaining": 4,
      "max_match_point": 14,
      "tiebreak": "net_game_win",
      "status": "alive",
      "in_playoffs_zone": true,
      "playoff_probability": 97.33944954128441
    }
  ]
}
league · path

id for Indonesia or ph for the Philippines.

application/json
POST /api/esports/{league}/standings/simulate

POST /api/esports/standings/calculate

Calculate Custom League Standings

Open on its own page

The same calculator for any league: give the team names (or just a count) and enter match results. The schedule is generated as a double round robin with as many weeks as teams, each week with one fewer match than teams, like the professional leagues. Nothing is fetched from a league site.

Only teams matters for the schedule (omit it and send team_count instead to get Team A, Team B, ...). eliminated defaults to 3, or less in a small league.

Matches are first to 2 games, so a finished match is 2-0, 2-1, 1-2 or 0-2 (a 1-1 needs a deciding game). A team gets 1 match point per match won. Teams are ranked by match points, then net game wins (games won minus games lost), then head-to-head among the tied teams; a tie that survives all three is reported as unresolved. The same rules reproduce the official Indonesian and Philippine tables.

Each team also gets a status from what it can still reach: clinched (certain to be in the playoffs), eliminated (certain to miss them) or alive. The status is exact once the season is over and conservative before that, so a decided team can still read alive, never the other way round.

Each team also has playoff_probability, its chance in percent, with every decimal the simulation gives, of finishing in the playoff spots. It comes from simulating the matches still to play: with model form (default) a team's chance in a match follows its record so far, with even every match is a coin flip, and the winner takes the match 2-0 in 62% of cases (the real share). simulations sets how many seasons are simulated; omit it to let the server choose. Clinched teams read 100 and eliminated teams 0. The same request always returns the same numbers, and with the default sample they are accurate to about one percentage point.

To edit results, send them in results as week, team1, team2, score1, score2; either team order works, and leaving both scores out clears a match. Matches you do not mention keep their real result.

Example response
{
  "teams": 9,
  "weeks_count": 9,
  "playoff_spots": 6,
  "eliminated": 3,
  "matches_played": 61,
  "matches_remaining": 11,
  "edited_matches": 1,
  "probability_model": "form",
  "probability_simulations": 10909,
  "weeks": [
    {
      "week": 8,
      "matches": [
        {
          "team1": {
            "name": "NAVI",
            "full_name": "NAVI",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "team2": {
            "name": "TLID",
            "full_name": "TLID",
            "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
          },
          "score1": 0,
          "score2": 2,
          "state": "edited"
        }
      ]
    }
  ],
  "standings": [
    {
      "rank": 1,
      "team": {
        "name": "NAVI",
        "full_name": "NAVI",
        "logo": "https://wsrv.nl/?url=https%3A%2F%2Fexample.com%2Fteams%2Fevos.png"
      },
      "match_point": 10,
      "match_wl": {
        "win": 10,
        "lose": 4
      },
      "net_game_win": 12,
      "game_wl": {
        "win": 21,
        "lose": 9
      },
      "played": 14,
      "remaining": 4,
      "max_match_point": 14,
      "tiebreak": "net_game_win",
      "status": "alive",
      "in_playoffs_zone": true,
      "playoff_probability": 97.33944954128441
    }
  ]
}
application/json
POST /api/esports/standings/calculate