Claude Platform Docs

Получение стенограмм сеансов

Получайте список сеансов, которые ваши пользователи запускают в приложениях и агентах Claude, таких как Claude Cowork и Claude Code, и извлекайте их стенограммы через Compliance API.

Конечные точки на этой странице предоставляют специалистам по проверке соответствия стенограммы сеансов, которые ваши пользователи запускают в приложениях и агентах Claude (на сегодня это Cowork, Claude Code, Claude Science, Claude for Microsoft 365 и Claude in Chrome) в ваших организациях 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
Настольное приложение Claude Science, выполняется на компьютере пользователяКонечные точки локальных сеансовclaude_science
Claude for Microsoft 365 (надстройки Claude для Excel, PowerPoint, Word и Outlook), выполняется в настольных или веб-приложениях Microsoft 365Конечные точки локальных сеансовoffice_agents/excel, office_agents/powerpoint, office_agents/word или office_agents/outlook (office_agents, если приложение не определено)
Claude in Chrome (встроенный чат расширения браузера), выполняется на компьютере пользователяКонечные точки локальных сеансовclaude_in_chrome
Сеансы Cowork, запущенные в веб-версии или мобильном приложении claude.ai, выполняются в облаке в средах под управлением AnthropicКонечные точки удалённых сеансов (/v1/compliance/apps/sessions/remote)cowork_remote

Захват локальных сеансов зависит от того, включён ли Compliance API для вашей организации, и действует, пока пользователи вошли в систему со своей учётной записью Claude Enterprise. Конечные точки сеансов не возвращают следующее:

  • Сеансы Claude Code, аутентифицированные с помощью ключа API Claude Console или запущенные через стороннюю облачную платформу, такую как Amazon Bedrock, Google Cloud или Microsoft Foundry.
  • Облачные сеансы Claude Code, которые выполняются в облачной инфраструктуре, а не на компьютере пользователя. Эти облачные сеансы не являются удалёнными сеансами, хотя и те и другие выполняются в облаке; конечные точки удалённых сеансов возвращают только сеансы Cowork.
  • Локальные сеансы продуктов, отличных от Cowork и Claude Code, в организациях с включённой готовностью к HIPAA. В таких организациях конечные точки локальных сеансов возвращают только сеансы Cowork и Claude Code, а захваченное содержимое сеансов хранится 30 дней.
  • Локальные сеансы, для которых действует «zero data retention» (нулевое хранение данных), или ZDR. Такие сеансы исключаются из результатов списка, а конечные точки получения сеанса и сообщений возвращают для них 404.

Anthropic рекомендует использовать Compliance API для получения содержимого сеансов. В следующей таблице локальные сеансы и удалённые сеансы сравниваются с альтернативами на основе OpenTelemetry, доступными для Cowork и Claude Code: журналированием OpenTelemetry в Cowork и мониторингом Claude Code.

Локальные сеансы (на компьютерах пользователей)Удалённые сеансы (в облаке)Журналирование OpenTelemetry
ДоставкаPull: запрос и экспорт по HTTPSPull: запрос и экспорт по HTTPSPush: потоковая передача в ваш коллектор OTLP
НастройкаРаботает с вашим существующим Compliance Access KeyРаботает с вашим существующим Compliance Access KeyАдминистратор настраивает конечную точку OTLP и параметры захвата содержимого
ИнфраструктураРазмещается AnthropicРазмещается AnthropicКоллектор и хранилище обслуживаете вы
Префикс IDclls_cse_Н/Д
Значения product_surfacecowork, claude_code, claude_science, claude_in_chrome и значения, начинающиеся с office_agentscowork_remoteН/Д
ХранениеПо умолчанию 6 лет или пользовательский срок хранения разговоров вашей организации, если задан конечный срок; 30 дней в организациях с включённой готовностью к HIPAA; хранится у Anthropic6 лет, если пользователь не удалит сеанс раньше; хранится у AnthropicВаша инфраструктура, ваши политики
Пользовательские подсказки и ответы ассистентаДаДаДа, в зависимости от параметров захвата содержимого
Входные данные инструментовПо умолчанию усекаются до 10 000 байт на каждый вход; по запросу — примерно до 1 МиБПо умолчанию усекаются до 10 000 байт на каждый вход; по запросу — примерно до 1 МиБУсечённые сводки
Содержимое результатов инструментовКаждая текстовая запись по умолчанию усекается до 10 000 байт; по запросу — примерно до 1 МиБКаждая текстовая запись по умолчанию усекается до 10 000 байт; по запросу — примерно до 1 МиБМетаданные, такие как размер и успешность; Claude Code также может захватывать содержимое с помощью необязательного параметра с ограничением размера
Содержимое файловДа, через вызовы инструментов в стенограмме (только текст; прочее содержимое отображается как заполнитель)Да, через вызовы инструментов в стенограмме (только текст; прочее содержимое опускается)Пути к файлам; Claude Code также может захватывать содержимое с помощью необязательного параметра с ограничением размера
Метаданные хоста и устройства (тип терминала, пути рабочей области)НетНетДа
Использование токенов и стоимостьНет; доступно через Claude Enterprise Analytics APIНет; доступно через Claude Enterprise Analytics APIДа

