---
title: "Create a two-sided game-originated match"
method: POST
path: "/game/matches/create"
tags: ["Game: Matches"]
---

# Create a two-sided game-originated match

`POST /game/matches/create`

Creates an ACCEPTED + PUBLISHED match for the API key's bound game between two active teams in that game. Requires the game.lifecycle:read-write permission. Supply an optional `Idempotency-Key` request header to make retries safe: an identical key + body replays the original response, while the same key with a different body returns 409 error_idempotency_key_conflict.

## Request body

- GameCreateMatchBody — Request body for creating a two-sided game-originated match. The match is created ACCEPTED + PUBLISHED for the key's bound game. Supports an optional Idempotency-Key header for safe retries.
  - `creatorTeamId` string, required — ID of the creating team. Must belong to the key's bound game.
  - `acceptedTeamId` string, required — ID of the opposing team. Required - game-originated matches are two-sided. Must belong to the key's bound game.
  - `gameModeId` string, required — Game mode identifier (e.g. search_and_destroy).
  - `bestOf` 1 | 3 | 5 | 7, required — Number of maps in the series. One of 1, 3, 5, or 7.
  - `teamSize` number, required — Players per team (validated against the game's min/max).
  - `platform` 'PC' | 'XBOX' | 'PLAYSTATION' | 'CONSOLE_ONLY' | 'CROSSPLAY', required — Match platform (e.g. CROSSPLAY).
  - `inputDevice` 'ALL' | 'CONTROLLER' | 'KB_M', required — Allowed input device (e.g. ALL).
  - `region` 'NONE' | 'NA_EAST' | 'NA_WEST' | 'EU' | 'ASIA' | 'OCEANIA' | 'SOUTH_AMERICA' | 'MIDDLE_EAST' | 'AFRICA', required — Match region (e.g. NONE).
  - `mapSelectionType` 'COMPETITIVE' | 'FLEX', required — Map selection type (COMPETITIVE or FLEX).
  - `mapPreferenceMode` 'PREFERRED' | 'VETO' | 'MANUAL', required — Map preference mode (PREFERRED, VETO, or MANUAL).
  - `selectedMaps` string[] — Optional pre-selected map IDs.
  - `selectedObjectives` string[] — Optional pre-selected objective IDs.
  - `scheduledAt` number — Optional scheduled start time (epoch ms).

## Response `200`

The created match's ID.

- GameCreateMatchResponse — Result of a successful game-originated match creation.
  - `success` true, required
  - `matchId` string, required — ID of the newly created match.
  - `timestamp` string, required — Server response time (ISO 8601).

## Other responses

- `400` — Bad request (invalid body, cursor, limit, or date).
- `401` — Missing or invalid API key.
- `403` — API key lacks the required permission.
- `404` — Resource not found.
- `409` — Conflict.
- `429` — Rate limited.

---

[API](https://skmtc.net/teambattles/apis/teambattles-api.md) · [All operations](https://skmtc.net/teambattles/apis/teambattles-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/teambattles/teambattles-api/revisions/2ffe8fb53b7d/schema)
