このページのエンドポイントは、Claude Enterprise組織のユーザーがClaudeアプリおよびエージェント(現時点ではCoworkとClaude Code)で実行するセッションのトランスクリプトを、コンプライアンスレビュー担当者に公開します。各セッションはClaudeとの単一の会話であり、そのトランスクリプトは、その会話におけるユーザープロンプト、アシスタントの応答、ツール呼び出しとその結果の一連の流れです。これらのエンドポイントは、「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.aiのWebまたはモバイルで開始されたCoworkセッション(Anthropicが管理する環境のクラウド上で実行) | リモートセッションエンドポイント(/v1/compliance/apps/sessions/remote) | cowork_remote |
ローカルセッションのキャプチャは、組織でCompliance APIが有効になっていることに紐付けられており、ユーザーがClaude Enterpriseアカウントでサインインしている間に適用されます。セッションエンドポイントは以下を返しません。
次の表は、ローカルセッションとリモートセッションの違いをまとめたものです。
| ローカルセッション(ユーザーのマシン上) | リモートセッション(クラウド上) | |
|---|---|---|
| エンドポイント | /v1/compliance/apps/sessions/local配下の一覧、取得、メッセージの各エンドポイント | /v1/compliance/apps/sessions/remote配下の一覧およびメッセージの各エンドポイント |
| IDプレフィックス | clls_ | cse_ |
| 一覧フィルター | created_at範囲のみ | 組織、ユーザー、およびcreated_at範囲 |
| ライフサイクルフィールド | なし:statusもupdated_atもなし | status、updated_at |
| 保持期間 | デフォルトで6年、または組織で有限のカスタム会話保持期間が設定されている場合はその期間 | 6年 |
| レート制限 | 共有のCompliance API制限のみ | 共有のCompliance API制限に加えて2つ目のリクエスト予算 |
| APIによる削除 | 不可 | 不可 |
ローカルセッションは、ユーザーがClaude Enterpriseアカウントでサインインしている間にユーザーのマシン上で実行されます。現時点では、Claude Desktop内のCowork、およびターミナル、Claude Desktop、またはIDE拡張機能内のClaude Codeです。
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レート制限に対してのみカウントされます。リモートセッションエンドポイントに適用される2つ目のリクエスト予算の対象にはなりません。429 Too Many Requestsを参照してください。親組織でローカルセッションが利用できない場合、3つのエンドポイントすべてがLocal sessions are not available.というメッセージとともに404を返します(ローカルセッションが見つからないを参照)。セッション一覧またはキャプチャされたコンテンツが一時的に利用できない間は、503を返します(ローカルセッションが一時的に利用不可を参照)。
ローカルセッションの場合、Anthropicは各会話のリクエストがClaude APIに到達した時点でサーバー側に記録します。デバイスには何もインストールされず、クライアントがすでにClaude APIに送信しているリクエスト以外は何も収集されません。ローカルセッションのトランスクリプトは、Claudeが何を依頼され、何を返したかを示すものであり、デバイス上で何が起きたかを示すものではありません。ファイルやネットワークのアクティビティは、トランスクリプト内のツール呼び出しとツール結果を通じてのみ確認できるため、APIに到達しないアクティビティ(たとえば、セッションが送信しなかったローカルファイル)はキャプチャされません。
顧客管理の暗号化キーを使用している組織では、ローカルセッションは通常どおり一覧表示および取得できますが、トランスクリプトのコンテンツは現在返されません。各メッセージはコンテンツが利用不可とマークされた状態で返されます(そのようなメッセージがどのようにマークされるかについては、ローカルセッションのトランスクリプトを取得するを参照してください)。
一覧エンドポイントは、キーが読み取り可能なすべてのリンクされた組織について、トランスクリプトのコンテンツを含まないセッションメタデータを返します。リモートセッション一覧とは異なり、組織フィルターやユーザーフィルターはありません。created_at.gteおよびcreated_at.ltパラメータで結果を時間的に絞り込んでください。どちらもUTCオフセットが必須のRFC 3339タイムスタンプを受け取り、両方が指定された場合、created_at.ltはcreated_at.gteより厳密に後でなければなりません。そうでない場合、リクエストは400 Bad Requestを返します。新しいセッションとメッセージは、短い処理遅延(通常は数分以内)の後に結果に表示されます。開始直後に見つからないセッションが、必ずしもキャプチャされていないわけではありません。次のリクエストは、指定した日付以降に作成されたセッションを一覧表示します。
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/local" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-07-01T00:00:00Z" \
--data-urlencode "limit=100"{
"data": [
{
"type": "compliance_local_session",
"id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
"user": {
"id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
"email_address": "engineer@example.com"
},
"product_surface": "cowork",
"created_at": "2026-07-09T14:02:11Z"
},
{
"type": "compliance_local_session",
"id": "clls_01HyLqMnOpQrStUvWxYzAbCd",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": null,
"user": {
"id": "user_01HqRsTuVwXyZaBcDeFgHiJk",
"email_address": null
},
"product_surface": "claude_code",
"created_at": "2026-07-08T09:15:43Z"
}
],
"next_page": "page_AAEfQx7mPdLkq9Rt2VwHbZk"
}結果はcreated_atの逆時系列順(新しいものが先)でソートされ、同値の場合はサーバー側の固定順序で順位が決まり、レスポンスごとにlimit件(デフォルト100、最大500)に制限されます。このエンドポイントはpageおよびnext_pageトークンによる前方向のみのページネーションを行います(結果をページネーションするを参照)。レスポンスのnext_page値を次のリクエストのpageクエリパラメータとして渡し、next_pageがnullになったら停止します。レスポンスにhas_moreフィールドはありません。一覧の走査は開始から24時間以内に完了してください。それより古い一覧カーソルも引き続き受け付けられますが、現在の保持境界に対して再評価されるため、保持されている最も古いアクティビティが保持期間から外れようとしているセッションはスキップされる可能性があります。
各セッションオブジェクトにおいて、user.idは常に設定されており、アカウント削除後も残ります。user.email_addressは、ユーザーのアカウントが削除された場合、またはユーザーがキーで読み取り可能な組織のメンバーでなくなった場合にnullになります。workspace_idは、セッションがワークスペースに関連付けられていなかった場合にnullになります。ローカルセッションは1つのクライアントセッションIDに対応します。クライアントで新しい会話を開始するか、そのコンテキストをクリアすると、新しいセッションレコードが始まります。id値は不透明な文字列として扱ってください。形式は予告なく変更される可能性があります。
ローカルセッションにはstatusもupdated_atもありません。ローカルセッションにはサーバー側のライフサイクルがなく、その可視性は代わりに保持期間によって管理されます。ローカルセッションは、セッション中にクライアントが行う一連のClaude API呼び出し(推論呼び出し)としてキャプチャされ、保持期間はキャプチャされた各呼び出しに個別に適用されます。created_atは、セッションで保持されている最も古い呼び出しのタイムスタンプ(UTC)です。古い呼び出しが保持期間を過ぎると、created_atはそれに応じて進み、セッション内のすべての呼び出しが期間を過ぎると、そのセッションは返されなくなります。created_atは実行ごとに変わる可能性があるため、時間をおいて一覧を再走査する場合はidで重複排除してください。セッションのcreated_atはセッションが継続しても後ろに移動することはなく、updated_atもないため、最初にエクスポートした後にメッセージが追加されたセッションが、後のcreated_atウィンドウに再び現れることはありません。トランスクリプトを最新に保つには、実行ごとに、最も長く続くセッションと少なくとも同じ長さの直近のウィンドウを再度一覧表示し、返されたセッションのトランスクリプトを再取得して、メッセージをidで重複排除してください。
一覧はセッションアクティビティのメタデータから構築されるため、トランスクリプトのコンテンツがキャプチャされなかったセッション(たとえば、組織でキャプチャが開始される前に実行されたセッション。保持期間が許す限り遡ります)が含まれる場合があります。そのようなセッションのトランスクリプトは、各メッセージをコンテンツが利用不可とマークされた状態で返します(ローカルセッションのトランスクリプトを取得するを参照)。
キャプチャされたローカルセッションのコンテンツは、デフォルトでキャプチャから6年間保存されます。セッションを実行した組織がclaude.ai > 組織設定 > データとプライバシーで有限のカスタム会話保持期間を設定している場合は、デフォルトより短いか長いかにかかわらず、代わりにその期間が適用されます。組織に複数のカスタム保持期間が設定されている場合は、最も短いものが適用されます。その設定の変更は2つの異なる形で反映されます。エンドポイントは設定が変更されるとすぐに、組織の現在の期間より古いアクティビティを返さなくなります。一方、キャプチャされた各メッセージはキャプチャ時に有効だった期間だけ保存されるため、後から期間を延長しても、すでに期限切れになったコンテンツは復元されません。
1つのセッションのメタデータを直接取得するには、そのIDをGET /v1/compliance/apps/sessions/local/{session_id}に渡します。レスポンスは一覧エンドポイントが返すものと同じセッションオブジェクトで、エンベロープもトランスクリプトのコンテンツもありません。不正な形式のセッションIDは400 Bad Requestを返します。単一の404 Not Foundが、レスポンスでは区別されない4つのケースをカバーします。セッションがキーで読み取り可能な組織にない(別の親組織配下のセッションを含む)、セッションが存在しない、ゼロデータ保持が適用されている、またはセッション内のすべての呼び出しが保持期間を過ぎている、のいずれかです。
product_surface(文字列またはnull)は、セッションを作成した製品を識別します。Claude Desktop内でユーザーのマシン上で実行されるCoworkセッションの場合はcowork、Claude Codeセッションの場合はclaude_codeです。対象範囲の拡大に伴い、新しい値が追加されます。
メッセージエンドポイントは、キャプチャされたClaude API呼び出しから再構築されたセッションのトランスクリプトを返します。ユーザープロンプト、アシスタントのテキスト、ツール呼び出し、およびツール結果のテキスト部分であり、サイズによる切り詰めを除いて、すべて送信されたとおりに返されます。そのコンテンツ内のURL、認証情報、個人データをマスクするものは何もないため、トランスクリプトは機密情報として扱ってください。トランスクリプトでは以下が省略または置き換えられます。
[system prompt content not shown]と記されたマーカーメッセージが入ります(通常はセッションごとに1回。キャプチャされたコンテンツがないセッションにはマーカーはありません)。[<block type> content not shown](たとえば[image content not shown])と記されたtextブロックとして表示され、truncatedがtrueに設定されます。ツール結果内の非テキスト項目は1つの[N non-text item(s) not shown]エントリに置き換えられ、ツール結果ブロックのtruncatedはtrueになります。textブロックの引用メタデータは省略され、影響を受けたブロックにはtruncatedがtrueに設定されます。CLAUDE.mdなどのプロジェクト指示ファイルは、通常のユーザーロールのコンテンツとして表示されます。スキルのコンテンツは、クライアントがメッセージコンテンツとして送信した場合に表示され、他のユーザーテキストと区別されません。対象範囲の概要、およびCoworkとClaude CodeのOpenTelemetryロギングとの比較については、Compliance API FAQを参照してください。
session_id="clls_01HxKpLmNoPqRsTuVwXyZaBc"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/sessions/local/$session_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"session": {
"type": "compliance_local_session",
"id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
"organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
"workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
"user": {
"id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
"email_address": null
},
"product_surface": "cowork",
"created_at": "2026-07-09T14:02:11Z"
},
"data": [
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBa",
"role": "user",
"created_at": "2026-07-09T14:02:11Z",
"provenance": {
"type": "synthetic_marker"
},
"content": [
{
"type": "text",
"text": "[system prompt content not shown]",
"truncated": true
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBc",
"role": "user",
"created_at": "2026-07-09T14:02:11Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "Fix the failing test in tests/auth_test.py",
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBd",
"role": "assistant",
"created_at": "2026-07-09T14:02:11Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "I'll read the test file first.",
"truncated": false
},
{
"type": "tool_use",
"id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
"name": "Read",
"input": "{\"file_path\":\"tests/auth_test.py\"}",
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBe",
"role": "user",
"created_at": "2026-07-09T14:02:38Z",
"provenance": null,
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
"name": "Read",
"is_error": false,
"content": [
{
"type": "text",
"text": "def test_login_expiry():\n ..."
}
],
"truncated": false
}
]
},
{
"type": "compliance_local_session_message",
"id": "clsm_01J4KpLmNoPqRsTuVwXyZaBf",
"role": "assistant",
"created_at": "2026-07-09T14:02:38Z",
"provenance": null,
"content": [
{
"type": "text",
"text": "The test was asserting on a stale expiry timestamp. I've updated it.",
"truncated": false
}
]
}
],
"next_page": null
}レスポンスには、ページネーションされた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配列があります。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は、そのターンに利用可能なコンテンツがないことを意味します。これはレコードが保存されなかったことを証明するものではありません。ストレージ側のアクセスポリシーによって保留されたコンテンツも同じ理由で報告されるためです(たとえば、顧客管理の暗号化キーを使用している組織の場合)。また、それ以外はキャプチャされているセッション内の個々のターンが、他のデータ処理上の理由で利用不可となり、同じ理由を持つこともあります。cmek_key_revokedは、組織の顧客管理キーで暗号化されたコンテンツについて、そのキーが利用できない場合(たとえば失効した場合)のために予約されています。現在は返されないため、前方互換性のために処理できるようにしておいてください。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が設定されます。
トランスクリプトのコンテンツは、ユーザーのマシン上のセッションで説明した保持期間に従います。セッションの開始部分が保持期間を過ぎている場合、トランスクリプトはreasonがretention_elapsedの単一のcontent_unavailableプレースホルダーで始まり、保持されているメッセージがそれに続きます。セッション内のすべての呼び出しが期間を過ぎている場合、メッセージエンドポイントは404 Not Foundを返します。これは、キーで読み取れない組織のセッション、存在しないセッション、ゼロデータ保持が適用されているセッションの場合と同様です。不正な形式のセッションIDは400 Bad Requestを返します。
claude.aiのWebまたはモバイルで開始されたCoworkセッションは、Anthropicが管理する環境のクラウド上で実行されます。Compliance APIは、2つのエンドポイントを通じてこれらのリモートセッションを公開します。GET /v1/compliance/apps/sessions/remoteはセッションメタデータを一覧表示し、GET /v1/compliance/apps/sessions/remote/{session_id}/messagesは1つのセッションのトランスクリプトを返します。どちらもread:compliance_user_dataスコープを必要とし、どちらも共有のCompliance APIレート制限に加えて、これらのエンドポイント固有の2つ目のリクエスト予算に対してカウントされます。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 --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-06-01T00:00:00Z" \
--data-urlencode "limit=100"{
"data": [
{
"id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"agent_id": null,
"started_by_user": null,
"status": "active",
"created_at": "2026-07-01T17:04:05Z",
"updated_at": "2026-07-01T18:00:41Z",
"product_surface": "cowork_remote",
"claude_project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq"
},
{
"id": "cse_01TkNpRsUvWxYzAbCdEfGhJ4",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": null,
"agent_id": "cagt_01MnPqRsTuVwXyZaBcDeFgH8",
"started_by_user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"status": "archived",
"created_at": "2026-06-28T09:15:22Z",
"updated_at": "2026-06-28T09:47:10Z",
"product_surface": "cowork_remote",
"claude_project_id": null
}
],
"next_page": "page_AAEfMk93cXpYdGxrZXk"
}結果はcreated_atの逆時系列順(新しいものが先)でソートされ、レスポンスごとにlimit件(デフォルト100、最大500)に制限されます。このエンドポイントはpageおよびnext_pageトークンでページネーションを行います(結果をページネーションするを参照)。レスポンスのnext_page値を次のリクエストのpageクエリパラメータとして渡し、next_pageがnullになったら停止します。
セッションはユーザーまたはエージェントのいずれかが所有し、両方が所有することはありません。ユーザー所有のセッションでは、userに所有者のIDとメールアドレスが入り(ユーザーがキーで読み取り可能な組織のメンバーでなくなった場合、email_addressはnull)、agent_idは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のセッションにはまだトランスクリプトがなく、プロビジョニングが完了するまでメッセージエンドポイントは404を返します。削除されたセッションは返されません。
product_surface(文字列またはnull)は、セッションを作成した製品を識別します。このエンドポイントは現在、product_surfaceがcowork_remoteのセッション、つまりclaude.aiのWebまたはモバイルで開始されたCoworkセッションのみを返します。
メッセージエンドポイントは、セッションのトランスクリプト(ユーザープロンプト、アシスタントの応答、ツール呼び出しとその結果)を返します。思考ブロックと画像は含まれません。対象範囲の概要、およびCoworkのOpenTelemetryロギングとの比較については、Compliance API FAQを参照してください。
session_id="cse_01WpQrStUvXyZaBcDeFgHjK6"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/sessions/remote/$session_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"session": {
"id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": null
},
"agent_id": null,
"started_by_user": null,
"status": "active",
"created_at": "2026-07-01T17:04:05Z",
"updated_at": "2026-07-01T18:00:41Z",
"product_surface": "cowork_remote",
"claude_project_id": null
},
"data": [
{
"id": "csev_01HjKmNpQrStUvWxYzAbCdE2",
"role": "user",
"created_at": "2026-07-01T17:04:05Z",
"content": [
{
"type": "text",
"text": "Summarize the customer feedback in the attached spreadsheet.",
"truncated": false
}
],
"sent_by_user_id": null,
"content_unavailable": false
},
{
"id": "csev_01BcDeFgHjKmNpQrStUvWxY4",
"role": "assistant",
"created_at": "2026-07-01T17:04:06Z",
"content": [
{
"type": "text",
"text": "I'll start by reading the spreadsheet...",
"truncated": false
}
],
"sent_by_user_id": null,
"content_unavailable": false
}
],
"next_page": null
}レスポンスには、ページネーションされた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です。メッセージのコンテンツをまったく返せない場合(たとえばサイズ上限を超えている場合)、メッセージにはcontent_unavailableがtrueに設定されます。
2つのパラメータが、各ツールブロックの返されるバイト数を制限します。tool_use_input_max_bytesとtool_result_max_bytesで、どちらもデフォルトは10,000バイトです。サーバーの最大値(文字列あたり約1 MiB)を指定するには-1を渡します。0は400 Bad Requestを返します。いずれかの上限で切り詰められたブロックには"truncated": trueが設定され、切り詰められたtool_useの入力は有効なJSONではなくなるため、ツール入力は切り詰められていないブロックからのみパースしてください(または上限を引き上げて再取得してください)。
メッセージエンドポイントは、pendingのセッション、存在しないか削除されたセッション、およびキーで読み取れない組織のセッションに対して404 Not Foundを返します。
セッションエンドポイントは読み取り専用です。ローカルセッションとリモートセッションはCompliance APIを通じて削除できません。ローカルセッションのトランスクリプトは、ユーザーのマシン上のセッションで説明したとおり、デフォルトで6年間、または組織で有限のカスタム会話保持期間が設定されている場合はその期間保持されます。リモートセッションのトランスクリプトは6年間保持されます。これらの期間がAnthropicの他の保持の取り決めとどのように並存するかについては、APIとデータ保持を参照してください。
同じCompliance Access Keyでclaude.aiのチャットコンテンツ、ファイル添付、プロジェクトにアクセスします。
セッショントランスクリプトの対象範囲の概要と、OpenTelemetryロギングとの比較。
エラーペイロードの原文と、それぞれの修正方法。
Compliance APIのエンドポイントパス、パラメータ、レスポンススキーマ。
Was this page helpful?