Сеансы на компьютерах пользователей (локальные сеансы)

Локальные сеансы выполняются на компьютерах пользователей, пока они вошли в систему со своей учётной записью Claude Enterprise: на сегодня это Cowork в Claude Desktop, Claude Code (в терминале, в Claude Desktop или в расширении IDE), настольное приложение Claude Science, Claude for Microsoft 365 (в Excel, PowerPoint, Word и Outlook) и расширение браузера Claude in Chrome.

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 (например, локальные файлы, которые сеанс никогда не отправлял), не захватывается.

В организациях, использующих «customer-managed encryption keys» (ключи шифрования, управляемые клиентом), стенограммы локальных сеансов шифруются вашим ключом, управляемым клиентом, и возвращаются как обычно. Пока этот ключ не может быть использован (например, потому что вы отключили или отозвали его, или потому что он недоступен), конечная точка сообщений возвращает 503 Service Unavailable для затронутых страниц вместо содержимого стенограммы. Такие сообщения никогда не помечаются как not_captured (см. Получение стенограммы локального сеанса). Получение списка сеансов и метаданных сеансов это не затрагивает.

Конечная точка списка возвращает метаданные сеансов без содержимого стенограмм для каждой связанной организации, которую может читать ваш ключ. В отличие от списка удалённых сеансов, у неё нет фильтров по организации или пользователю: ограничивайте результаты по времени с помощью параметров created_at.gte и created_at.lt. Оба принимают метки времени в формате RFC 3339 с обязательным смещением UTC, и если указаны оба, created_at.lt должен быть строго позже created_at.gte, иначе запрос возвращает 400 Bad Request. Третий фильтр по времени, updated_at.gte, ограничивает результаты по последней активности, а не по первой: он возвращает сеансы, у которых последний «inference call» (вызов инференса) произошёл в указанное время или позже, и сочетается с фильтрами created_at, не меняя порядок сортировки или пагинацию. Используйте его для опроса сеансов, активных с момента предыдущего прохода, как описано далее в этом разделе. Новые сеансы и сообщения появляются в результатах после небольшой задержки обработки, обычно в течение нескольких минут; сеанс, отсутствующий сразу после запуска, не обязательно остался незахваченным. Следующий запрос возвращает список сеансов, созданных начиная с указанной даты.

cURL
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/sessions/local" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --data-urlencode "created_at.gte=2026-07-01T00:00:00Z" \
  --data-urlencode "limit=100"
Response
{
  "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",
      "updated_at": "2026-07-09T14:02:38Z"
    },
    {
      "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",
      "updated_at": "2026-07-08T09:52:10Z"
    }
  ],
  "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, если сеанс не был связан с рабочей областью. Локальный сеанс соответствует одному идентификатору клиентского сеанса: начало нового разговора в клиенте или очистка его контекста создаёт новую запись сеанса. Для Claude Science список также может включать отдельные сеансы для собственной фоновой работы приложения (например, присвоения названия разговору; в более новых версиях приложения — также его треков проверки и делегирования), а в более старых версиях приложения часть этой фоновой работы отображается как дополнительные сообщения внутри собственной стенограммы разговора. Разговор Claude Science, продолжающийся после некоторых обновлений приложения, отображается как два сеанса. Такое поведение ожидаемо. Рассматривайте значения id как непрозрачные строки; формат может измениться без предупреждения.

Для Claude for Microsoft 365 удаление разговора в надстройке происходит только на клиенте, поэтому оно не отражается в API: у локальных сеансов нет поля deleted_at, и сеанс остаётся в списке, пока его не удалит политика хранения.

