使用 Steam 登录以查看你的 Stormgate 个人资料

STORMGATE API

This document describes the HTTP endpoints and methods that make up the public API for various Stormgate datasets provided by Untapped.gg.

USAGE LIMITS

You are free to access these APIs without authentication. There is a rate limit of no more than 20 requests per minute to any of the public API endpoints. If you have a use case that needs a higher request limit, please email data@frostgiant.com.

Note that due to Cross-Origin Resource Sharing protections you will need to run your own proxy or script to fetch the data from this API. We will not consider whitelist requests at this time.

LEADERBOARD

Returns the top 500 players by points, descending for the specified ranked match mode.

Positions on the leaderboard are updated on a 1 minute period.

URL PARAMETERS

matchMode
Supported values: ranked_1v1
GET https://api.stormgate.untapped.gg/api/v1/leaderboard?match_mode={matchMode}
[
  {
    "race": "infernals",
    "points": 2530,
    "wins": 343,
    "losses": 15,
    "ties": 0,
    "league": "master",
    "tier": 1,
    "mmr": 2513,
    "playerName": "HorsePasta",
    "profileId": "At4X3hJ"
  },
  …
]

Retrieve information about Stormgate players by display name.

If the search term includes the # character, a full match will be performed against the player's display name and discriminator.

Otherwise, a match will be performed against the player's full display name, not including discriminator, and all records with a matching display name will be returned.

URL PARAMETERS

q
Player display name query. Case-insensitive. Must exactly match player name.
GET https://api.stormgate.untapped.gg/api/v1/players?q={displayName}
[
  {
    "playerName": "HorsePasta",
    "profileId": "At4X3hJ",
    "ranks": {
      "ranked_1v1": {
        "infernals": {
          "mmr": 2513,
          "tier": 1,
          "ties": 0,
          "wins": 343,
          "league": "master",
          "losses": 15,
          "points": 2530,
          "season": 1
        }
      }
    }
  },
  …
]

PLAYER LOOKUP

Retrieve basic information across all game modes about a single Stormgate player. Only ranked_1v1 is fully populated at this time.

URL PARAMETERS

profileId
The Untapped.gg profile id. Profile ids can be found via the Leaderboard or Player Search APIs.
GET https://api.stormgate.untapped.gg/api/v1/players/{profileId}
{
  "playerName": "HorsePasta",
  "profileId": "At4X3hJ",
  "ranks": {
    "ranked_1v1": {
      "infernals": {
        "mmr": 2513,
        "tier": 1,
        "ties": 0,
        "wins": 343,
        "league": "master",
        "losses": 15,
        "points": 2530,
        "season": 1
      }
    }
  }
}

PLAYER STATS

Retrieve a detailed stats summary about a single Stormgate player, identified by Untapped.gg profile id. The response contains an entry for each "meta period" (usually a balance patch, see Meta Periods) within the season, indentified by the metaPeriodId, as well as an "all" entry for the entire season.

URL PARAMETERS

profileId
Profile ids can be found via the Leaderboard or Player Search APIs.
matchMode
Supported values: ranked_1v1
season
Supported values: current

FIELDS

recent_mmr_history
MMR at the end of the match, most recent first.
outcomes_by_duration
Outcomes by minute, rounded up, for each opponent faction.
outcomes_by_opponent
Outcomes against the most frequent opponents. Ordered by total match count, then recency.
outcomes_by_opponent_race
Outcomes against each opposing faction overall.
outcomes_by_map
Outcomes on each map overall.
summary
Total stats and rank. For meta periods that have ended these will reflect the state at the end of that meta period.
GET https://api.stormgate.untapped.gg/api/v2/matches/players/{profileId}/stats/{matchMode}?season={season}
{
  "2": {
    "celestials": {
      "recent_mmr_history": [
        2237,
        2230,
        ...
      ],
      "outcomes_by_duration": {
        "celestials": [
          {
            "minute": 3,
            "wins": 4,
            "losses": 1,
            "ties": 0
          },
          {
            "minute": 4,
            "wins": 5,
            "losses": 2,
            "ties": 0
          },
        ],
      },
      "outcomes_by_opponent": [
        {
          "player_name": "PastaHorse",
          "profile_id": "Jh3X4tA",
          "race": "celestials",
          "wins": 11,
          "losses": 4,
          "ties": 0
        },
      ],
      "outcomes_by_opponent_race": {
        "celestials": {
          "wins": 29,
          "losses": 10,
          "ties": 0
        },
      },
      "outcomes_by_map": {
        "SecludedGroveV2": {
          "wins": 12,
          "losses": 2,
          "ties": 0
        },
      },
      "summary": {
        "points": 2160,
        "wins": 65,
        "losses": 14,
        "ties": 0,
        "league": "master",
        "tier": 1,
        "mmr": 2237
      }
    },
  },
  "3": { ... },
  "all": { ... }
}

PLAYER RECENT MATCHES

Retrieve the most recent 100 matches per faction for a single Stormgate player, identified by Untapped.gg profile id. This will only return matches if the player has set their match history to be public. Otherwise this API will return a 403 error code.

URL PARAMETERS

profileId
Profile ids can be found via the Leaderboard or Player Search APIs.
matchMode
Supported values: ranked_1v1
season
Supported values: current
GET https://api.stormgate.untapped.gg/api/v2/matches/players/{profileId}/recent/{matchMode}?season={season}
{
  "vanguard": [
    {
      "match_id": "j7QEn454kNo3SUkYhe3KoZ",
      "mode": "ranked_1v1",
      "season": 1,
      "map_name": "IsleOfDread",
      "match_start": 1724676527,
      "match_active_seconds": 622,
      "match_total_seconds": 661,
      "players": [
        {
          "player_name": "HorsePasta",
          "player_number": 1,
          "profile_id": "At4X3hJ",
          "party": 0,
          "team": 0,
          "race": "vanguard",
          "outcome": "loss",
          "previous_ranking": {
            "points": 1318,
            "wins": 11,
            "losses": 10,
            "ties": null,
            "league": "bronze",
            "tier": 1,
            "mmr": 1756
          },
          "updated_ranking": {
            "points": 1324,
            "wins": 11,
            "losses": 11,
            "ties": null,
            "league": "bronze",
            "tier": 1,
            "mmr": 1737
          }
        },
        {
          "player_name": "PastaHorse",
          "player_number": 2,
          "profile_id": "Jh3X4tA",
          "party": 1,
          "team": 1,
          "race": "celestials",
          "outcome": "win",
          "previous_ranking": { ... },
          "updated_ranking": { ... }
        }
      ]
    },
  ],
  "infernals": [ ... ],
  "celestials": [ ... ],
}

META PERIODS

Retrieve all meta periods. A meta period describes a certain range of time that is used to group data about the game. These commonly correspond to game patches, though they don't strictly have to.

GET https://api.stormgate.untapped.gg/api/v1/meta-periods
[
  {
    "id": 4,
    "description": "Patch 0.0.2",
    "match_mode": "ranked_1v1",
    "start_client_version": "70039",
    "start_ts": "2024-08-22T21:00:00Z",
    "end_ts": null
  },
  {
    "id": 3,
    "description": "Patch 0.0.1",
    "match_mode": "ranked_1v1",
    "start_client_version": "69129",
    "start_ts": "2024-08-08T17:45:00Z",
    "end_ts": "2024-08-22T21:00:00Z"
  },
]