Claude Platform Docs

Получение транскриптов сессий

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

Конечные точки на этой странице предоставляют специалистам по комплаенсу транскрипты (transcripts) сессий, которые ваши пользователи запускают в приложениях и агентах Claude (на сегодня: Cowork, Claude Code, Claude Science и Claude for Microsoft 365) в ваших организациях Claude Enterprise. Каждая сессия — это один разговор с Claude; её транскрипт — это последовательность подсказок пользователя, ответов ассистента, а также вызовов инструментов и их результатов в этом разговоре. Конечные точки поддерживают экспорт для «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, если приложение не определено)
Сессии 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 в веб-версии. Он также выполняется в облаке в средах, управляемых Anthropic, но не является удалённой сессией; конечные точки удалённых сессий возвращают только сессии Cowork.
  • Локальные сессии в организациях с включённой готовностью к HIPAA. Данные локальных сессий не захватываются, поэтому конечные точки локальных сессий не возвращают сессий для таких организаций.
  • Локальные сессии, для которых действует нулевое хранение данных (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 и значения, начинающиеся с office_agentscowork_remoteН/Д
Хранение6 лет по умолчанию или пользовательский период хранения разговоров вашей организации, если задан конечный период; хранится у 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.

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

В организациях, использующих ключи шифрования, управляемые клиентом, транскрипты локальных сессий шифруются вашим ключом и возвращаются как обычно. Пока ваш ключ не может быть использован (например, потому что вы его отключили или отозвали, или потому что он недоступен), конечная точка сообщений возвращает 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, ограничивает по последней активности, а не по первой: он возвращает сессии, чей последний вызов инференса произошёл в указанное время или позже, и сочетается с фильтрами 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" \
  --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, вместо этого применяется этот период, независимо от того, короче он или длиннее периода по умолчанию; если в организации настроено более одного пользовательского периода хранения, применяется самый короткий. Изменение этой настройки вступает в силу двумя разными способами: конечные точки перестают возвращать активность старше текущего периода организации сразу после изменения настройки, тогда как каждое захваченное сообщение хранится в течение периода, действовавшего на момент его захвата, поэтому последующее увеличение периода не восстанавливает содержимое, срок хранения которого уже истёк.

Чтобы напрямую получить метаданные одной сессии, передайте её 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) или одно из значений 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, отображаются как обычное содержимое с ролью пользователя. Содержимое навыков (skills) отображается, когда клиент отправляет его как содержимое сообщения, и не отличается от прочего пользовательского текста. Сводку по покрытию см. в 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"
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",
      "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",
      "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, это модель, обслужившая ход, и оно равно null для сообщений пользователя и для любого сообщения ассистента, у которого задан provenance, поскольку заявленная клиентом история и синтетические маркеры не были созданы моделью, а обслуживающая модель неизвестна для недоступного содержимого. Блок 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.

Содержимое транскрипта соблюдает период хранения, описанный в разделе Сессии на компьютерах пользователей. Когда начало сессии вышло за его пределы, транскрипт начинается с одного заполнителя 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 возвращает транскрипт одной сессии. Обе требуют области доступа 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
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"
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). Конечная точка поддерживает пагинацию с помощью токенов page и next_page (см. Пагинация результатов): передавайте значение next_page из ответа обратно как параметр запроса page в следующем запросе и останавливайтесь, когда next_page равен null.

Сессия принадлежит либо пользователю, либо агенту, но никогда обоим. Для сессий, принадлежащих пользователю, user содержит ID и адрес электронной почты владельца (email_address равен null, когда пользователь больше не является членом организации, которую может читать ваш ключ), а agent_id равен null. Для сессий, принадлежащих агенту (например, запланированных задач), user равен null, agent_id содержит ID агента (префикс cagt_), а started_by_user идентифицирует человека, инициировавшего запуск, например запустившего запланированную задачу; для сессий, принадлежащих пользователю, started_by_user равен null.

claude_project_id — это 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.

Получение транскрипта удалённой сессии

Конечная точка сообщений возвращает транскрипт сессии: подсказки пользователя, ответы ассистента, а также вызовы инструментов и их результаты. Блоки мышления и изображения не включаются. Сводку по покрытию см. в FAQ по 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"
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
}

Ответ содержит обёртку 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.

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

Дословные полезные нагрузки ошибок и способ исправления каждой из них.

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

Was this page helpful?