Локальные сеансы имеют updated_at, но не имеют status: у локального сеанса нет статуса жизненного цикла на стороне сервера, и его видимость определяется сроком хранения. Локальный сеанс захватывается как серия вызовов Claude API (вызовов инференса), которые клиент выполняет во время сеанса, и срок хранения применяется к каждому захваченному вызову отдельно. created_at — это метка времени самого раннего сохранённого вызова сеанса, а updated_at — метка времени последнего, обе в UTC. По мере того как более старые вызовы выходят за пределы срока хранения, created_at соответственно сдвигается, а когда все вызовы в сеансе выходят за пределы срока хранения, сеанс больше не возвращается; updated_at отслеживает самый последний вызов и до этого момента не меняется. Поскольку created_at может меняться между запусками, выполняйте дедупликацию по id, когда повторно обходите список с течением времени. Чтобы поддерживать стенограммы в актуальном состоянии по мере появления новых сообщений в сеансах, выполняйте опрос с фильтром updated_at.gte, перекрывая последовательные окна. В конечной точке списка updated_at является нижней границей: для сеанса, всё ещё активного на границе страницы или окна created_at.lt, это значение может на мгновение отставать от фактической последней активности сеанса, а новый вызов становится доступным для запроса только после небольшой задержки обработки, упомянутой ранее. Из-за этого отставания устанавливайте updated_at.gte для каждого запуска на несколько минут раньше времени начала предыдущего запуска, а не точно на время предыдущего запуска. Граница, установленная точно на предыдущее время, незаметно и безвозвратно теряет сеанс, последний вызов которого в тот момент ещё индексировался, потому что после того, как граница сдвинется за этот вызов, ни один последующий запуск его не вернёт. Выполняйте дедупликацию возвращённых сеансов по id, повторно получайте их стенограммы и выполняйте дедупликацию сообщений по id. Получение сеанса или его сообщений всегда отражает точный последний сохранённый вызов, поэтому периодический проход сверки по более старому окну является более тщательной альтернативой расширению перекрытия.

Список строится на основе метаданных активности сеансов, поэтому он может включать сеансы, содержимое стенограмм которых не было захвачено, например сеансы, выполнявшиеся до начала захвата для вашей организации (насколько позволяет ваш срок хранения); стенограмма такого сеанса возвращает каждое сообщение с содержимым, помеченным как недоступное (см. Получение стенограммы локального сеанса).

Захваченное содержимое локальных сеансов по умолчанию хранится 6 лет с момента захвата. Если организация, в которой выполнялся сеанс, задала конечный пользовательский срок хранения разговоров в claude.ai > Organization settings > Data and privacy, вместо этого применяется этот срок, независимо от того, короче он или длиннее срока по умолчанию; если в организации настроено более одного пользовательского срока хранения, применяется самый короткий. Изменение этой настройки вступает в силу двумя разными способами: конечные точки перестают возвращать активность старше текущего срока организации сразу после изменения настройки, тогда как каждое захваченное сообщение хранится в течение срока, действовавшего на момент его захвата, поэтому последующее увеличение срока не восстанавливает содержимое, срок хранения которого уже истёк. В организациях с включённой готовностью к HIPAA захваченное содержимое локальных сеансов хранится 30 дней с момента захвата или в течение пользовательского срока хранения разговоров организации, если он короче; срок по умолчанию в 6 лет не применяется.

Чтобы получить метаданные одного сеанса напрямую, передайте его ID в GET /v1/compliance/apps/sessions/local/{session_id}. Ответ — это тот же объект сеанса, который возвращает конечная точка списка, без обёртки и без содержимого стенограммы. Неправильно сформированный ID сеанса возвращает 400 Bad Request. Единый ответ 404 Not Found охватывает четыре случая, которые ответ не различает: сеанс не находится в организации, которую может читать ваш ключ (включая сеансы в другой родительской организации), он не существует, для него действует нулевое хранение данных, или все вызовы в нём вышли за пределы срока хранения.

product_surface (строка или null) идентифицирует продукт, создавший сеанс: cowork (Cowork в Claude Desktop на компьютере пользователя), claude_code (Claude Code), claude_science (Claude Science), claude_in_chrome (встроенный чат расширения браузера Claude in Chrome) или одно из значений office_agents/excel, office_agents/powerpoint, office_agents/word и office_agents/outlook (Claude for Microsoft 365, по приложению; просто office_agents, если приложение не определено). Новые значения появляются по мере расширения охвата.

