---
title: "Complete a match from its stored event log (sync fast-path)"
method: PATCH
path: "/v1/matches/{id}/complete"
tags: ["Matches"]
---

# Complete a match from its stored event log (sync fast-path)

`PATCH /v1/matches/{id}/complete`

## Request

- Base URL: `https://api.hify.club`
- URL: `https://api.hify.club/v1/matches/{id}/complete`
- Auth: API key in header `X-User-Token`

Applies the completion already present in the match's scoring event log (a durably flushed match_completed marker) synchronously, so a client that submits results and immediately refetches sees the match completed instead of racing the async projection job. The completion is read from the log, never from the caller — a request cannot invent one.

Score rows, broadcast and partner webhooks stay with the async projection job; the sequence watermarks make both paths converge idempotently in either order.

Idempotent: an already-completed match responds 204 without change, so a retry after a timed-out-but-successful call is safe.

## Response `204`

The match is completed (applied now, or already was)

## Other responses

- `401`: Unauthorized
- `403`: Forbidden — only admins and referees may complete a match
- `404`: Match not found
- `422`: no_completion_event — the log holds no effective match_completed (the match never ended, or the completion was undone by a later match_reopened); or invalid_state — the match is not in a state that can complete (e.g. released back to pending before the completion arrived)

---

[API](https://skmtc.dev/hify/apis/hify-apis.md) - [All operations](https://skmtc.dev/hify/apis/hify-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/hify/apis/hify-apis/revisions/b5920403538d?raw)
