Introduction

Initiate match

To initiate a match, you would send a POST request to the following endpoint:

POST /api/0.1/cs2-matches

The body of your request should be structured as a JSON object, containing the necessary details to initialize a match. Here's an example body request:

{
    "game_server_id": "6503b7832e1d23f8c5c6f762",
    "players": [
        {
            "steam_id_64": "76561198234907126",
            "team": "team1",
            "nickname_override": "Player One"
        },
        {
            "steam_id_64": "76561239480715690",
            "team": "team2",
            "nickname_override": "Player Two"
        }
    ],
    "team1": {
        "name": "Ninjas in Pyjamas",
        "flag": "SE"
    },
    "team2": {
        "name": "Astralis",
        "flag": "DK"
    },
    "settings": {
        "map": "de_mirage",
        "password": null,
        "connect_time": 300,
        "match_begin_countdown": 30,
        "team_size": null,
      	"wait_for_gotv": false,
      	"enable_tech_pause": true
    },
    "webhooks": {
        "match_end_url": "https://webhook.site/123",
        "round_end_url": "https://webhook.site/124",
        "player_votekick_success_url": "https://webhook.site/125",
        "authorization_header": ""
    }
}

Retrieve match information

During the match, we're sending updates to webhooks at certain events: After every round, match-end, and when someone gets kicked.

Your other option is to poll the API for live data using the following endpoint:

GET /api/0.1/cs2-matches/{match_id}

With the GET endpoint, you get up-to-date information on the entire match, including players connected, players kicked, team and player stats, and more. The information included in this endpoint is the same as being sent to the round_end and match_end webhook.

 

Changing players mid-game

In case of an emergency situation where you need to whitelist a new player during the game, we have a special endpoint to add new players:

POST /api/0.1/cs2-matches/{match_id}/players

This endpoint accepts a JSON object containing a SteamID64, together with which team the player belongs to (team1, team2, or spectator).

 

Custom configs

The idea with our Match-API is to not interfere with the game's default settings and what's configured on the server already. For more advanced customizations of some features, check out our guides below:

Configure Tactical Pauses

By default, each team has access to 1 timeout of 60 seconds per match. Read more here on how to customize this: CS2 Match-API: Tactical Timeout Settings

Configure Votekicking Behavior

By default, vote-kicking is enabled on the server. Read more here on how to customize the vote-kick flow: CS2 Match-API: Votekick Settings

Configure Overtime

By default, overtime is enabled on the server. Read more here on how to customize the overtime flow: CS2 Match-API: Overtime Settings


What’s Next

With this knowledge in hand, you can start crafting your JSON objects to initiate matches through our CS2 Match-API. Refer to the detailed parameter description at the endpoint below to learn more about each parameter and its accepted values.