:::endpoint PATCH /v1/me/ai/conversations/{id}

Only what is sent changes, so either field on its own is a whole request. A
pinned conversation stays at the top of [the list](/docs/api/apps/ai-conversations)
until it is unpinned, the most recently pinned first.

A title set here stays. The assistant only titles a conversation that has
none.

## Request

```bash
curl -X PATCH https://api.proppertrading.com/v1/me/ai/conversations/01a16152-7e42-70cd-91a4-b6b80ee47daa \
  -H "Authorization: Bearer ptat_9f2c1a44_3b8e7d2f5c9a1b4e6d8f0a2c4e6b8d1f" \
  -H "Content-Type: application/json" \
  -d '{"title": "Daily loss limit", "pinned": true}'
```

| Field | Description |
| ----- | ----------- |
| `title` | A new title, at most 100 characters. It cannot be emptied |
| `pinned` | `true` to pin, `false` to unpin. Pinning a pinned one keeps its place |

## Response

The conversation as [the list](/docs/api/apps/ai-conversations) shows it:

```json
{
    "data": {
        "id": "01a16152-7e42-70cd-91a4-b6b80ee47daa",
        "object": "ai_conversation",
        "title": "Daily loss limit",
        "pinned": true,
        "surface": "trader_chat",
        "channel": "private-ai-chat.01a16152-7e42-70cd-91a4-b6b80ee47daa",
        "last_message_at": "2026-10-22T01:56:55+00:00",
        "created_at": "2026-10-22T01:55:58+00:00"
    },
    "meta": {
        "request_id": "req_01m5gn79np0fgqekyd5rxfjhqn"
    }
}
```

## Errors

| Status | Code | Meaning |
| ------ | ---- | ------- |
| 400 | `workspace_required` | Our own staff, without a firm in `Propper-Workspace` |
| 403 | `ai_unavailable` | The firm has the assistant switched off for this chat |
| 403 | `forbidden` | Staff whose role does not include `use_ai_chat` |
| 403 | `insufficient_scope` | This device does not hold `ai:write` |
| 404 | `resource_not_found` | No conversation of yours with that id in this chat and this firm |
| 422 | `validation_failed` | An empty `title`, one over 100 characters, or a `pinned` that is not a boolean |