Claude Platform Docs
管理Compliance API

セッショントランスクリプトの取得

Claude CoworkやClaude Codeなど、ユーザーがClaudeのアプリやエージェントで実行するセッションを一覧表示し、Compliance APIを通じてそのトランスクリプトを取得します。

このページのエンドポイントは、Claude Enterprise組織のユーザーがClaudeのアプリやエージェント(現時点ではCowork、Claude Code、Claude Science、Claude for Microsoft 365、Claude in Chrome)で実行するセッションの「transcript」(トランスクリプト)を、コンプライアンスレビュー担当者に公開します。各セッションはClaudeとの1つの会話であり、そのトランスクリプトは、その会話におけるユーザープロンプト、アシスタントの応答、ツール呼び出しとその結果の一連の流れです。これらのエンドポイントは、「electronic discovery」(電子情報開示)、すなわちeDiscoveryのエクスポートと、「data loss prevention」(データ損失防止)、すなわちDLPの適用をサポートします。

Compliance APIは、セッションが実行される場所に応じて、セッションを2つのエンドポイントファミリーに分類します。ユーザーのマシン上のセッション向けのローカルセッションエンドポイントと、Anthropicが管理する環境でクラウド上で実行されるセッション向けのリモートセッションエンドポイントです。どちらのファミリーも読み取り専用で、どちらもAdmin APIキー(sk-ant-admin01-...)では利用できません。Admin APIキーで認証された呼び出しは403 Forbiddenを返します。

次の表は、各製品とその実行場所を、そのセッションを返すエンドポイントファミリー、およびレスポンス内でそれらを識別するproduct_surface値に対応付けたものです。対応範囲の拡大に伴い、この表に製品が追加されます。

製品と実行場所エンドポイントファミリーproduct_surface
Claude DesktopのCowork(ユーザーのマシン上で実行)ローカルセッションエンドポイント(/v1/compliance/apps/sessions/local)cowork
ターミナル、Claude Desktop、またはIDE拡張機能内のClaude Code(ユーザーのマシン上で実行)ローカルセッションエンドポイントclaude_code
Claude Scienceデスクトップアプリ(ユーザーのマシン上で実行)ローカルセッションエンドポイントclaude_science
Claude for Microsoft 365(Excel、PowerPoint、Word、Outlook向けのClaudeアドイン。Microsoft 365のデスクトップアプリまたはWebアプリで実行)ローカルセッションエンドポイントoffice_agents/excel、office_agents/powerpoint、office_agents/word、またはoffice_agents/outlook(アプリが識別されない場合はoffice_agents)
Claude in Chrome(ブラウザ拡張機能の組み込みチャット。ユーザーのマシン上で実行)ローカルセッションエンドポイントclaude_in_chrome
claude.aiのWebまたはモバイルで開始されたCoworkセッション(Anthropicが管理する環境でクラウド上で実行)リモートセッションエンドポイント(/v1/compliance/apps/sessions/remote)cowork_remote

ローカルセッションのキャプチャは、組織でCompliance APIが有効になっていることに紐づいており、ユーザーがClaude Enterpriseアカウントでサインインしている間に適用されます。セッションエンドポイントは以下を返しません。

  • Claude Console APIキーで認証されたClaude Codeセッション、またはAmazon Bedrock、Google Cloud、Microsoft Foundryなどのサードパーティクラウドプラットフォーム経由で実行されたClaude Codeセッション。
  • Claude Codeクラウドセッション。これはユーザーのマシンではなくクラウドインフラストラクチャ上で実行されます。どちらもクラウドで実行されますが、これらのクラウドセッションはリモートセッションではありません。リモートセッションエンドポイントはCoworkセッションのみを返します。
  • HIPAA対応が有効になっている組織におけるCoworkおよびClaude Code以外の製品のローカルセッション。そのような組織では、ローカルセッションエンドポイントはCoworkとClaude Codeのセッションのみを返し、キャプチャされたセッションコンテンツは30日間保存されます。
  • 「zero data retention」(ゼロデータ保持)、すなわちZDRが適用されているローカルセッション。これらのセッションは一覧結果から除外され、取得エンドポイントとメッセージエンドポイントはこれらに対して404を返します。

Anthropicは、セッションコンテンツの取得にCompliance APIを推奨しています。次の表は、ローカルセッションおよびリモートセッションを、CoworkとClaude Codeで利用可能なOpenTelemetryベースの代替手段であるCoworkのOpenTelemetryロギングおよびClaude Codeのモニタリングと比較したものです。

