Nurama Developers
AI

Rename, archive, or set the context pins of an AI chat topic.

At least one of `title`, `archived`, or `contextItems` must be provided. Only the topic's creator may update it; any other caller receives `forbidden`. ## Context pins (`contextItems`) The items the user has pinned to Nu's Context column for this topic — assets, folders, people, submissions, and public collections that the conversation is "about". Persisted here rather than sent per message, so the column survives a page reload and a new session the way the conversation does. Sent and stored as **identity only** (`type` + `id`); the server normalises away any other field. Names, thumbnails, and content are never stored, and neither is any access decision. A pin is a **bookmark, not a grant**. Every entry is re-resolved from scratch on every turn, under the caller's live permissions: - an item deleted since it was pinned drops out of that turn; - an item the caller has since lost access to drops out; - visibility tiers are re-derived per turn — the stored pin carries none. Dropped entries are silently omitted from the model's context rather than reported, so the assistant never learns that something it cannot see exists. The stored list is left intact, so regaining access restores the pin without re-pinning. Sending `contextItems` replaces the topic's pins wholesale. An empty array clears them. Only project-scoped topics resolve pins at all; workspace- and social-scoped topics have no project to resolve against and ignore them.

PATCH
/ai/chat/topics/{topicId}

At least one of title, archived, or contextItems must be provided. Only the topic's creator may update it; any other caller receives forbidden.

Context pins (contextItems)

The items the user has pinned to Nu's Context column for this topic — assets, folders, people, submissions, and public collections that the conversation is "about". Persisted here rather than sent per message, so the column survives a page reload and a new session the way the conversation does.

Sent and stored as identity only (type + id); the server normalises away any other field. Names, thumbnails, and content are never stored, and neither is any access decision.

A pin is a bookmark, not a grant. Every entry is re-resolved from scratch on every turn, under the caller's live permissions:

  • an item deleted since it was pinned drops out of that turn;
  • an item the caller has since lost access to drops out;
  • visibility tiers are re-derived per turn — the stored pin carries none.

Dropped entries are silently omitted from the model's context rather than reported, so the assistant never learns that something it cannot see exists. The stored list is left intact, so regaining access restores the pin without re-pinning.

Sending contextItems replaces the topic's pins wholesale. An empty array clears them. Only project-scoped topics resolve pins at all; workspace- and social-scoped topics have no project to resolve against and ignore them.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

topicId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/ai/chat/topics/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c"  }'
{  "topic": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "chatType": "ai",    "scopeType": "workspace",    "scopeId": "65fafe40-a220-4dd7-8724-4598b81c0643",    "billedResourceType": "workspace",    "billedResourceId": "e4cc728d-50b5-41bd-80c9-0479f99d7ce7",    "creatorId": "688ebf54-d343-4104-8711-82c2feac534a",    "chatId": "f255124e-3419-4f6e-b7ee-17a6577db94d",    "title": "string",    "titleGenerationFailed": true,    "totalMessages": 0,    "totalBilledCredits": 0,    "lastMessagePreview": "string",    "lastMessageAt": "2019-08-24T14:15:22Z",    "contextItems": [      {        "type": "asset",        "id": "string"      }    ],    "archived": true,    "status": "active",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }}