---
title: "Submit map scores in a batch"
method: POST
path: "/game/matches/{matchId}/scores"
tags: ["Game: Scores"]
---

# Submit map scores in a batch

`POST /game/matches/{matchId}/scores`

Submits scores for one or more maps; game-developer scores are auto-confirmed. Requires the game.scores:write permission.

## Path parameters

- `matchId` string, required — Match ID.

## Request body

- GameBatchScoresBody — Request body for submitting one or more map scores in a single call.
  - `maps` GameMapScoreInput[], required — Map scores to submit. Must contain at least one entry.
    - `mapIndex` integer, required — Zero-based index of the map within the series.
    - `mapId` string, required — Identifier of the map that was played.
    - `creatorTeamScore` integer, required — Score for the creator team (integer, 0-1000).
    - `opponentTeamScore` integer, required — Score for the opponent (accepted) team (integer, 0-1000).
    - `screenshotUrls` string[] — Optional external screenshot URLs supporting the reported score. Each must be a public https URL. Prefer screenshotStorageIds (validated blobs) where possible.
    - `screenshotStorageIds` string[] — Optional storage IDs for screenshots uploaded via POST /uploads/image-url. Preferred over screenshotUrls: each is validated (size, content-type, ownership) and resolved to a URL server-side.
    - `playerStats` object — Optional per-player stats keyed by user ID.

## Response `200`

Per-map submission results. success is true only when every map was confirmed.

- GameBatchScoresResponse — Result of a batch map-score submission.
  - `success` boolean, required — True only when every submitted map score was confirmed.
  - `submitted` GameBatchScoreResult[], required — Per-map results, in submission order.
    - `mapIndex` integer, required — Index of the map this result refers to.
    - `status` string, required — Per-map outcome: "confirmed" on success, "failed" otherwise.
    - `error` string — Failure reason, present only when status is failed.
  - `count` integer, required — Number of map scores that were confirmed.

## 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.

---

[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)