ローカルセッション(ユーザーのマシン上)リモートセッション(クラウド上)OpenTelemetryロギング
配信方式プル:HTTPS経由でクエリおよびエクスポートプル:HTTPS経由でクエリおよびエクスポートプッシュ:OTLPコレクターにストリーミング
セットアップ既存のCompliance Access Keyで動作既存のCompliance Access Keyで動作管理者がOTLPエンドポイントとコンテンツキャプチャ設定を構成
インフラストラクチャAnthropicがホストAnthropicがホストコレクターとストレージをお客様が運用
IDプレフィックスclls_cse_該当なし
product_surface値cowork、claude_code、claude_science、claude_in_chrome、およびoffice_agentsで始まる値cowork_remote該当なし
保持期間デフォルトで6年、または有限のカスタム会話保持期間が設定されている場合は組織のその期間(HIPAA対応が有効な組織では30日)。Anthropicが保持6年(ユーザーがそれより前にセッションを削除しない限り)。Anthropicが保持お客様のインフラストラクチャ、お客様のポリシー
ユーザープロンプトとアシスタントの応答はいはいはい(コンテンツキャプチャ設定に依存)
ツール入力デフォルトでは入力ごとに10,000バイトに切り詰め。リクエストに応じて最大約1 MiBデフォルトでは入力ごとに10,000バイトに切り詰め。リクエストに応じて最大約1 MiB切り詰められた要約
ツール結果のコンテンツデフォルトでは各テキストエントリを10,000バイトに切り詰め。リクエストに応じて最大約1 MiBデフォルトでは各テキストエントリを10,000バイトに切り詰め。リクエストに応じて最大約1 MiBサイズや成否などのメタデータ。Claude Codeでは、サイズ上限付きのオプション設定でコンテンツもキャプチャ可能
ファイルの内容はい、トランスクリプトのツール呼び出しを通じて(テキストのみ。その他のコンテンツはプレースホルダーとして表示)はい、トランスクリプトのツール呼び出しを通じて(テキストのみ。その他のコンテンツは省略)ファイルパス。Claude Codeでは、サイズ上限付きのオプション設定で内容もキャプチャ可能
ホストおよびデバイスのメタデータ(ターミナルの種類、ワークスペースのパス)いいえいいえはい
トークン使用量とコストいいえ。Claude Enterprise Analytics APIで利用可能いいえ。Claude Enterprise Analytics APIで利用可能はい

ユーザーのマシン上のセッション(ローカルセッション)

ローカルセッションは、ユーザーがClaude Enterpriseアカウントでサインインしている間、ユーザーのマシン上で実行されます。現時点では、Claude DesktopのCowork、Claude Code(ターミナル、Claude Desktop、またはIDE拡張機能内)、Claude Scienceデスクトップアプリ、Claude for Microsoft 365(Excel、PowerPoint、Word、Outlook内)、およびClaude in Chromeブラウザ拡張機能が該当します。

Compliance APIは、3つのエンドポイントを通じてローカルセッションを公開します。GET /v1/compliance/apps/sessions/localはセッションメタデータを一覧表示し、GET /v1/compliance/apps/sessions/local/{session_id}は1つのセッションのメタデータを取得し、GET /v1/compliance/apps/sessions/local/{session_id}/messagesは1つのセッションのトランスクリプトを返します。3つすべてにread:compliance_user_dataスコープが必要で、共有のCompliance APIの「rate limit」(レート制限)に対してのみカウントされます。リモートセッションエンドポイントに適用される2つ目のリクエスト予算の対象にはなりません。429 Too Many Requestsを参照してください。親組織でローカルセッションが利用できない場合、3つのエンドポイントはすべてLocal sessions are not available.というメッセージとともに404を返します(ローカルセッションが見つからないを参照)。セッション一覧またはキャプチャされたコンテンツが一時的に利用できない間は、503を返します(ローカルセッションが一時的に利用できないを参照)。

ローカルセッションの場合、Anthropicは各会話を、そのリクエストがClaude APIに到達した時点でサーバー側で記録します。デバイスには何もインストールされず、クライアントがすでにClaude APIに送信しているリクエスト以外は何も収集されません。ローカルセッションのトランスクリプトは、Claudeが何を依頼され、何を返したかを示すものであり、デバイス上で何が起きたかを示すものではありません。ファイルやネットワークのアクティビティは、トランスクリプト内のツール呼び出しとツール結果を通じてのみ確認できるため、APIに到達しないアクティビティ(たとえば、セッションが一度も送信しなかったローカルファイル)はキャプチャされません。

