Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · api

Local changedapi/compliance/apps/sessions/local

Nearest release: v2.1.245, published an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Recorded here
Lines+108added
Lines−225removed
From line 1 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits15to this page, all time

### Query parameters ### Headers #### Response (200) ### Path parameters ### Headers #### Response (200) ## Domain types ## Local › Messages ### Retrieve local session messages #### Path parameters #### Query parameters #### Headers #### Returns #### Example ##### Response (200) ### Query Parameters ### Header Parameters #### Response ### Path Parameters ### Header Parameters #### Response ## Domain Types # Messages ## Retrieve local session messages ### Path Parameters ### Query Parameters ### Header Parameters #### Response ## Domain Types ### Message List Response

The whole hunk

from line 1, old and new numbered
/
lines
from line 1
1---
2title: Local
3url: https://platform.claude.com/docs/en/api/compliance/apps/sessions/local
4---
5 
61# Local
72 
83## List local sessions
94 
10**get** `/v1/compliance/apps/sessions/local`
5**GET** `/v1/compliance/apps/sessions/local`
116 
127List local sessions across the organizations the key may read.
138 
from line 9
149Results are ordered by `created_at` descending. Pagination is
1510forward-only via `next_page`; there is no reverse cursor.
1611 
17### Query Parameters
12### Query parameters
1813 
19- `created_at: optional object { gte, lt }`
14- `created_at: optional object`
2015 
2116 - `gte: optional string`
2217 
2318 Only return sessions whose first inference call is at or after this time (RFC 3339; a UTC offset is required).
2419 
20 format: date-time
21 
2522 - `lt: optional string`
2623 
2724 Only return sessions whose first inference call is strictly before this time (RFC 3339; a UTC offset is required).
2825 
26 format: date-time
27 
2928- `limit: optional number`
3029 
3130 Maximum results (default: 100, max: 500)
3231 
32 default: 100, maximum: 500, minimum: 1
33 
3334- `page: optional string`
3435 
3536 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.
3637 
37- `updated_at: optional object { gte }`
38- `updated_at: optional object`
3839 
3940 - `gte: optional string`
4041 
4142 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.
4243 
43### Header Parameters
44 format: date-time
4445 
46### Headers
47 
4548- `"x-api-key": optional string`
4649 
4750### Returns
4851 
49- `data: array of object { id, created_at, organization_uuid, 5 more }`
52- `data: array of object`
5053 
5154 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.
5255 
from line 61
5861 
5962 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.
6063 
64 format: date-time
65 
6166 - `organization_uuid: string`
6267 
6368 UUID of the child organization the session belongs to
from line 73
6873 
6974 - `type: "compliance_local_session"`
7075 
71 - `"compliance_local_session"`
76 default: compliance_local_session
7277 
7378 - `updated_at: string`
7479 
7580 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
7681 
77 - `user: object { id, email_address }`
82 format: date-time
7883 
84 - `user: object`
85 
7986 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
8087 
8188 - `id: string`
from line 103
96103 
97104### Example
98105 
99```http
106```bash
100107curl https://api.anthropic.com/v1/compliance/apps/sessions/local \
101108 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"
102109```
103110 
104#### Response
111#### Response (200)
105112 
106113```json
107114{
from line 132
125132 
126133## Retrieve a local session
127134 
128**get** `/v1/compliance/apps/sessions/local/{local_session_id}`
135**GET** `/v1/compliance/apps/sessions/local/{local_session_id}`
129136 
130137Retrieve one local session.
131138 
from line 141
134141enforced when the response is served: a session whose every
135142inference call has aged out returns 404.
136143 
137### Path Parameters
144### Path parameters
138145 
139146- `local_session_id: string`
140147 
141### Header Parameters
148### Headers
142149 
143150- `"x-api-key": optional string`
144151 
from line 159
152159 
153160 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.
154161 
162 format: date-time
163 
155164- `organization_uuid: string`
156165 
157166 UUID of the child organization the session belongs to
from line 171
162171 
163172- `type: "compliance_local_session"`
164173 
165 - `"compliance_local_session"`
174 default: compliance_local_session
166175 
167176- `updated_at: string`
168177 
169178 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
170179 
171- `user: object { id, email_address }`
180 format: date-time
172181 
182- `user: object`
183 
173184 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
174185 
175186 - `id: string`
from line 197
186197 
187198### Example
188199 
189```http
200```bash
190201curl https://api.anthropic.com/v1/compliance/apps/sessions/local/$LOCAL_SESSION_ID \
191202 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"
192203```
193204 
194#### Response
205#### Response (200)
195206 
196207```json
197208{
from line 220
209220}
210221```
211222 
212## Domain Types
223## Domain types
213224 
214225### Local List Response
215226 
216- `LocalListResponse object { id, created_at, organization_uuid, 5 more }`
227- `LocalListResponse object`
217228 
218229 A Cowork or Claude Code session that a user ran on their own computer
219230 while signed in with their organization account.
from line 237
226237 
227238 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.
228239 
240 format: date-time
241 
229242 - `organization_uuid: string`
230243 
231244 UUID of the child organization the session belongs to
from line 249
236249 
237250 - `type: "compliance_local_session"`
238251 
239 - `"compliance_local_session"`
252 default: compliance_local_session
240253 
241254 - `updated_at: string`
242255 
243256 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
244257 
245 - `user: object { id, email_address }`
258 format: date-time
246259 
260 - `user: object`
261 
247262 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
248263 
249264 - `id: string`
from line 275
260275 
261276### Local Retrieve Response
262277 
263- `LocalRetrieveResponse object { id, created_at, organization_uuid, 5 more }`
278- `LocalRetrieveResponse object`
264279 
265280 A Cowork or Claude Code session that a user ran on their own computer
266281 while signed in with their organization account.
from line 288
273288 
274289 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.
275290 
291 format: date-time
292 
276293 - `organization_uuid: string`
277294 
278295 UUID of the child organization the session belongs to
from line 300
283300 
284301 - `type: "compliance_local_session"`
285302 
286 - `"compliance_local_session"`
303 default: compliance_local_session
287304 
288305 - `updated_at: string`
289306 
290307 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
291308 
292 - `user: object { id, email_address }`
309 format: date-time
293310 
311 - `user: object`
312 
294313 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
295314 
296315 - `id: string`
from line 324
305324 
306325 Workspace identifier (tagged ID, prefixed `wrkspc_`). Null for sessions not attributed to a workspace.
307326 
308# Messages
327## Local › Messages
309328 
310## Retrieve local session messages
329### Retrieve local session messages
311330 
312**get** `/v1/compliance/apps/sessions/local/{local_session_id}/messages`
331**GET** `/v1/compliance/apps/sessions/local/{local_session_id}/messages`
313332 
314333Read one local session's transcript, oldest-first by default.
315334 
from line 340
321340honored for 24 hours: a cursor older than that is rejected with an
322341explicit 400; restart the walk to read under the current boundary.
323342 
324### Path Parameters
343#### Path parameters
325344 
326345- `local_session_id: string`
327346 
328### Query Parameters
347#### Query parameters
329348 
330349- `limit: optional number`
331350 
332351 Maximum results (default: 100, max: 1000)
333352 
353 default: 100, maximum: 1000, minimum: 1
354 
334355- `order: optional "asc" or "desc"`
335356 
336357 Sort direction. `asc` (oldest-first, default) or `desc`.
337358 
359 default: asc
360 
338361 - `"asc"`
339362 
340363 - `"desc"`
from line 370
347370 
348371 Truncate each text item inside a tool result to at most this many bytes (cut on a code-point boundary). Pass `-1` to request the server maximum (approximately 1 MiB); larger values are clamped to it. `0` is not a valid value.
349372 
373 default: 10000, maximum: 2147483647, minimum: -1
374 
350375- `tool_use_input_max_bytes: optional number`
351376 
352377 Truncate each tool-use input to at most this many bytes (cut on a code-point boundary so the result is valid UTF-8). Pass `-1` to request the server maximum (approximately 1 MiB); larger values are clamped to it. `0` is not a valid value.
353378 
354### Header Parameters
379 default: 10000, maximum: 2147483647, minimum: -1
355380 
381#### Headers
382 
356383- `"x-api-key": optional string`
357384 
358### Returns
385#### Returns
359386 
360- `data: array of object { id, content, created_at, 4 more }`
387- `data: array of object`
361388 
362389 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.
363390 
from line 392
365392 
366393 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
367394 
368 - `content: array of object { text, truncated, type } or object { id, input, name, 2 more } or object { content, is_error, name, 3 more }`
395 - `content: array of object or object or object`
369396 
370397 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
371398 
372 - `Text object { text, truncated, type }`
399 - `Text object`
373400 
374401 Text content block.
375402 
from line 408
381408 
382409 True when `text` was shortened by the server's fixed per-string bound (approximately 1 MiB), or when ancillary content the block carried (such as citations) was omitted, or when this block stands in for a non-text block whose content is not shown, or when it is an explanatory marker the server inserted (its text enclosed in square brackets, e.g. prefacing client-asserted history). There is no request parameter that raises the per-string bound.
383410 
411 default: false
412 
384413 - `type: "text"`
385414 
386 - `"text"`
415 default: text
387416 
388 - `ToolUse object { id, input, name, 2 more }`
417 - `ToolUse object`
389418 
390419 Tool invocation requested by the assistant.
391420 
from line 434
405434 
406435 True when `input` was shortened. Pass `tool_use_input_max_bytes=-1` to request the server maximum.
407436 
437 default: false
438 
408439 - `type: "tool_use"`
409440 
410 - `"tool_use"`
441 default: tool_use
411442 
412 - `ToolResult object { content, is_error, name, 3 more }`
443 - `ToolResult object`
413444 
414445 Result returned by a tool invocation.
415446 
416 - `content: array of object { text, type }`
447 - `content: array of object`
417448 
418449 Text content returned by the tool. Non-text item types are omitted and signalled via `truncated` with an in-band item-count marker.
419450 
from line 454
423454 
424455 - `type: "text"`
425456 
426 - `"text"`
457 default: text
427458 
428459 - `is_error: boolean`
429460 
from line 472
441472 
442473 True when one or more text items in `content` were shortened or non-text items were omitted. Pass `tool_result_max_bytes=-1` to request the server maximum.
443474 
475 default: false
476 
444477 - `type: "tool_result"`
445478 
446 - `"tool_result"`
479 default: tool_result
447480 
448481 - `created_at: string`
449482 
450483 When the message was recorded (RFC 3339, UTC)
451484 
485 format: date-time
486 
452487 - `model: string or null`
453488 
454489 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
455490 
456 - `provenance: object { reason, type } or object { type } or object { type } or null`
491 - `provenance: object or object or object or null`
457492 
458493 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
459494 
460 - `ContentUnavailable object { reason, type }`
495 - `ContentUnavailable object`
461496 
462497 The turn's content cannot be returned; `content` is empty.
463498 
from line 502
467502 
468503 - `type: "content_unavailable"`
469504 
470 - `"content_unavailable"`
505 default: content_unavailable
471506 
472 - `ClientAsserted object { type }`
507 - `ClientAsserted object`
473508 
474509 Assistant content the client supplied as conversation history
475510 rather than produced by Claude during this session. `content` shows
from line 514
479514 
480515 - `type: "client_asserted"`
481516 
482 - `"client_asserted"`
517 default: client_asserted
483518 
484 - `SyntheticMarker object { type }`
519 - `SyntheticMarker object`
485520 
486521 A transcript marker generated by the endpoint rather than sent by
487522 either party during the session. Marker messages indicate that the
from line 530
495530 
496531 - `type: "synthetic_marker"`
497532 
498 - `"synthetic_marker"`
533 default: synthetic_marker
499534 
500535 - `role: "assistant" or "user"`
501536 
from line 542
507542 
508543 - `type: "compliance_local_session_message"`
509544 
510 - `"compliance_local_session_message"`
545 default: compliance_local_session_message
511546 
512547- `next_page: string or null`
513548 
514549 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.
515550 
516- `session: object { id, created_at, organization_uuid, 5 more }`
551- `session: object`
517552 
518553 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.
519554 
from line 560
525560 
526561 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.
527562 
563 format: date-time
564 
528565 - `organization_uuid: string`
529566 
530567 UUID of the child organization the session belongs to
from line 572
535572 
536573 - `type: "compliance_local_session"`
537574 
538 - `"compliance_local_session"`
575 default: compliance_local_session
539576 
540577 - `updated_at: string`
541578 
542579 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.
543580 
544 - `user: object { id, email_address }`
581 format: date-time
545582 
583 - `user: object`
584 
546585 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.
547586 
548587 - `id: string`
from line 596
557596 
558597 Workspace identifier (tagged ID, prefixed `wrkspc_`). Null for sessions not attributed to a workspace.
559598 
560### Example
599#### Example
561600 
562```http
601```bash
563602curl https://api.anthropic.com/v1/compliance/apps/sessions/local/$LOCAL_SESSION_ID/messages \
564603 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"
565604```
566605 
567#### Response
606##### Response (200)
568607 
569608```json
570609{
from line 643
604643 }
605644}
606645```
607 
608## Domain Types
609 
610### Message List Response
611 
612- `MessageListResponse object { id, content, created_at, 4 more }`
613 
614 A single user or assistant turn in a local session transcript.
615 
616 - `id: string`
617 
618 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
619 
620 - `content: array of object { text, truncated, type } or object { id, input, name, 2 more } or object { content, is_error, name, 3 more }`
621 
622 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
623 
624 - `Text object { text, truncated, type }`
625 
626 Text content block.
627 
628 - `text: string`
629 
630 Text content from the user or the assistant
631 
632 - `truncated: boolean`
633 
634 True when `text` was shortened by the server's fixed per-string bound (approximately 1 MiB), or when ancillary content the block carried (such as citations) was omitted, or when this block stands in for a non-text block whose content is not shown, or when it is an explanatory marker the server inserted (its text enclosed in square brackets, e.g. prefacing client-asserted history). There is no request parameter that raises the per-string bound.
635 
636 - `type: "text"`
637 
638 - `"text"`
639 
640 - `ToolUse object { id, input, name, 2 more }`
641 
642 Tool invocation requested by the assistant.
643 
644 - `id: string or null`
645 
646 Tool-use ID, e.g. 'toolu_01AbC...'
647 
648 - `input: string`
649 
650 Arguments passed to the tool, as a JSON-encoded string. May be shortened (see the `truncated` field); a truncated value is cut mid-document and is not valid JSON.
651 
652 - `name: string`
653 
654 Name of the tool invoked
655 
656 - `truncated: boolean`
657 
658 True when `input` was shortened. Pass `tool_use_input_max_bytes=-1` to request the server maximum.
659 
660 - `type: "tool_use"`
661 
662 - `"tool_use"`
663 
664 - `ToolResult object { content, is_error, name, 3 more }`
665 
666 Result returned by a tool invocation.
667 
668 - `content: array of object { text, type }`
669 
670 Text content returned by the tool. Non-text item types are omitted and signalled via `truncated` with an in-band item-count marker.
671 
672 - `text: string`
673 
674 Text returned by the tool
675 
676 - `type: "text"`
677 
678 - `"text"`
679 
680 - `is_error: boolean`
681 
682 True when the tool reported an error
683 
684 - `name: string`
685 
686 Name of the tool that produced this result
687 
688 - `tool_use_id: string or null`
689 
690 ID of the tool_use block this result responds to
691 
692 - `truncated: boolean`
693 
694 True when one or more text items in `content` were shortened or non-text items were omitted. Pass `tool_result_max_bytes=-1` to request the server maximum.
695 
696 - `type: "tool_result"`
697 
698 - `"tool_result"`
699 
700 - `created_at: string`
701 
702 When the message was recorded (RFC 3339, UTC)
703 
704 - `model: string or null`
705 
706 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
707 
708 - `provenance: object { reason, type } or object { type } or object { type } or null`
709 
710 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
711 
712 - `ContentUnavailable object { reason, type }`
713 
714 The turn's content cannot be returned; `content` is empty.
715 
716 - `reason: string`
717 
718 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.
719 
720 - `type: "content_unavailable"`
721 
722 - `"content_unavailable"`
723 
724 - `ClientAsserted object { type }`
725 
726 Assistant content the client supplied as conversation history
727 rather than produced by Claude during this session. `content` shows
728 what the model received but its authorship is not verified; this can
729 result from normal request or client processing, not only client
730 modification. Never on user-role messages.
731 
732 - `type: "client_asserted"`
733 
734 - `"client_asserted"`
735 
736 - `SyntheticMarker object { type }`
737 
738 A transcript marker generated by the endpoint rather than sent by
739 either party during the session. Marker messages indicate that the
740 prompt history diverged from what was captured, that the request's
741 `system` field was present but is not shown, or that
742 prompt-carried history was suppressed because the session spans the
743 child organization's retention boundary and those turns cannot be
744 placed against it (the marker's text names the cause). Markers that
745 report a mismatch with captured history can result from normal request
746 or client processing, not only client modification.
747 
748 - `type: "synthetic_marker"`
749 
750 - `"synthetic_marker"`
751 
752 - `role: "assistant" or "user"`
753 
754 Message sender (`user` or `assistant`)
755 
756 - `"assistant"`
757 
758 - `"user"`
759 
760 - `type: "compliance_local_session_message"`
761 
762 - `"compliance_local_session_message"`
763646 
Feedback