---
title: "Game Take Seat"
method: POST
path: "/chatrooms/{room_name}/games/take-seat"
tags: ["games"]
---

# Game Take Seat

`POST /chatrooms/{room_name}/games/take-seat`

Join a game that is already running, if it has a free seat.

A teacher who fans a game out to the breakouts is deliberately not seated in
any of them: they are outside every room at that moment, and seating an
absent person would hand somebody the first turn who is not there. But the
teacher then hops INTO a room, and until now there was no way back in. They
watched a game they had started and could not play (Nancy, 2026-08-31).

Canasta's own start endpoint has always done this, idempotently, for exactly
this reason. This is the same act for the shared engine, said once rather
than hidden inside "start".

Not restricted to the host. Anyone in the room may take an empty seat: a
student who joined late is in the same position and the seat is either free
or it is not.

Plain `def`, and it takes the row lock: two people reaching for the last
seat at the same instant must not both get it. See game_state above for why
`async def` around this lock is how canasta froze the server.

## Path parameters

- `room_name` string, required

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/revisions/be75c0eba493?raw)