「customer-managed encryption keys」(カスタマー管理の暗号化キー)を使用する組織では、ローカルセッションのトランスクリプトはカスタマー管理キーで暗号化され、通常どおり返されます。そのキーが使用できない間(たとえば、キーを無効化または取り消した場合や、キーに到達できない場合)、メッセージエンドポイントは影響を受けるページについて、トランスクリプトのコンテンツの代わりに503 Service Unavailableを返します。これらのメッセージがnot_capturedとして報告されることはありません(ローカルセッションのトランスクリプトを取得するを参照)。セッションの一覧表示とセッションメタデータの取得は影響を受けません。

一覧エンドポイントは、キーで読み取り可能なすべてのリンクされた組織について、トランスクリプトのコンテンツを含まないセッションメタデータを返します。リモートセッション一覧とは異なり、組織やユーザーのフィルターはありません。created_at.gteおよびcreated_at.ltパラメーターで結果を時間的に絞り込んでください。どちらもUTCオフセットが必須のRFC 3339タイムスタンプを受け取り、両方を指定する場合、created_at.ltはcreated_at.gteより厳密に後である必要があります。そうでない場合、リクエストは400 Bad Requestを返します。3つ目の時間フィルターである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" \
  --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の逆時系列順(新しい順)で並べ替えられ、同値の場合はサーバー側の固定順序で決まり、1レスポンスあたりlimit件(デフォルト100、最大500)に制限されます。このエンドポイントはpageおよびnext_pageトークンを使用した前方向のみのページネーションを行います(結果のページネーションを参照)。レスポンスのnext_page値を次のリクエストのpageクエリパラメーターとして渡し、next_pageがnullになったら停止します。レスポンスにhas_moreフィールドはありません。一覧の走査は開始から24時間以内に完了してください。それより古い一覧カーソルも引き続き受け付けられますが、現在の保持期間の境界に対して再評価されるため、保持されている最も古いアクティビティが保持期間を過ぎようとしているセッションがスキップされる可能性があります。

各セッションオブジェクトでは、user.idは常に設定されており、アカウントが削除されても保持されます。user.email_addressは、ユーザーのアカウントが削除された場合、またはユーザーがキーで読み取り可能な組織のメンバーでなくなった場合にnullになります。workspace_idは、セッションがワークスペースに関連付けられていない場合にnullになります。ローカルセッションは1つのクライアントセッションIDに対応します。クライアントで新しい会話を開始するか、そのコンテキストをクリアすると、新しいセッションレコードが開始されます。Claude Scienceの場合、一覧にはアプリ自体のバックグラウンド処理(たとえば会話の命名。新しいバージョンのアプリではレビュアーや委任のトラックも)の個別のセッションが含まれることもあり、古いバージョンのアプリでは、そのバックグラウンド処理の一部が会話自体のトランスクリプト内に追加のメッセージとして表示されます。一部のアプリ更新をまたいで継続するClaude Scienceの会話は、2つのセッションとして表示されます。これらの動作は想定どおりです。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 > 組織設定 > データとプライバシーで有限のカスタム会話保持期間を設定している場合は、デフォルトより短いか長いかにかかわらず、その期間が代わりに適用されます。組織に複数のカスタム保持期間が構成されている場合は、最も短い期間が適用されます。この設定の変更は2つの異なる形で反映されます。エンドポイントは設定が変更されるとすぐに組織の現在の期間より古いアクティビティを返さなくなる一方、キャプチャされた各メッセージはキャプチャ時に有効だった期間だけ保存されるため、後から期間を延長しても、すでに期限切れになったコンテンツは復元されません。HIPAA対応が有効な組織では、キャプチャされたローカルセッションのコンテンツはキャプチャから30日間、または組織のカスタム会話保持期間がそれより短い場合はその期間だけ保存されます。6年のデフォルトは適用されません。

1つのセッションのメタデータを直接取得するには、そのIDをGET /v1/compliance/apps/sessions/local/{session_id}に渡します。レスポンスは一覧エンドポイントが返すものと同じセッションオブジェクトで、エンベロープやトランスクリプトのコンテンツは含まれません。不正な形式のセッションIDは400 Bad Requestを返します。単一の404 Not Foundは、レスポンスでは区別されない4つのケースをカバーします。セッションがキーで読み取り可能な組織に属していない場合(別の親組織配下のセッションを含む)、セッションが存在しない場合、セッションにゼロデータ保持が適用されている場合、またはセッション内のすべての呼び出しが保持期間を過ぎている場合です。