Получение стенограммы локального сеанса

Конечная точка сообщений возвращает стенограмму сеанса, восстановленную из захваченных вызовов Claude API: пользовательские подсказки, текст ассистента, вызовы инструментов и текстовые части результатов инструментов — всё возвращается в том виде, в котором было отправлено, за исключением усечения по размеру. В этом содержимом ничто не маскирует URL-адреса, учётные данные или персональные данные, поэтому обращайтесь со стенограммами как с конфиденциальной информацией. Стенограмма опускает или заменяет следующее:

  • Блоки размышлений никогда не включаются.
  • «System prompt» (системная подсказка) запроса никогда не возвращается. Вместо неё используется сообщение-маркер с текстом [system prompt content not shown] (обычно один раз за сеанс; сеанс без захваченного содержимого не содержит маркера).
  • Определения инструментов и конфигурация серверов MCP не входят в стенограмму.
  • Изображения, PDF-файлы и другие двоичные или структурированные блоки не возвращаются. Каждый из них отображается как блок text с текстом [<block type> content not shown] (например, [image content not shown]), у которого truncated имеет значение true. Нетекстовые элементы внутри результата инструмента, такие как результаты веб-поиска или вывод инструмента выполнения кода, заменяются одной записью [N non-text item(s) not shown], а truncated блока результата инструмента имеет значение true. Соответствующий вызов инструмента с поисковым запросом или кодом в его input по-прежнему возвращается.
  • Метаданные цитирования в блоках text, например ссылки на источники в ответе, основанном на результатах веб-поиска, опускаются. Сам текст возвращается, а у блока truncated имеет значение true.

Файлы инструкций проекта, такие как CLAUDE.md, отображаются как обычное содержимое с ролью пользователя. Содержимое навыков отображается, когда клиент отправляет его как содержимое сообщения, и не отличается от другого пользовательского текста. Сводку по охвату данных см. в FAQ по Compliance API; таблицу сравнения локальных сеансов с удалёнными сеансами и журналированием OpenTelemetry см. во введении к этой странице.

cURL
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" \
  --header "anthropic-version: 2023-06-01"
