---
title: Chat Session Update
description: "Play 0x0A, client → server."
---

`play` · `0x0A` · **serverbound** (client → server)

Registers the player's chat signing session: `sessionUUID`, key `expireTime`, the Mojang-issued `publicKey`, and Mojang's `signature` over it. Sent once after joining and again if the key changes. The server verifies the key and shares it with other clients via `PlayerInfoUpdate` so they can validate signed messages.

Sent by the client, read by the server. Listen for it with `client.on("ChatSessionUpdate", (data) => …)` on the receiving side.

## Fields

| Field | Type | Notes |
|---|---|---|
| `sessionUUID` | UUID |  |
| `expireTime` | Long |  |
| `publicKey` | Byte[] |  |
| `signature` | Byte[] |  |

## Send it

```ts
await client.sendPacket("ChatSessionUpdate", {
  sessionUUID: /* UUID */,
  expireTime: /* Long */,
  publicKey: /* Byte[] */,
  signature: /* Byte[] */,
});
```

Field aliases listed under Notes are accepted as alternative keys when writing.

Source: [`src/Core/Versions/776/Packets/play/serverbound/ChatSessionUpdate.ts`](https://github.com/GDLev/mc-protocol/blob/master/src/Core/Versions/776/Packets/play/serverbound/ChatSessionUpdate.ts)