product_surface(文字列またはnull)は、セッションを作成した製品を示します。cowork(ユーザーのマシン上のClaude DesktopのCowork)、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]というマーカーメッセージが表示されます(通常はセッションごとに1回。キャプチャされたコンテンツがないセッションにはマーカーはありません)。
  • ツール定義とMCPサーバーの構成はトランスクリプトに含まれません。
  • 画像、PDF、その他のバイナリまたは構造化ブロックは返されません。それぞれ[<block type> content not shown](たとえば[image content not shown])というtextブロックとして表示され、truncatedはtrueに設定されます。ツール結果内のテキスト以外の項目(ウェブ検索の結果やコード実行ツールの出力など)は、1つの[N non-text item(s) not shown]エントリに置き換えられ、ツール結果ブロックのtruncatedはtrueになります。対応するツール呼び出しは、input内の検索クエリやコードとともに引き続き返されます。
  • textブロックの引用メタデータ(ウェブ検索結果を利用した回答のソース引用など)は省略されます。テキスト自体は返され、ブロックにはtruncatedがtrueに設定されます。

CLAUDE.mdなどのプロジェクト指示ファイルは、通常のユーザーロールのコンテンツとして表示されます。スキルのコンテンツは、クライアントがメッセージコンテンツとして送信した場合に表示され、他のユーザーテキストと区別されません。対応範囲の概要についてはCompliance API FAQを、ローカルセッションをリモートセッションおよび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
}

レスポンスには、ページネーションされたdata配列とともにsessionエンベロープが埋め込まれています。この例の最初のレコードは、リクエストのシステムプロンプトの代わりとなるマーカーです。その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時間後に期限切れになります。期限切れのカーソルは、pageパラメーターなしで再開するよう指示する400 Bad Requestを返し、再開した走査には現在の保持期間の境界が反映されます。別のセッションまたはorderに対して発行されたカーソルも、無効なカーソルとして400を返します。

各メッセージにはrole(userまたはassistant)と、text、tool_use、tool_resultブロックからなるcontent配列が含まれます。またmodelも含まれます。Claude APIからキャプチャされたアシスタントのターンでは、これはそのターンを処理したモデルです。ユーザーメッセージ、およびprovenanceが設定されているアシスタントメッセージではnullになります。クライアントが主張した履歴や合成マーカーはモデルによって生成されたものではなく、利用できないコンテンツについては処理したモデルが不明なためです。textブロックにはtextとtruncatedが含まれます。tool_useブロックにはid、name、input、truncatedが含まれ、inputはオブジェクトではなくJSONエンコードされた文字列です。tool_resultブロックにはtool_use_id、name、is_error、textエントリのcontent配列、およびtruncatedが含まれます。MCPのツール呼び出しと結果、およびほとんどのサーバーツールの呼び出しと結果は、これらと同じtool_useおよびtool_resultの形式に正規化されます。その他のブロックタイプは[<block type> content not shown]プレースホルダーとして表示されます。メッセージのidは、ターンが保持されている間は安定しています。同じ推論呼び出しから再構築されたすべてのメッセージにはその呼び出しのタイムスタンプが付与されるため、連続するメッセージが同じcreated_at値を共有することがよくあります。タイムスタンプで並べ替え直すのではなく、返された順序を維持してください。

各メッセージには、そのコンテンツがどのようにキャプチャされたかを示すprovenanceフィールドも含まれます。provenanceは、Claude APIによってキャプチャされた検証済みのコンテンツの場合はnullで、これが一般的なケースです。それ以外の場合は、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は、システムプロンプトの代わりとなるマーカーなど、エンドポイント自体によって生成されたレコードを示します。クライアントがセッションの途中で会話履歴を書き換えたり圧縮したりした場合(たとえばコンテキストのコンパクション後)、トランスクリプトはその時点にマーカーメッセージを挿入し、クライアントが送信した新しいコンテンツで続行します。組織に有限の保持期間があり、その新しいコンテンツにアシスタントメッセージが含まれる場合、トランスクリプトは新しいコンテンツのうち最後のアシスタントメッセージまで(そのメッセージを含む)を非表示にし(2つ目のマーカーがこれを示します)、その時点以降のユーザーメッセージのみを表示し、その後にセッションの残りが続きます。