Response
{
  "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",
    "updated_at": "2026-07-09T14:02:38Z"
  },
  "data": [
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBa",
      "role": "user",
      "model": null,
      "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",
      "model": null,
      "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",
      "model": "claude-opus-5-5",
      "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",
      "model": null,
      "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",
      "model": "claude-opus-5-5",
      "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. Оно также содержит model: для хода ассистента, захваченного из Claude API, это модель, которая обслужила ход, а для пользовательских сообщений и любого сообщения ассистента с заданным provenance это значение равно null, поскольку история, заявленная клиентом, и синтетические маркеры не были созданы моделью, а обслуживающая модель для недоступного содержимого неизвестна. Блок 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 означает, что для хода нет доступного содержимого. Это не доказывает, что запись не сохранялась: содержимое, которое политики обработки данных Anthropic не передают в Compliance API, сообщается с той же причиной, как и отдельные ходы в остальном захваченном сеансе, недоступные по таким причинам. Единственное исключение — непригодный для использования ключ, управляемый клиентом: в этом случае вместо этого возвращается 503 Service Unavailable. client_aborted означает, что клиент закрыл соединение или отменил запрос до завершения ответа, поэтому ответ хода не был захвачен; любой частичный вывод, уже переданный клиенту в режиме потоковой передачи, не включается, и эта причина применяется только к ходам с ролью ассистента. cmek_key_revoked зарезервировано для содержимого, зашифрованного ключом вашей организации, управляемым клиентом, когда этот ключ недоступен (например, отозван). В настоящее время это значение не возвращается, поскольку непригодный ключ приводит к ответу 503, но обрабатывайте его для прямой совместимости. 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.

Claude Science вызывает коннекторы (серверы MCP) из кода, который выполняет через свой инструмент repl, а не как отдельно именованные инструменты, поэтому ни один блок в стенограмме Claude Science не назван по имени коннектора. Каждый вызов коннектора отображается в коде внутри input блока tool_use инструмента repl (например, вызов host.mcp("<server>", "<tool>", ...)), а вывод коннектора отображается в соответствующем tool_result только там, где этот код его вывел. Сеансы Cowork и Claude Code устроены иначе: они вызывают каждый инструмент коннектора под его собственным именем mcp__<server>__<tool>, которое является name блока tool_use. Чтобы отслеживать использование коннекторов в сеансах Claude Science, разбирайте строку input и выполняйте сопоставление по содержащемуся в ней коду, а не по имени инструмента. Передавайте tool_use_input_max_bytes=-1 для таких сеансов, чтобы длинный входной код возвращался вплоть до серверного максимума, а не обрезался на значении по умолчанию в 10 000 байт до того, как появится вызов коннектора.

Содержимое стенограммы подчиняется сроку хранения, описанному в разделе Сеансы на компьютерах пользователей. Когда начало сеанса выходит за пределы этого срока, стенограмма начинается с одного заполнителя content_unavailable с reason, равным retention_elapsed, за которым следуют сохранённые сообщения. Когда все вызовы в сеансе выходят за пределы срока хранения, конечная точка сообщений возвращает 404 Not Found — так же, как для сеансов в организациях, которые ваш ключ не может читать, для несуществующих сеансов и для сеансов, для которых действует нулевое хранение данных. Некорректный ID сеанса возвращает 400 Bad Request.

Сеансы в облаке (удалённые сеансы)

Сеансы Cowork, запущенные в веб-версии или мобильном приложении claude.ai, выполняются в облаке, в средах под управлением Anthropic. Compliance API предоставляет доступ к этим удалённым сеансам через две конечные точки. GET /v1/compliance/apps/sessions/remote возвращает список метаданных сеансов, а GET /v1/compliance/apps/sessions/remote/{session_id}/messages возвращает «transcript» (стенограмму) одного сеанса. Обеим конечным точкам требуется «scope» (область доступа) read:compliance_user_data. Запросы к ним учитываются в общем «rate limit» (ограничении скорости) 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
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --data-urlencode "created_at.gte=2026-06-01T00:00:00Z" \
  --data-urlencode "limit=100"
Response
{
  "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). Конечная точка поддерживает «pagination» (постраничную выдачу) с помощью токенов page и next_page (см. Постраничная выдача результатов). Передайте значение next_page из ответа в параметре запроса page следующего запроса и остановитесь, когда next_page станет равным null.

Сеанс принадлежит либо пользователю, либо агенту, но никогда обоим сразу. У сеансов, принадлежащих пользователю, поле user содержит идентификатор и адрес электронной почты владельца, а agent_id равно null. Поле email_address равно 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. У такого сеанса ещё нет стенограммы, и до завершения подготовки конечная точка сообщений возвращает для него 404. Удалённые (deleted) сеансы никогда не возвращаются.

product_surface (строка или null) указывает продукт, создавший сеанс. Сейчас конечная точка возвращает только сеансы со значением product_surface, равным cowork_remote, то есть сеансы Cowork, запущенные в веб-версии или мобильном приложении claude.ai.

Получение стенограммы удалённого сеанса

Конечная точка сообщений возвращает стенограмму сеанса: подсказки пользователя, ответы ассистента, а также вызовы инструментов и их результаты. Блоки размышлений и изображения не включаются. Сводку о том, какие данные охватываются, см. в разделе Часто задаваемые вопросы о Compliance API. Таблица, сравнивающая удалённые сеансы с локальными сеансами и журналированием OpenTelemetry в Cowork, приведена во введении к этой странице.

cURL
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" \
  --header "anthropic-version: 2023-06-01"
Response
{
  "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
}

Помимо постраничного массива data, ответ содержит вложенный объект session. В этой конечной точке поля 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 лет. Если в вашей организации задан конечный пользовательский срок хранения разговоров, применяется он; в организациях с включённой готовностью к HIPAA стенограммы хранятся 30 дней, как описано в разделе Сеансы на компьютерах пользователей. Стенограммы удалённых сеансов хранятся 6 лет, если пользователь не удалит сеанс раньше. После удаления сеанса пользователем конечные точки удалённых сеансов больше его не возвращают, а его стенограмму нельзя восстановить через Compliance API. О том, как эти сроки соотносятся с другими условиями хранения данных Anthropic, см. в разделе API и хранение данных.

Дальнейшие шаги

Получайте доступ к содержимому чатов claude.ai, вложенным файлам и проектам с помощью того же Compliance Access Key.

Сводка по полям о том, что входит в стенограммы сеансов, и ответы на другие распространённые вопросы.

Точные тексты ответов с ошибками и способы устранения каждой из них.

Пути конечных точек, параметры и схемы ответов Compliance API.

Was this page helpful?