Конечные точки на этой странице предоставляют специалистам по комплаенсу транскрипты сессий, которые ваши пользователи запускают в приложениях и агентах Claude (на сегодняшний день — Cowork и Claude Code) из ваших организаций Claude Enterprise. Каждая сессия — это один разговор с Claude; её «transcript» (транскрипт) — это последовательность подсказок пользователя, ответов ассистента, а также вызовов инструментов и их результатов в этом разговоре. Конечные точки поддерживают экспорт для «electronic discovery» (электронного раскрытия информации), или eDiscovery, и обеспечение «data loss prevention» (предотвращения утечки данных), или DLP.
Compliance API группирует сессии в два семейства конечных точек в зависимости от того, где они выполняются: конечные точки локальных сессий — для сессий на машинах пользователей, и конечные точки удалённых сессий — для сессий, которые выполняются в облаке в средах, управляемых Anthropic. Оба семейства доступны только для чтения, и ни одно из них не доступно для ключей Admin API (sk-ant-admin01-...): вызовы, аутентифицированные ключом Admin API, возвращают 403 Forbidden.
В следующей таблице каждый продукт и место его выполнения сопоставлены с семейством конечных точек, которое возвращает его сессии, и значением product_surface, которое идентифицирует их в ответах. Продукты добавляются в эту таблицу по мере расширения покрытия.
| Продукт и место его выполнения | Семейство конечных точек | product_surface |
|---|---|---|
| Cowork в Claude Desktop, выполняющийся на машине пользователя | Конечные точки локальных сессий (/v1/compliance/apps/sessions/local) | cowork |
| Claude Code в терминале, в Claude Desktop или в расширении IDE, выполняющийся на машине пользователя | Конечные точки локальных сессий | claude_code |
| Сессии Cowork, запущенные в веб-версии или мобильном приложении claude.ai, выполняющиеся в облаке в средах, управляемых Anthropic | Конечные точки удалённых сессий (/v1/compliance/apps/sessions/remote) | cowork_remote |
Захват локальных сессий привязан к включению Compliance API для вашей организации и действует, пока пользователи вошли в систему со своей учётной записью Claude Enterprise. Конечные точки сессий не возвращают следующее:
В следующей таблице кратко описано, чем различаются локальные сессии и удалённые сессии.
| Локальные сессии (на машинах пользователей) | Удалённые сессии (в облаке) | |
|---|---|---|
| Конечные точки | Конечные точки списка, получения и сообщений в /v1/compliance/apps/sessions/local | Конечные точки списка и сообщений в /v1/compliance/apps/sessions/remote |
| Префикс идентификатора | clls_ | cse_ |
| Фильтры списка | Только диапазон created_at | Организация, пользователь и диапазон created_at |
| Поля жизненного цикла | Отсутствуют: нет status и updated_at | status, updated_at |
| Срок хранения | 6 лет по умолчанию или пользовательский срок хранения разговоров вашей организации, если задан конечный срок | 6 лет |
| Ограничения скорости | Только общее ограничение Compliance API | Общее ограничение Compliance API плюс второй бюджет запросов |
| Удаление через API | Нет | Нет |
Локальные сессии выполняются на машинах пользователей, пока они вошли в систему со своей учётной записью Claude Enterprise: на сегодняшний день это Cowork в Claude Desktop и Claude Code в терминале, в Claude Desktop или в расширении IDE.
Compliance API предоставляет доступ к локальным сессиям через три конечные точки: GET /v1/compliance/apps/sessions/local возвращает список метаданных сессий, GET /v1/compliance/apps/sessions/local/{session_id} получает метаданные одной сессии, а GET /v1/compliance/apps/sessions/local/{session_id}/messages возвращает транскрипт одной сессии. Все три требуют области действия read:compliance_user_data и учитываются только в общем «rate limit» (ограничении скорости) Compliance API; на них не распространяется второй бюджет запросов, который применяется к конечным точкам удалённых сессий. См. 429 Too Many Requests. Если локальные сессии недоступны для вашей родительской организации, все три конечные точки возвращают 404 с сообщением Local sessions are not available. (см. Локальная сессия не найдена); пока списки сессий или захваченное содержимое временно недоступны, они возвращают 503 (см. Локальные сессии временно недоступны).
Для локальных сессий Anthropic записывает каждый разговор на стороне сервера по мере того, как его запросы достигают Claude API; на устройство ничего не устанавливается, и ничего не собирается сверх запросов, которые клиент уже отправляет в Claude API. Транскрипты локальных сессий показывают, что Claude попросили сделать и что он вернул, а не то, что произошло на устройстве. Файловая и сетевая активность видна только через вызовы инструментов и результаты инструментов в транскрипте, поэтому активность, которая никогда не достигает API (например, локальные файлы, которые сессия никогда не отправляла), не захватывается.
В организациях, использующих ключи шифрования, управляемые клиентом, локальные сессии отображаются в списке и доступны для получения как обычно, но содержимое транскриптов в настоящее время не возвращается; каждое сообщение возвращается с содержимым, помеченным как недоступное (см. Получение транскрипта локальной сессии, где описано, как помечаются такие сообщения).
Конечная точка списка возвращает метаданные сессий без содержимого транскриптов для каждой связанной организации, которую может читать ваш ключ. В отличие от списка удалённых сессий, у неё нет фильтров по организации или пользователю: ограничьте результаты по времени с помощью параметров created_at.gte и created_at.lt. Оба принимают временные метки RFC 3339 с обязательным смещением UTC, и когда указаны оба, created_at.lt должен быть строго позже created_at.gte, иначе запрос возвращает 400 Bad Request. Новые сессии и сообщения появляются в результатах после короткой задержки обработки, обычно в течение нескольких минут; сессия, отсутствующая сразу после её начала, не обязательно не захвачена. Следующий запрос возвращает список сессий, созданных начиная с указанной даты.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/local" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-07-01T00:00:00Z" \
--data-urlencode "limit=100"{
"data": [
{
"type": "compliance_local_session",
"id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
"user": {
"id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
"email_address": "engineer@example.com"
},
"product_surface": "cowork",
"created_at": "2026-07-09T14:02:11Z"
},
{
"type": "compliance_local_session",
"id": "clls_01HyLqMnOpQrStUvWxYzAbCd",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": null,
"user": {
"id": "user_01HqRsTuVwXyZaBcDeFgHiJk",
"email_address": null
},
"product_surface": "claude_code",
"created_at": "2026-07-08T09:15:43Z"
}
],
"next_page": "page_AAEfQx7mPdLkq9Rt2VwHbZk"
}Результаты сортируются в обратном хронологическом порядке (сначала новые) по created_at, при этом совпадения разрешаются в фиксированном порядке на стороне сервера, и ограничиваются limit результатами на ответ (по умолчанию 100, максимум 500). Конечная точка поддерживает постраничную навигацию только вперёд с помощью токенов page и next_page (см. Постраничная навигация по результатам): передайте значение next_page из ответа обратно в качестве параметра запроса page в следующем запросе и остановитесь, когда next_page равно null. В ответе нет поля has_more. Завершите обход списка в течение 24 часов с момента его начала; более старый курсор списка по-прежнему принимается, но пересчитывается относительно текущей границы хранения, поэтому сессии, чья самая старая сохранённая активность вот-вот выйдет за пределы срока хранения, могут быть пропущены.
В каждом объекте сессии user.id всегда задан и сохраняется после удаления учётной записи; user.email_address равен null, когда учётная запись пользователя была удалена или пользователь больше не является членом организации, которую может читать ваш ключ. workspace_id равен null, когда сессия не была связана с рабочим пространством. Локальная сессия соответствует одному идентификатору сессии клиента: начало нового разговора в клиенте или очистка его контекста начинает новую запись сессии. Рассматривайте значения id как непрозрачные строки; формат может измениться без уведомления.
Локальные сессии не содержат status и updated_at: у локальной сессии нет жизненного цикла на стороне сервера, и её видимость вместо этого определяется сроком хранения. Локальная сессия захватывается как серия вызовов Claude API (вызовов инференса), которые клиент выполняет в течение сессии, и срок хранения применяется к каждому захваченному вызову индивидуально. created_at — это временная метка самого раннего сохранённого вызова сессии (UTC). По мере того как более старые вызовы выходят за пределы срока хранения, created_at соответственно сдвигается вперёд, и как только все вызовы в сессии устаревают, сессия больше не возвращается. Поскольку created_at может смещаться между запусками, выполняйте дедупликацию по id при повторном обходе списка с течением времени. created_at сессии не сдвигается на более позднее время по мере продолжения сессии, а updated_at отсутствует, поэтому сессия, в которой появляются сообщения после того, как вы впервые её экспортировали, не появляется повторно в более позднем окне created_at. Чтобы поддерживать транскрипты актуальными, при каждом запуске повторно запрашивайте список за скользящее окно длиной не менее ваших самых продолжительных сессий и повторно извлекайте транскрипты возвращённых сессий, выполняя дедупликацию сообщений по id.
Список строится на основе метаданных активности сессий, поэтому он может включать сессии, содержимое транскриптов которых не было захвачено, например сессии, которые выполнялись до начала захвата для вашей организации (настолько давно, насколько позволяет ваш срок хранения); транскрипт такой сессии возвращает каждое сообщение с содержимым, помеченным как недоступное (см. Получение транскрипта локальной сессии).
Захваченное содержимое локальных сессий по умолчанию хранится 6 лет с момента захвата. Если организация, в которой выполнялась сессия, установила конечный пользовательский срок хранения разговоров в claude.ai > Organization settings > Data and privacy, вместо этого применяется этот срок, независимо от того, короче он или длиннее срока по умолчанию; когда в организации настроено более одного пользовательского срока хранения, применяется самый короткий. Изменение этой настройки вступает в силу двумя разными способами: конечные точки перестают возвращать активность старше текущего срока организации сразу после изменения настройки, тогда как каждое захваченное сообщение хранится в течение срока, действовавшего на момент его захвата, поэтому последующее увеличение срока не восстанавливает содержимое, срок хранения которого уже истёк.
Чтобы напрямую получить метаданные одной сессии, передайте её идентификатор в GET /v1/compliance/apps/sessions/local/{session_id}. Ответ представляет собой тот же объект сессии, который возвращает конечная точка списка, без обёртки и без содержимого транскрипта. Некорректный идентификатор сессии возвращает 400 Bad Request. Один ответ 404 Not Found охватывает четыре случая, которые ответ не различает: сессия не находится в организации, которую может читать ваш ключ (включая сессии в другой родительской организации), она не существует, для неё действует нулевое хранение данных или все вызовы в ней вышли за пределы срока хранения.
product_surface (строка или null) идентифицирует продукт, создавший сессию: cowork для сессий Cowork, выполняющихся на машине пользователя в Claude Desktop, и claude_code для сессий Claude Code. Новые значения появляются по мере расширения покрытия.
Конечная точка сообщений возвращает транскрипт сессии, восстановленный из захваченных вызовов Claude API: подсказки пользователя, текст ассистента, вызовы инструментов и текстовые части результатов инструментов — всё возвращается в том виде, в котором было отправлено, за исключением усечения по размеру. Ничто не маскирует URL-адреса, учётные данные или персональные данные в этом содержимом, поэтому относитесь к транскриптам как к конфиденциальным. Транскрипт опускает или заменяет следующее:
[system prompt content not shown] (обычно один раз на сессию; сессия без захваченного содержимого не содержит маркера).text с текстом [<block type> content not shown] (например, [image content not shown]) с truncated, установленным в true. Нетекстовые элементы внутри результата инструмента заменяются одной записью [N non-text item(s) not shown], а truncated блока результата инструмента равен true.text опускаются, а затронутый блок содержит truncated, установленный в true.Файлы инструкций проекта, такие как CLAUDE.md, отображаются как обычное содержимое с ролью пользователя. Содержимое навыков отображается, когда клиент отправляет его как содержимое сообщения, и не отличается от другого пользовательского текста. Сводку покрытия и сравнение с журналированием OpenTelemetry для Cowork и Claude Code см. в FAQ по Compliance API.
session_id="clls_01HxKpLmNoPqRsTuVwXyZaBc"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/sessions/local/$session_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"session": {
"type": "compliance_local_session",
"id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
"user": {
"id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
"email_address": null
},
"product_surface": "cowork",
"created_at": "2026-07-09T14:02:11Z"
},
"data": [
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBa",
"role": "user",
"created_at": "2026-07-09T14:02:11Z",
"provenance": {
"type": "synthetic_marker"
},
"content": [
{
"type": "text",
"text": "[system prompt content not shown]",
"truncated": true
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBc",
"role": "user",
"created_at": "2026-07-09T14:02:11Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "Fix the failing test in tests/auth_test.py",
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBd",
"role": "assistant",
"created_at": "2026-07-09T14:02:11Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "I'll read the test file first.",
"truncated": false
},
{
"type": "tool_use",
"id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
"name": "Read",
"input": "{\"file_path\":\"tests/auth_test.py\"}",
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBe",
"role": "user",
"created_at": "2026-07-09T14:02:38Z",
"provenance": null,
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
"name": "Read",
"is_error": false,
"content": [
{
"type": "text",
"text": "def test_login_expiry():\n ..."
}
],
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBf",
"role": "assistant",
"created_at": "2026-07-09T14:02:38Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "The test was asserting on a stale expiry timestamp. I've updated it.",
"truncated": false
}
]
}
],
"next_page": null
}Ответ включает обёртку session наряду с постраничным массивом data. Первая запись в этом примере — это маркер, который стоит вместо системной подсказки запроса; его provenance описан далее в этом разделе. На этой конечной точке user.email_address всегда равен null: конечная точка сообщений не разрешает адреса электронной почты, поэтому null здесь не означает, что учётная запись пользователя была удалена. Чтобы сопоставить сессию с адресом электронной почты, соедините user.id с данными конечной точки списка или конечной точки получения (GET /v1/compliance/apps/sessions/local/{session_id}).
По умолчанию сообщения возвращаются начиная с самых старых; передайте order=desc, чтобы изменить порядок на обратный. Постраничная навигация использует ту же схему page/next_page, что и конечная точка списка, со значением limit по умолчанию 100 и максимумом 1 000. Страница может закончиться раньше, когда ответ достигает предельного размера, поэтому страница с меньшим, чем limit, количеством сообщений не означает, что вы достигли конца; продолжайте постраничную навигацию, пока next_page не станет null. Курсоры страниц привязаны к сессии и порядку сортировки, для которых они были выданы, а курсоры обхода истекают через 24 часа после его первой страницы: истёкший курсор возвращает 400 Bad Request с указанием начать заново без параметра page, и перезапущенный обход отражает текущую границу хранения. Курсор, выданный для другой сессии или другого order, также возвращает 400 как недействительный курсор.
Каждое сообщение содержит role (user или assistant) и массив content из блоков text, tool_use и tool_result. Блок text содержит text и truncated. Блок tool_use содержит id, name, input и truncated, где input — это строка в кодировке JSON, а не объект. Блок tool_result содержит tool_use_id, name, is_error, массив content из записей text и truncated. Вызовы и результаты инструментов MCP, а также большинство вызовов и результатов серверных инструментов нормализуются в эти же формы tool_use и tool_result; любой другой тип блока отображается как заполнитель [<block type> content not shown]. id сообщения стабилен, пока ход сохраняется. Каждое сообщение, восстановленное из одного и того же вызова инференса, содержит временную метку этого вызова, поэтому последовательные сообщения часто имеют одинаковое значение created_at; сохраняйте возвращённый порядок, а не пересортировывайте по временной метке.
Каждое сообщение также содержит поле provenance, описывающее, как было захвачено его содержимое. provenance равен null для проверенного содержимого, захваченного Claude API, что является обычным случаем. В противном случае это объект, чей type обозначает исключение:
content_unavailable означает, что содержимое не может быть возвращено. Массив content пуст, а provenance.reason указывает причину. not_captured означает, что для хода нет доступного содержимого; это не доказывает, что запись не была сохранена, поскольку содержимое, удержанное политикой доступа на стороне хранилища, сообщается с той же причиной (например, в организациях, использующих ключи шифрования, управляемые клиентом), а отдельные ходы в рамках в остальном захваченной сессии могут быть недоступны по другим причинам обработки данных и содержать ту же причину. cmek_key_revoked зарезервирован для содержимого, зашифрованного ключом, управляемым клиентом вашей организации, когда этот ключ недоступен (например, отозван); в настоящее время он не возвращается, поэтому обрабатывайте его для прямой совместимости. retention_elapsed означает, что содержимое вышло за пределы срока хранения. oversize означает, что одно сообщение превысило ограничение размера на сообщение; сообщение всё равно возвращается с пустым массивом content.client_asserted помечает сообщения ассистента, которые клиент предоставил как историю разговора и которые не удалось сопоставить с захваченным ответом; их авторство не проверено.synthetic_marker помечает записи, сгенерированные самой конечной точкой, такие как маркер, стоящий вместо системной подсказки. Когда клиент перезаписывает или сжимает свою историю разговора в середине сессии (например, после сжатия контекста), транскрипт вставляет в этой точке сообщение-маркер и продолжается новым содержимым, отправленным клиентом; когда у вашей организации конечный срок хранения, сама перезаписанная история удерживается (второй маркер отмечает это), и показываются только последний ход пользователя и то, что следует за ним.Сообщения-маркеры и сообщения, заявленные клиентом, начинаются с пояснительного блока text в квадратных скобках с флагом truncated: true, например [system prompt content not shown]. Рассматривайте эти записи как присутствующие, но недоступные или непроверенные, а не как отсутствующие, и допускайте нераспознанные типы и причины provenance.
Два параметра ограничивают количество возвращаемых байтов каждого блока инструмента: tool_use_input_max_bytes и tool_result_max_bytes, оба по умолчанию равны 10 000 байт. Передайте -1 для серверного максимума (около 1 МиБ на строку); 0 возвращает 400 Bad Request, а значения выше максимума приводятся к нему. Строка, обрезанная любым из ограничений, обрезается по границе символа, и к ней добавляется встроенный суффикс (например, …[truncated; pass tool_result_max_bytes=-1 for the server max]), а её блок содержит "truncated": true. Усечённый input блока tool_use, следовательно, больше не является допустимым JSON, поэтому разбирайте входные данные инструментов только из неусечённых блоков (или увеличьте ограничение и запросите повторно). Блоки типа text всегда ограничены тем же серверным максимумом около 1 МиБ; никакой параметр его не увеличивает, и блок text на границе также содержит "truncated": true.
Содержимое транскрипта соблюдает срок хранения, описанный в разделе Сессии на машинах пользователей. Когда начало сессии вышло за его пределы, транскрипт начинается с одного заполнителя content_unavailable с reason, равным retention_elapsed, за которым следуют сохранённые сообщения. Когда все вызовы в сессии устарели, конечная точка сообщений возвращает 404 Not Found, как и для сессий в организациях, которые ваш ключ не может читать, несуществующих сессий и сессий, для которых действует нулевое хранение данных. Некорректный идентификатор сессии возвращает 400 Bad Request.
Сессии Cowork, запущенные в веб-версии или мобильном приложении claude.ai, выполняются в облаке в средах, управляемых Anthropic. Compliance API предоставляет доступ к этим удалённым сессиям через две конечные точки: GET /v1/compliance/apps/sessions/remote возвращает список метаданных сессий, а GET /v1/compliance/apps/sessions/remote/{session_id}/messages возвращает транскрипт одной сессии. Обе требуют области действия read:compliance_user_data, и обе учитываются в общем ограничении скорости Compliance API плюс во втором бюджете запросов, специфичном для этих конечных точек; см. 429 Too Many Requests.
Конечная точка списка по умолчанию охватывает всю организацию: опустите organization_ids[], чтобы включить каждую организацию claude.ai, которую может читать ваш ключ, или передайте до 500 значений, чтобы сузить область. Чтобы вместо этого ограничить список конкретными пользователями, передайте 1–10 значений user_ids[] (получите идентификаторы из Списка пользователей организации); фильтр сопоставляется с пользователем-владельцем сессии, поэтому сессии, принадлежащие агентам, исключаются всякий раз, когда задан user_ids[]. Ограничьте результаты по времени с помощью параметров диапазона created_at (gte, gt, lt, lte, в формате RFC 3339). Фильтра updated_at нет. Следующий запрос возвращает список сессий, созданных начиная с указанной даты.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-06-01T00:00:00Z" \
--data-urlencode "limit=100"{
"data": [
{
"id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"agent_id": null,
"started_by_user": null,
"status": "active",
"created_at": "2026-07-01T17:04:05Z",
"updated_at": "2026-07-01T18:00:41Z",
"product_surface": "cowork_remote",
"claude_project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq"
},
{
"id": "cse_01TkNpRsUvWxYzAbCdEfGhJ4",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": null,
"agent_id": "cagt_01MnPqRsTuVwXyZaBcDeFgH8",
"started_by_user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"status": "archived",
"created_at": "2026-06-28T09:15:22Z",
"updated_at": "2026-06-28T09:47:10Z",
"product_surface": "cowork_remote",
"claude_project_id": null
}
],
"next_page": "page_AAEfMk93cXpYdGxrZXk"
}Результаты сортируются в обратном хронологическом порядке (сначала новые) по created_at и ограничиваются limit результатами на ответ (по умолчанию 100, максимум 500). Конечная точка поддерживает постраничную навигацию с помощью токенов page и next_page (см. Постраничная навигация по результатам): передайте значение next_page из ответа обратно в качестве параметра запроса page в следующем запросе и остановитесь, когда next_page равно null.
Сессия принадлежит либо пользователю, либо агенту, но никогда обоим. Для сессий, принадлежащих пользователю, user содержит идентификатор и адрес электронной почты владельца (email_address равен null, когда пользователь больше не является членом организации, которую может читать ваш ключ), а agent_id равен null. Для сессий, принадлежащих агенту (например, запланированных задач), user равен null, agent_id содержит идентификатор агента (префикс cagt_), а started_by_user идентифицирует человека, инициировавшего запуск, например запустившего запланированную задачу; в сессиях, принадлежащих пользователю, started_by_user равен null.
claude_project_id — это идентификатор проекта claude.ai, к которому принадлежит сессия (префикс claude_proj_), или null, когда сессия не входит в проект.
status принимает одно из значений pending, active, paused, archived или failed. Сессия находится в состоянии pending, пока она подготавливается; у сессии в состоянии pending ещё нет транскрипта, и конечная точка сообщений возвращает для неё 404 до завершения подготовки. Удалённые (стёртые) сессии никогда не возвращаются.
product_surface (строка или null) идентифицирует продукт, создавший сессию. В настоящее время конечная точка возвращает только сессии с product_surface, равным cowork_remote: сессии Cowork, запущенные в веб-версии или мобильном приложении claude.ai.
Конечная точка сообщений возвращает транскрипт сессии: подсказки пользователя, ответы ассистента, а также вызовы инструментов и их результаты. Блоки мышления и изображения не включаются. Сводку покрытия и сравнение с журналированием OpenTelemetry в Cowork см. в FAQ по Compliance API.
session_id="cse_01WpQrStUvXyZaBcDeFgHjK6"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/sessions/remote/$session_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"session": {
"id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": null
},
"agent_id": null,
"started_by_user": null,
"status": "active",
"created_at": "2026-07-01T17:04:05Z",
"updated_at": "2026-07-01T18:00:41Z",
"product_surface": "cowork_remote",
"claude_project_id": null
},
"data": [
{
"id": "csev_01HjKmNpQrStUvWxYzAbCdE2",
"role": "user",
"created_at": "2026-07-01T17:04:05Z",
"content": [
{
"type": "text",
"text": "Summarize the customer feedback in the attached spreadsheet.",
"truncated": false
}
],
"sent_by_user_id": null,
"content_unavailable": false
},
{
"id": "csev_01BcDeFgHjKmNpQrStUvWxY4",
"role": "assistant",
"created_at": "2026-07-01T17:04:06Z",
"content": [
{
"type": "text",
"text": "I'll start by reading the spreadsheet...",
"truncated": false
}
],
"sent_by_user_id": null,
"content_unavailable": false
}
],
"next_page": null
}Ответ включает обёртку session наряду с постраничным массивом data. На этой конечной точке в обёртке user.email_address, started_by_user и claude_project_id всегда установлены в null; получайте эти значения из конечной точки списка.
По умолчанию сообщения возвращаются начиная с самых старых; передайте order=desc, чтобы изменить порядок на обратный. Постраничная навигация использует ту же схему page/next_page, что и конечная точка списка, со значением limit по умолчанию 100 и максимумом 1 000. Страница может закончиться раньше, когда ответ достигает предельного размера, поэтому страница с меньшим, чем limit, количеством сообщений не означает, что вы достигли конца; продолжайте постраничную навигацию, пока next_page не станет null.
Каждое сообщение содержит role (user или assistant) и массив content из блоков text, tool_use и tool_result. Значения created_at сообщений — это временные метки фиксации: последовательные сообщения могут иметь одинаковую временную метку или слегка инвертированный порядок, поэтому сохраняйте возвращённый порядок, а не пересортировывайте по created_at. В сессиях, принадлежащих агенту, sent_by_user_id фиксирует пользователя, отправившего данное пользовательское сообщение, когда его можно установить; в противном случае он равен null, в том числе во всех сообщениях ассистента. Когда содержимое сообщения вообще не может быть возвращено (например, оно превышает ограничения размера), сообщение содержит content_unavailable, установленный в true.
Два параметра ограничивают количество возвращаемых байтов каждого блока инструмента: tool_use_input_max_bytes и tool_result_max_bytes, оба по умолчанию равны 10 000 байт. Передайте -1 для серверного максимума (около 1 МиБ на строку); 0 возвращает 400 Bad Request. Блок, обрезанный любым из ограничений, содержит "truncated": true, а усечённый вход tool_use больше не является допустимым JSON, поэтому разбирайте входные данные инструментов только из неусечённых блоков (или увеличьте ограничение и запросите повторно).
Конечная точка сообщений возвращает 404 Not Found для сессий в состоянии pending, сессий, которые не существуют или были удалены, и сессий в организациях, которые ваш ключ не может читать.
Конечные точки сессий доступны только для чтения; локальные и удалённые сессии нельзя удалить через Compliance API. Транскрипты локальных сессий хранятся 6 лет по умолчанию или в течение пользовательского срока хранения разговоров вашей организации, если задан конечный срок, как описано в разделе Сессии на машинах пользователей. Транскрипты удалённых сессий хранятся 6 лет. О том, как эти сроки соотносятся с другими условиями хранения Anthropic, см. API и хранение данных.
Получайте доступ к содержимому чатов claude.ai, вложенным файлам и проектам с тем же ключом Compliance Access Key.
Сводка покрытия для транскриптов сессий и сравнение с журналированием OpenTelemetry.
Дословные полезные нагрузки ошибок и способ исправления каждой из них.
Пути конечных точек, параметры и схемы ответов для Compliance API.
Was this page helpful?