---
title: "Control Floor"
method: POST
path: "/chatrooms/{room_name}/games/floor/control"
tags: ["games"]
---

# Control Floor

`POST /chatrooms/{room_name}/games/floor/control`

Pause, resume, skip, or hand the floor to a named person. Host only.

Canasta's `buzz/lock` and `buzz/reset` are the same two acts on its own
routes, gated by the same `is_room_host`.

## Path parameters

- `room_name` string, required

## Headers

- `authorization` string, nullable

## Request body

- FloorControlRequest — The host's controls over the floor. The caller is always the token. The fixed list is in the TYPE rather than in a validator, and that is not a style choice: a `field_validator` that raises ValueError puts the exception object into the error's `ctx`, and this app's validation handler answers "Object of type ValueError is not JSON serializable" with a 500 (seen live, 2026-09-19). A Literal produces a serialisable error and the 422 the client is written for.
  - `action` 'pause' | 'resume' | 'skip' | 'assign', required
  - `user_id` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

> 25 revisions in range; 1 not diffed.

- **2026-09-21** `13996d792e23` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/changes/chatrooms/:room_name/games/floor/control/post.md)

---

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