response field is present.
These are the same threads end users see in the app. How chats work explains what a chat is in product terms — grounding, citations, and how a thread holds context.

A completed chat in Chief — the assistant's answer, grounded in the project's files.
Lifecycle overview
There is no lifecycle enum on messages in v1. Treat the appearance ofresponse as completion.
Start a new chat
POST /v1/chats accepts a CreateChatRequest body:
prompt(required) — user message that starts the threadintelligence—auto(default),fast,expert, orresearchprovider—automatic,anthropic,openai, orgoogleskills— array of skill names to preloadpublic_data— setfalseto disable public web search for this turnscope— optional knowledge scope (assets, chats, labels, concepts, projects, views)
202):
GET /v1/chats/{chat_id}/messages/{message_id}.
Append a turn
POST /v1/chats/{id}/messages uses the same optional fields as create, with prompt required. The chat id is in the path.
Response (202):
Read one message
GET /v1/chats/{id}/messages/{mid} returns a Message:
List messages (ids only)
GET /v1/chats/{id}/messages returns summaries (id, created_at) without body text. Fetch each message individually for content.
Chat metadata
GET /v1/chats/{id} returns chat_id and optional modified_at (latest message time). It does not include messages.
List chats
GET /v1/chats returns chats newest first with cursor pagination:
Response shape:
Scoping knowledge
Usescope on create or send to limit what the assistant may consult. Tenancy always comes from X-Project-Id; do not put project ids in scope unless you are explicitly widening to additional projects via scope.project_ids.
Example—question only your uploaded report:
FAQ
How do I know when a chat response is ready?
How do I know when a chat response is ready?
There is no lifecycle enum on messages in v1. Poll
GET /v1/chats/{id}/messages/{mid} and treat the appearance of the response field as completion.Can I stream tokens as the assistant writes?
Can I stream tokens as the assistant writes?
Not in v1.
response holds the final answer only and is omitted until it is written, so polling returns either nothing or the complete answer.How do I limit which files the assistant can read?
How do I limit which files the assistant can read?
Pass
scope on create or send. For example, scope.asset_ids restricts the turn to specific uploaded files. Labels, chats, concepts, and views can also scope a turn.Do I need to put my project id in scope?
Do I need to put my project id in scope?
No. Tenancy always comes from the
X-Project-Id header. Only set scope.project_ids when you are deliberately widening a turn to additional projects.Why does listing messages return no text?
Why does listing messages return no text?
GET /v1/chats/{id}/messages returns summaries — id and created_at only. Fetch each message individually to get its prompt and response.