マーカーメッセージとクライアントが主張したメッセージは、truncated: trueのフラグが付いた角括弧付きの説明用textブロック(たとえば[system prompt content not shown])で始まります。これらのレコードは、欠落しているのではなく、存在するが利用できない、または検証されていないものとして扱い、認識できないprovenanceのタイプや理由も許容してください。

2つのパラメーターで、各ツールブロックで返されるバイト数の上限を設定します。tool_use_input_max_bytesとtool_result_max_bytesで、どちらもデフォルトは10,000バイトです。サーバーの最大値(文字列あたり約1 MiB)を使用するには-1を渡します。0は400 Bad Requestを返し、最大値を超える値は最大値に制限されます。いずれかの上限によって切り詰められた文字列は文字の境界で切られ、インバンドのサフィックス(たとえば…[truncated; pass tool_result_max_bytes=-1 for the server max])が付加され、そのブロックには"truncated": trueが設定されます。したがって、切り詰められたtool_useのinputは有効なJSONではなくなるため、ツール入力は切り詰められていないブロックからのみ解析してください(または上限を引き上げて再取得してください)。textタイプのブロックは、常に同じサーバー最大値である約1 MiBに制限されます。これを引き上げるパラメーターはなく、上限に達したtextブロックにも"truncated": trueが設定されます。

Claude Scienceは、コネクター(MCPサーバー)を個別に名前の付いたツールとしてではなく、replツールを通じて実行するコードから呼び出すため、Claude Scienceのトランスクリプト内にコネクターの名前が付いたブロックはありません。各コネクター呼び出しは、replのtool_useブロックのinput内のコード(たとえばhost.mcp("<server>", "<tool>", ...)呼び出し)に表示され、コネクターの出力は、そのコードが出力した場合にのみ対応するtool_resultに表示されます。Claude Scienceとは異なり、CoworkとClaude Codeのセッションは、各コネクターツールをそれぞれのmcp__<server>__<tool>という名前で呼び出し、これがtool_useブロックのnameになります。Claude Scienceセッションでコネクターの使用を監視するには、ツール名ではなく、input文字列を解析してそこに含まれるコードで照合してください。これらのセッションではtool_use_input_max_bytes=-1を渡し、長いコード入力が、コネクター呼び出しの部分に達する前に10,000バイトのデフォルト上限で切り詰められることなく、サーバーの最大値まで返されるようにしてください。

トランスクリプトのコンテンツは、ユーザーのマシン上のセッションで説明した保持期間に従います。セッションの開始部分が保持期間を過ぎている場合、トランスクリプトはreasonがretention_elapsedである単一のcontent_unavailableプレースホルダーで始まり、その後に保持されているメッセージが続きます。セッション内のすべての呼び出しが期限切れになった場合、メッセージエンドポイントは404 Not Foundを返します。これは、キーで読み取れない組織のセッション、存在しないセッション、ゼロデータ保持が適用されているセッションの場合と同様です。不正な形式のセッションIDは400 Bad Requestを返します。

クラウド上のセッション(リモートセッション)

claude.aiのWebまたはモバイルで開始されたCoworkセッションは、Anthropicが管理する環境でクラウド上で実行されます。Compliance APIは、これらの「remote session」(リモートセッション)を2つのエンドポイントで公開しています。GET /v1/compliance/apps/sessions/remoteはセッションのメタデータを一覧表示し、GET /v1/compliance/apps/sessions/remote/{session_id}/messagesは1つのセッションのトランスクリプトを返します。どちらのエンドポイントにもread:compliance_user_dataスコープが必要です。また、どちらのリクエストも、Compliance API共通の「rate limit」(レート制限)に加えて、これらのエンドポイント固有のリクエスト予算にもカウントされます。詳細は429 Too Many Requestsを参照してください。

一覧エンドポイントのデフォルトのスコープは組織全体です。organization_ids[]を省略すると、キーで読み取り可能なすべてのclaude.ai組織が対象になります。スコープを絞り込むには、最大500個の値を渡します。特定のユーザーにスコープを限定する場合は、代わりに1~10個のuser_ids[]値を渡します(IDは組織ユーザーの一覧表示から取得します)。このフィルターはセッションを所有するユーザーと照合されます。そのため、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の逆時系列順(新しい順)に並べ替えられ、1回のレスポンスで返される件数は最大limit件(デフォルト100、最大500)です。このエンドポイントは、pageトークンとnext_pageトークンを使用して「pagination」(ページネーション)を行います(結果のページネーションを参照)。レスポンスのnext_page値を次のリクエストのpageクエリパラメーターとして渡し、next_pageがnullになったら停止します。

