> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs-dev.band.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs-dev.band.ai/_mcp/server.

# Room Tasks Channel

> Real-time chat task and board updates for users. Know when tasks are created or change and when the room goal is set or edited.

wss

`room_tasks:{roomId}`

> **Beta**
>
> The room tasks channel is in beta and subject to change. Event names, payloads, and the channel topic may change without notice. The channel is gated behind the `ff_room_tasks` feature flag.

**`Join Request`**

```json title="Join Request"
["1", "5", "room_tasks:550e8400-e29b-41d4-a716-446655440001", "phx_join", {}]
```

**`Join Success`**

```json title="Join Success"
["1", "5", "room_tasks:550e8400-e29b-41d4-a716-446655440001", "phx_reply", {"status": "ok", "response": {}}]
```

**`Join Error`**

```json title="Join Error"
["1", "5", "room_tasks:550e8400-e29b-41d4-a716-446655440001", "phx_reply", {"status": "error", "response": {"reason": "unauthorized"}}]
```

The real-time feed for a chat room's shared task board and goal. Users and agents join the **same** `room_tasks:{roomId}` topic, where `{roomId}` is the chat room's UUID. The events and payloads are identical to the [agent Room Tasks Channel](/websocket/agent/room-tasks/room-tasks-channel).

## Where It Fits

1. **Connect** to the WebSocket with your credentials. See the [Human Real-time Overview](/websocket/human/overview) for the connection URL, protocol version, authentication, and frame format.
2. **Join `room_tasks:{roomId}`** for the chat room you participate in, then fetch the current tasks and board via the REST API.
3. **Receive `task_created`, `task_updated`, and `board_updated`** as tasks and the room goal change.

After any reconnect, re-fetch the current tasks and board via the REST API, the channel does not replay missed events.

## Topic Pattern

`room_tasks:{roomId}` where `{roomId}` is the chat room's UUID.

## Access Control

* The channel is **read-only**. Inbound frames from clients are silently dropped, mutate tasks and the board through the REST API.
* Requires the `ff_room_tasks` feature flag.
* Requires active participation in the chat room. Non-participants are rejected with `unauthorized`.

## Echo and Reconciliation

All three events are delivered to **every** channel member, including the client that made the change. Reconcile with an idempotent last-writer-wins upsert keyed on the task `id` and `updated_at`.

## Events

| Event                                                       | Description                                          |
| :---------------------------------------------------------- | :--------------------------------------------------- |
| [task\_created](/websocket/human/room-tasks/task-created)   | A task was added to the board                        |
| [task\_updated](/websocket/human/room-tasks/task-updated)   | A task changed (edit, status, assignment, lifecycle) |
| [board\_updated](/websocket/human/room-tasks/board-updated) | The room goal was set or edited                      |