> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Save a private operator note

> Does not require an active claim. At most 100 notes and 64,000 characters per thread. Identical ID/content/operator replays…

Does not require an active claim. At most 100 notes and 64,000 characters per thread. Identical ID/content/operator replays; changed content returns note\_id\_conflict. Notes are excluded from customer messages and model context. Requires WIDGET\_LIVE\_CHAT\_ENABLED=true, an admin bearer key and verified thread ownership. Responses use Cache-Control: no-store. Mutations share the customer/AI thread execution lease. Limited to 120 requests/minute per credential (shared with Redis when configured).

### Path parameters

**id** `string` *required*

Native conversation ID

### Request body

`object`

**text** `string` *required*

Minimum length: `1`. Maximum length: `4000`.

**operatorName** `string` *required*

Nonblank operator display name; control characters are rejected. Minimum length: `1`. Maximum length: `80`.

**clientNoteId** `string` *required*

Stable ID for this intentional action. Reuse only with identical content when recovering delivery. Minimum length: `8`. Maximum length: `128`.

### Response

`object`

**note** `OperatorNote`

**OperatorNote**

**id** `string`

**text** `string`

**authorName** `string`

**timestamp** `string (date-time)`

**replayed** `boolean`

### Status codes

| Code | Meaning |
| - | - |
| `200` | Persisted result |
| `400` | Invalid operator name, message or note |
| `401` | Missing or invalid admin key |
| `404` | Thread not found in the authenticated organization |
| `409` | Claim, content-ID, note-limit or thread lease conflict |
| `429` | Rate limit exceeded |
| `503` | Live chat disabled or persistence unavailable |

### Using this contract

Read the [source OpenAPI document](https://docs.stateset.com/spec/chat-widget.json) for declared schemas and alternatives.
This page also includes documented corrections from the [spec overlays](https://github.com/stateset/docs/tree/main/spec/overlays).
Example IDs and values are illustrative; replace them with records from your workspace.

```bash cURL theme={null}
curl --silent --show-error --fail-with-body --request POST \
  --url 'https://api.example.com/api/admin/live-chat/{id}/notes' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "text": "Waiting for the carrier update before replying.",
  "operatorName": "Alex",
  "clientNoteId": "operator_note_20261020_001"
}'
```

```json 200 theme={null}
{
  "note": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "text": "Two-person tent, green — replacement for damaged pole set.",
    "authorName": "string",
    "timestamp": "2026-08-31T14:22:05Z"
  },
  "replayed": true
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.