セッションの所有者はユーザーまたはエージェントのいずれか一方であり、両方が所有することはありません。ユーザーが所有するセッションでは、userに所有者のIDとメールアドレスが含まれ、agent_idはnullです(ユーザーが、キーで読み取り可能な組織のメンバーでなくなった場合、email_addressはnullになります)。エージェントが所有するセッション(スケジュールされたタスクなど)では、userはnullで、agent_idにエージェントのID(プレフィックスcagt_)が含まれます。また、started_by_userは、スケジュールされたタスクを開始するなどして実行を開始した人間を示します。ユーザーが所有するセッションでは、started_by_userはnullです。

claude_project_idは、セッションが属するclaude.aiプロジェクトのID(プレフィックスclaude_proj_)です。セッションがプロジェクトに属していない場合はnullになります。

statusは、pending、active、paused、archived、failedのいずれかです。プロビジョニング中のセッションはpendingになります。pendingのセッションにはまだトランスクリプトがないため、プロビジョニングが完了するまで、messagesエンドポイントはそのセッションに対して404を返します。削除されたセッションが返されることはありません。

product_surface(文字列またはnull)は、セッションを作成したプロダクトを示します。現在、このエンドポイントが返すのは、product_surfaceがcowork_remoteのセッション、つまりclaude.aiのWebまたはモバイルで開始されたCoworkセッションのみです。

リモートセッションのトランスクリプトを取得する

messagesエンドポイントは、セッションのトランスクリプトを返します。トランスクリプトには、ユーザーのプロンプト、アシスタントの応答、ツール呼び出しとその結果が含まれます。思考ブロックと画像は含まれません。対象データの概要については、Compliance API FAQを参照してください。リモートセッションを、ローカルセッションやCoworkのOpenTelemetryロギングと比較した表については、このページの冒頭を参照してください。

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)と、text、tool_use、tool_resultブロックで構成されるcontent配列が含まれます。メッセージのcreated_at値はコミット時のタイムスタンプです。連続するメッセージのタイムスタンプが同じになったり、順序がわずかに逆転したりすることがあります。そのため、created_atで並べ替え直さず、返された順序を維持してください。エージェントが所有するセッションでは、ユーザーメッセージの送信者を特定できる場合、sent_by_user_idにそのユーザーが記録されます。特定できない場合はnullになり、アシスタントメッセージでは常にnullです。メッセージのコンテンツをまったく返せない場合(サイズ上限を超えている場合など)、そのメッセージのcontent_unavailableはtrueに設定されます。

各ツールブロックで返されるバイト数の上限は、tool_use_input_max_bytesとtool_result_max_bytesの2つのパラメーターで設定します。どちらもデフォルトは10,000バイトです。サーバーの最大値(文字列あたり約1 MiB)を使用するには-1を渡します。0を渡すと400 Bad Requestが返されます。いずれかの上限によって切り詰められたブロックには"truncated": trueが含まれます。切り詰められたtool_useの入力は有効なJSONではなくなります。そのため、ツールの入力は切り詰められていないブロックからのみ解析してください(または、上限を引き上げて再取得してください)。

messagesエンドポイントは、pendingのセッション、存在しないセッションや削除されたセッション、キーで読み取れない組織のセッションに対して、404 Not Foundを返します。

保持と削除

セッションエンドポイントは読み取り専用です。ローカルセッションとリモートセッションはCompliance APIを通じて削除できません。ローカルセッションのトランスクリプトは、ユーザーのマシン上のセッションで説明されているとおり、デフォルトで6年間保持されます。組織で有限のカスタム会話保持期間が設定されている場合はその期間、HIPAA対応が有効になっている組織では30日間保持されます。リモートセッションのトランスクリプトは、ユーザーがそれより早くセッションを削除しない限り、6年間保持されます。ユーザーがセッションを削除すると、リモートセッションエンドポイントはそのセッションを返さなくなり、そのトランスクリプトはCompliance APIを通じて復元できません。これらの期間がAnthropicの他の保持に関する取り決めとどのように関係するかについては、APIとデータ保持を参照してください。

次のステップ

同じCompliance Access Keyを使用して、claude.aiのチャットコンテンツ、添付ファイル、プロジェクトにアクセスします。

セッションのトランスクリプトに含まれる内容のフィールドごとの概要と、その他のよくある質問。

エラーペイロードの原文と、それぞれの解決方法。

Compliance APIのエンドポイントパス、パラメーター、レスポンススキーマ。

Was this page helpful?