> ## 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.

# Send a native operator reply

> Requires the owning active claim for a new reply. Identical stored ID/content/operator replays before claim validation, even after release…

Requires the owning active claim for a new reply. Identical stored ID/content/operator replays before claim validation, even after release. Changed text or operator returns message\_id\_conflict. Acknowledged only after thread persistence. 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: `8000`.

**clientMessageId** `string` *required*

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

### Response

`object`

**message** `OperatorMessage`

**OperatorMessage**

**id** `string`

**sender** `string`

**text** `string`

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

**authorName** `string`

**operatorEvent** `string`

Allowed values: `'joined'`, `'released'`, `'resolved'`.

**attachments** `object[]`

**attachments**

**name** `string`

**type** `string`

**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}/messages' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "text": "I am checking the shipment status.",
  "clientMessageId": "operator_reply_20261020_001"
}'
```

```json 200 theme={null}
{
  "message": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "sender": "string",
    "text": "Two-person tent, green — replacement for damaged pole set.",
    "timestamp": "2026-08-31T14:22:05Z",
    "authorName": "string",
    "operatorEvent": "joined",
    "attachments": [
      {
        "name": "Two-Person Tent",
        "type": "standard"
      }
    ]
  },
  "replayed": true
}
```


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