Claude Platform Docs
AdministrationAPI de conformité

Récupérer les transcriptions de sessions

Listez les sessions que vos utilisateurs exécutent dans les applications et agents Claude, tels que Claude Cowork et Claude Code, et récupérez leurs transcriptions via la Compliance API.

Les points de terminaison de cette page exposent aux réviseurs de conformité les transcriptions des sessions que vos utilisateurs exécutent dans les applications et agents Claude (aujourd'hui : Cowork, Claude Code, Claude Science et Claude for Microsoft 365) depuis vos organisations Claude Enterprise. Chaque session est une conversation unique avec Claude ; sa transcription est la séquence des prompts utilisateur, des réponses de l'assistant, ainsi que des appels d'outils et de leurs résultats dans cette conversation. Les points de terminaison prennent en charge les exports d'« eDiscovery » (découverte électronique) et l'application de la « data loss prevention » (prévention des pertes de données), ou DLP.

La Compliance API regroupe les sessions en deux familles de points de terminaison selon l'endroit où elles s'exécutent : les points de terminaison de sessions locales pour les sessions sur les machines des utilisateurs, et les points de terminaison de sessions distantes pour les sessions qui s'exécutent dans le cloud dans des environnements gérés par Anthropic. Les deux familles sont en lecture seule, et aucune n'est disponible pour les clés Admin API (sk-ant-admin01-...) : les appels authentifiés avec une clé Admin API renvoient 403 Forbidden.

Le tableau suivant associe chaque produit, et l'endroit où il s'exécute, à la famille de points de terminaison qui renvoie ses sessions et à la valeur product_surface qui les identifie dans les réponses. Des produits sont ajoutés à ce tableau à mesure que la couverture s'étend.

Produit et lieu d'exécutionFamille de points de terminaisonproduct_surface
Cowork dans Claude Desktop, s'exécutant sur la machine de l'utilisateurPoints de terminaison de sessions locales (/v1/compliance/apps/sessions/local)cowork
Claude Code dans le terminal, dans Claude Desktop ou dans une extension d'IDE, s'exécutant sur la machine de l'utilisateurPoints de terminaison de sessions localesclaude_code
Application de bureau Claude Science, s'exécutant sur la machine de l'utilisateurPoints de terminaison de sessions localesclaude_science
Claude for Microsoft 365 (les compléments Claude pour Excel, PowerPoint, Word et Outlook), s'exécutant dans les applications de bureau ou web Microsoft 365Points de terminaison de sessions localesoffice_agents/excel, office_agents/powerpoint, office_agents/word ou office_agents/outlook (office_agents lorsque l'application n'est pas identifiée)
Sessions Cowork démarrées sur claude.ai web ou mobile, s'exécutant dans le cloud dans des environnements gérés par AnthropicPoints de terminaison de sessions distantes (/v1/compliance/apps/sessions/remote)cowork_remote

La capture des sessions locales est liée à l'activation de la Compliance API pour votre organisation et s'applique tant que les utilisateurs sont connectés avec leur compte Claude Enterprise. Les points de terminaison de sessions ne renvoient pas les éléments suivants :

  • Les sessions Claude Code authentifiées avec une clé API Claude Console, ou exécutées via une plateforme cloud tierce telle qu'Amazon Bedrock, Google Cloud ou Microsoft Foundry.
  • Claude Code sur le web. Il s'exécute également dans le cloud dans des environnements gérés par Anthropic, mais ce n'est pas une session distante ; les points de terminaison de sessions distantes renvoient uniquement les sessions Cowork.
  • Les sessions locales dans les organisations ayant activé la préparation HIPAA. Aucune donnée de session locale n'est capturée, de sorte que les points de terminaison de sessions locales ne renvoient aucune session pour ces organisations.
  • Les sessions locales pour lesquelles la rétention zéro des données (ZDR) est en vigueur. Ces sessions sont exclues des résultats de liste, et les points de terminaison de récupération et de messages renvoient 404 pour elles.

Anthropic recommande la Compliance API pour récupérer le contenu des sessions. Le tableau suivant compare les sessions locales et les sessions distantes avec les alternatives basées sur OpenTelemetry disponibles pour Cowork et Claude Code, la journalisation OpenTelemetry de Cowork et la surveillance de Claude Code.

Sessions locales (sur les machines des utilisateurs)Sessions distantes (dans le cloud)Journalisation OpenTelemetry
LivraisonPull : interrogation et export via HTTPSPull : interrogation et export via HTTPSPush : envoyé en streaming vers votre collecteur OTLP
ConfigurationFonctionne avec votre Compliance Access Key existanteFonctionne avec votre Compliance Access Key existanteUn administrateur configure un point de terminaison OTLP et les paramètres de capture de contenu
InfrastructureHébergée par AnthropicHébergée par AnthropicVous exploitez le collecteur et le stockage
Préfixe d'identifiantclls_cse_N/A
Valeurs de product_surfacecowork, claude_code, claude_science et les valeurs commençant par office_agentscowork_remoteN/A
Rétention6 ans par défaut, ou la période de rétention des conversations personnalisée de votre organisation lorsqu'une période finie est définie ; conservée par Anthropic6 ans, conservée par AnthropicVotre infrastructure, vos politiques
Prompts utilisateur et réponses de l'assistantOuiOuiOui, sous réserve des paramètres de capture de contenu
Entrées d'outilsTronquées à 10 000 octets par entrée par défaut ; jusqu'à environ 1 Mio sur demandeTronquées à 10 000 octets par entrée par défaut ; jusqu'à environ 1 Mio sur demandeRésumés tronqués
Contenu des résultats d'outilsChaque entrée de texte tronquée à 10 000 octets par défaut ; jusqu'à environ 1 Mio sur demandeChaque entrée de texte tronquée à 10 000 octets par défaut ; jusqu'à environ 1 Mio sur demandeMétadonnées telles que la taille et le succès ; Claude Code peut également capturer le contenu avec un paramètre optionnel plafonné en taille
Contenu des fichiersOui, via les appels d'outils de la transcription (texte uniquement ; les autres contenus apparaissent sous forme d'espace réservé)Oui, via les appels d'outils de la transcription (texte uniquement ; les autres contenus sont omis)Chemins de fichiers ; Claude Code peut également capturer le contenu avec un paramètre optionnel plafonné en taille
Métadonnées d'hôte et d'appareil (type de terminal, chemins d'espace de travail)NonNonOui
Utilisation de tokens et coûtNon ; disponible via la Claude Enterprise Analytics APINon ; disponible via la Claude Enterprise Analytics APIOui

Sessions sur les machines des utilisateurs (sessions locales)

Les sessions locales s'exécutent sur les machines des utilisateurs tant qu'ils sont connectés avec leur compte Claude Enterprise : aujourd'hui, Cowork dans Claude Desktop, Claude Code (dans le terminal, dans Claude Desktop ou dans une extension d'IDE), l'application de bureau Claude Science, et Claude for Microsoft 365 dans Excel, PowerPoint, Word et Outlook.

La Compliance API expose les sessions locales via trois points de terminaison : GET /v1/compliance/apps/sessions/local liste les métadonnées des sessions, GET /v1/compliance/apps/sessions/local/{session_id} récupère les métadonnées d'une session, et GET /v1/compliance/apps/sessions/local/{session_id}/messages renvoie la transcription d'une session. Les trois requièrent la portée read:compliance_user_data et ne sont décomptés que de la « rate limit » (limite de débit) partagée de la Compliance API ; ils ne sont pas soumis au second budget de requêtes qui s'applique aux points de terminaison de sessions distantes. Consultez 429 Too Many Requests. Si les sessions locales ne sont pas disponibles pour votre organisation parente, les trois points de terminaison renvoient 404 avec le message Local sessions are not available. (consultez Session locale introuvable) ; lorsque les listes de sessions ou le contenu capturé sont temporairement indisponibles, ils renvoient 503 (consultez Sessions locales temporairement indisponibles).

Pour les sessions locales, Anthropic enregistre chaque conversation côté serveur au fur et à mesure que ses requêtes atteignent la Claude API ; rien n'est installé sur l'appareil, et rien n'est collecté au-delà des requêtes que le client envoie déjà à la Claude API. Les transcriptions de sessions locales montrent ce qu'il a été demandé à Claude de faire et ce qu'il a renvoyé, et non ce qui s'est passé sur l'appareil. L'activité sur les fichiers et le réseau n'est visible qu'à travers les appels d'outils et les résultats d'outils de la transcription, de sorte que l'activité qui n'atteint jamais l'API (par exemple, les fichiers locaux que la session n'a jamais envoyés) n'est pas capturée.

Dans les organisations qui utilisent des clés de chiffrement gérées par le client, les transcriptions de sessions locales sont chiffrées sous votre clé et renvoyées comme d'habitude. Tant que votre clé ne peut pas être utilisée (par exemple, parce que vous l'avez désactivée ou révoquée, ou parce qu'elle est inaccessible), le point de terminaison de messages renvoie 503 Service Unavailable pour les pages concernées au lieu du contenu de la transcription. Ces messages ne sont jamais signalés comme not_captured (consultez Récupérer la transcription d'une session locale). La liste des sessions et la récupération des métadonnées de session ne sont pas affectées.

Le point de terminaison de liste renvoie les métadonnées des sessions, sans contenu de transcription, pour chaque organisation liée que votre clé peut lire. Contrairement à la liste des sessions distantes, il n'a pas de filtres par organisation ou par utilisateur : bornez les résultats dans le temps avec les paramètres created_at.gte et created_at.lt. Les deux acceptent des horodatages RFC 3339 avec un décalage UTC obligatoire, et lorsque les deux sont fournis, created_at.lt doit être strictement postérieur à created_at.gte, sinon la requête renvoie 400 Bad Request. Un troisième filtre temporel, updated_at.gte, borne par la dernière activité plutôt que par la première : il renvoie les sessions dont le dernier appel d'inférence est à l'heure donnée ou après, et se combine avec les filtres created_at sans modifier l'ordre ni la pagination. Utilisez-le pour interroger les sessions actives depuis un passage précédent, comme décrit plus loin dans cette section. Les nouvelles sessions et les nouveaux messages apparaissent dans les résultats après un court délai de traitement, généralement en quelques minutes ; une session absente immédiatement après son démarrage n'est pas nécessairement non capturée. La requête suivante liste les sessions créées depuis une date donnée.

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"
}

Les résultats sont triés par ordre chronologique inverse (les plus récents en premier) selon created_at, les égalités étant départagées selon un ordre fixe côté serveur, et plafonnés à limit résultats par réponse (100 par défaut, 500 au maximum). Le point de terminaison pagine uniquement vers l'avant avec les jetons page et next_page (consultez Paginer les résultats) : repassez la valeur next_page de la réponse comme paramètre de requête page lors de la requête suivante, et arrêtez-vous lorsque next_page vaut null. La réponse n'a pas de champ has_more. Terminez un parcours de liste dans les 24 heures suivant son début ; un curseur de liste plus ancien est toujours accepté mais est réévalué par rapport à la limite de rétention actuelle, de sorte que les sessions dont l'activité conservée la plus ancienne est sur le point de sortir de la période de rétention peuvent être ignorées.

Dans chaque objet session, user.id est toujours défini et survit à la suppression du compte ; user.email_address vaut null lorsque le compte de l'utilisateur a été supprimé ou que l'utilisateur n'est plus membre d'une organisation que votre clé peut lire. workspace_id vaut null lorsque la session n'était pas associée à un espace de travail. Une session locale correspond à un identifiant de session client : démarrer une nouvelle conversation dans le client, ou effacer son contexte, commence un nouvel enregistrement de session. Pour Claude Science, la liste peut également inclure des sessions distinctes pour le travail d'arrière-plan propre à l'application (par exemple, le nommage de la conversation ; sur les versions plus récentes de l'application, également ses pistes de révision et de délégation), et sur les versions plus anciennes de l'application, une partie de ce travail d'arrière-plan apparaît sous forme de messages supplémentaires dans la transcription même de la conversation. Une conversation Claude Science qui se poursuit à travers certaines mises à jour de l'application apparaît comme deux sessions. Ces comportements sont attendus. Traitez les valeurs id comme des chaînes opaques ; le format peut changer sans préavis.

Pour Claude for Microsoft 365, la suppression d'une conversation dans le complément n'a lieu que sur le client, elle n'est donc pas reflétée dans l'API : les sessions locales n'ont pas de champ deleted_at, et la session reste listée jusqu'à ce que la rétention la supprime.

Les sessions locales portent un updated_at mais pas de status : une session locale n'a pas de statut de cycle de vie côté serveur, et sa visibilité est régie par la rétention à la place. Une session locale est capturée comme la série d'appels à la Claude API (appels d'inférence) que le client effectue pendant la session, et la rétention s'applique à chaque appel capturé individuellement. created_at est l'horodatage du plus ancien appel conservé de la session et updated_at l'horodatage de son dernier, tous deux en UTC. À mesure que les appels plus anciens dépassent la période de rétention, created_at avance en conséquence, et une fois que tous les appels d'une session ont expiré, la session n'est plus renvoyée ; updated_at suit l'appel le plus récent et n'est pas affecté jusque-là. Comme created_at peut se décaler entre les exécutions, dédupliquez sur id lorsque vous reparcourez la liste au fil du temps. Pour maintenir les transcriptions à jour à mesure que les sessions gagnent des messages, interrogez avec le filtre updated_at.gte, en faisant se chevaucher les fenêtres consécutives. Sur le point de terminaison de liste, updated_at est une borne inférieure : pour une session encore active à la limite d'une page ou d'une fenêtre created_at.lt, il peut momentanément être en retard sur la véritable dernière activité de la session, et un nouvel appel ne devient interrogeable qu'après le court délai de traitement mentionné précédemment. En raison de ce retard, fixez le updated_at.gte de chaque exécution quelques minutes avant l'heure de début de votre exécution précédente, et non exactement à l'heure de l'exécution précédente. Une borne fixée à l'heure précédente exacte abandonne silencieusement et définitivement une session dont le dernier appel était encore en cours d'indexation à ce moment-là, car une fois que la borne dépasse cet appel, aucune exécution ultérieure ne le renvoie. Dédupliquez les sessions renvoyées sur id, récupérez à nouveau leurs transcriptions, et dédupliquez les messages sur id. La récupération d'une session, ou de ses messages, reflète toujours exactement le dernier appel conservé, de sorte qu'un passage de réconciliation périodique sur une fenêtre plus ancienne constitue une alternative plus complète à l'élargissement du chevauchement.

La liste est construite à partir des métadonnées d'activité des sessions, elle peut donc inclure des sessions dont le contenu de transcription n'a pas été capturé, par exemple des sessions exécutées avant le début de la capture pour votre organisation (aussi loin que votre période de rétention le permet) ; la transcription d'une telle session renvoie chaque message avec son contenu marqué comme indisponible (consultez Récupérer la transcription d'une session locale).

Le contenu capturé des sessions locales est stocké pendant 6 ans à compter de la capture par défaut. Si l'organisation qui a exécuté la session a défini une période de rétention des conversations personnalisée finie dans claude.ai > Paramètres de l'organisation > Données et confidentialité, cette période s'applique à la place, qu'elle soit plus courte ou plus longue que la valeur par défaut ; lorsque l'organisation a configuré plus d'une période de rétention personnalisée, la plus courte s'applique. Une modification de ce paramètre prend effet de deux manières différentes : les points de terminaison cessent de renvoyer l'activité plus ancienne que la période actuelle de l'organisation dès que le paramètre change, tandis que chaque message capturé est stocké pendant la période qui était en vigueur au moment de sa capture, de sorte qu'allonger la période ultérieurement ne restaure pas le contenu déjà expiré.

Pour récupérer directement les métadonnées d'une session, passez son identifiant à GET /v1/compliance/apps/sessions/local/{session_id}. La réponse est le même objet session que celui renvoyé par le point de terminaison de liste, sans enveloppe et sans contenu de transcription. Un identifiant de session mal formé renvoie 400 Bad Request. Un unique 404 Not Found couvre quatre cas que la réponse ne distingue pas : la session n'est pas dans une organisation que votre clé peut lire (y compris les sessions sous une autre organisation parente), elle n'existe pas, la rétention zéro des données est en vigueur pour elle, ou tous ses appels ont dépassé la rétention.

product_surface (chaîne ou null) identifie le produit qui a créé la session : cowork (Cowork dans Claude Desktop sur la machine de l'utilisateur), claude_code (Claude Code), claude_science (Claude Science), ou l'une des valeurs office_agents/excel, office_agents/powerpoint, office_agents/word et office_agents/outlook (Claude for Microsoft 365, par application ; office_agents seul lorsque l'application n'est pas identifiée). De nouvelles valeurs apparaissent à mesure que la couverture s'étend.

Récupérer la transcription d'une session locale

Le point de terminaison de messages renvoie la transcription de la session, reconstruite à partir des appels à la Claude API capturés : prompts utilisateur, texte de l'assistant, appels d'outils et portions textuelles des résultats d'outils, tous renvoyés tels qu'ils ont été envoyés, hormis la troncature de taille. Rien ne masque les URL, les identifiants de connexion ou les données personnelles dans ce contenu, traitez donc les transcriptions comme sensibles. La transcription omet ou remplace les éléments suivants :

  • Les blocs de réflexion ne sont jamais inclus.
  • Le « system prompt » (invite système) de la requête n'est jamais renvoyé. Un message marqueur indiquant [system prompt content not shown] le remplace (normalement une fois par session ; une session sans contenu capturé ne porte aucun marqueur).
  • Les définitions d'outils et la configuration des serveurs MCP ne font pas partie de la transcription.
  • Les images, PDF et autres blocs binaires ou structurés ne sont pas renvoyés. Chacun apparaît comme un bloc text indiquant [<block type> content not shown] (par exemple, [image content not shown]) avec truncated défini à true. Les éléments non textuels à l'intérieur d'un résultat d'outil, tels que les résultats de recherche web ou la sortie de l'outil d'exécution de code, sont remplacés par une entrée [N non-text item(s) not shown], et le truncated du bloc de résultat d'outil vaut true. L'appel d'outil correspondant, avec la requête de recherche ou le code dans son input, est toujours renvoyé.
  • Les métadonnées de citation sur les blocs text, telles que les citations de sources sur une réponse qui s'appuie sur des résultats de recherche web, sont omises. Le texte lui-même est renvoyé, et le bloc porte truncated défini à true.

Les fichiers d'instructions de projet tels que CLAUDE.md apparaissent comme du contenu ordinaire de rôle utilisateur. Le contenu des skills apparaît lorsque le client l'envoie comme contenu de message et n'est pas distingué des autres textes utilisateur. Pour un résumé de la couverture, consultez la FAQ de la Compliance API ; pour un tableau comparant les sessions locales aux sessions distantes et à la journalisation OpenTelemetry, consultez l'introduction de cette page.

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
}

La réponse intègre une enveloppe session à côté du tableau data paginé. Le premier enregistrement de cet exemple est le marqueur qui remplace l'invite système de la requête ; sa provenance est décrite plus loin dans cette section. Sur ce point de terminaison, user.email_address vaut toujours null : le point de terminaison de messages ne résout pas les adresses e-mail, donc un null ici ne signifie pas que le compte de l'utilisateur a été supprimé. Pour attribuer une session à une adresse e-mail, faites la jointure de user.id avec le point de terminaison de liste ou le point de terminaison de récupération (GET /v1/compliance/apps/sessions/local/{session_id}).

Les messages sont renvoyés du plus ancien au plus récent par défaut ; passez order=desc pour inverser. La pagination utilise le même schéma page/next_page que le point de terminaison de liste, avec une valeur limit par défaut de 100 et un maximum de 1 000. Une page peut se terminer prématurément lorsque la réponse atteint sa limite de taille, donc une page contenant moins de limit messages ne signifie pas que vous avez atteint la fin ; continuez à paginer jusqu'à ce que next_page vaille null. Les curseurs de page sont liés à la session et à l'ordre de tri sous lesquels ils ont été émis, et les curseurs d'un parcours expirent 24 heures après sa première page : un curseur expiré renvoie 400 Bad Request vous indiquant de recommencer sans le paramètre page, et le parcours recommencé reflète la limite de rétention actuelle. Un curseur émis pour une session ou un order différent renvoie également 400, en tant que curseur invalide.

Chaque message porte un role (user ou assistant) et un tableau content de blocs text, tool_use et tool_result. Il porte également un model : sur un tour d'assistant capturé depuis la Claude API, il s'agit du modèle qui a servi le tour, et il vaut null sur les messages utilisateur et sur tout message d'assistant dont la provenance est définie, car l'historique affirmé par le client et les marqueurs synthétiques n'ont pas été produits par un modèle et le modèle ayant servi est inconnu pour le contenu indisponible. Un bloc text porte text et truncated. Un bloc tool_use porte id, name, input et truncated, où input est une chaîne encodée en JSON plutôt qu'un objet. Un bloc tool_result porte tool_use_id, name, is_error, un tableau content d'entrées text, et truncated. Les appels et résultats d'outils MCP, ainsi que la plupart des appels et résultats d'outils serveur, sont normalisés dans ces mêmes formes tool_use et tool_result ; tout autre type de bloc apparaît comme un espace réservé [<block type> content not shown]. Un id de message est stable tant que le tour est conservé. Chaque message reconstruit à partir du même appel d'inférence porte l'horodatage de cet appel, de sorte que des messages consécutifs partagent souvent une valeur created_at ; préservez l'ordre renvoyé plutôt que de retrier par horodatage.

Chaque message porte également un champ provenance décrivant comment son contenu a été capturé. provenance vaut null pour le contenu vérifié capturé par la Claude API, ce qui est le cas courant. Sinon, il s'agit d'un objet dont le type marque l'exception :

  • content_unavailable signifie que le contenu ne peut pas être renvoyé. Le tableau content est vide, et provenance.reason indique pourquoi. not_captured signifie qu'aucun contenu n'est disponible pour le tour. Cela ne prouve pas qu'aucun enregistrement n'a été stocké : le contenu que les politiques de traitement des données d'Anthropic retiennent hors de la Compliance API est signalé avec la même raison, tout comme les tours individuels au sein d'une session par ailleurs capturée qui sont indisponibles pour de telles raisons. Une clé gérée par le client inutilisable est la seule exception et renvoie 503 Service Unavailable à la place. client_aborted signifie que le client a fermé la connexion ou annulé la requête avant que la réponse ne soit terminée, de sorte que la réponse du tour n'a pas été capturée ; toute sortie partielle déjà envoyée en streaming au client n'est pas incluse, et cette raison s'applique uniquement aux tours de rôle assistant. cmek_key_revoked est réservé au contenu chiffré sous la clé gérée par le client de votre organisation lorsque cette clé est indisponible (par exemple, révoquée). Il n'est actuellement pas renvoyé, car une clé inutilisable produit un 503 à la place, mais gérez-le pour la compatibilité future. retention_elapsed signifie que le contenu a dépassé la rétention. oversize signifie qu'un message unique a dépassé la limite de taille par message ; le message est toujours renvoyé, avec un tableau content vide.
  • client_asserted marque les messages d'assistant que le client a fournis comme historique de conversation et qui n'ont pas pu être associés à une réponse capturée ; leur paternité n'est pas vérifiée.
  • synthetic_marker marque les enregistrements générés par le point de terminaison lui-même, tels que le marqueur qui remplace l'invite système. Lorsque le client réécrit ou compacte son historique de conversation en cours de session (par exemple, après une compaction du contexte), la transcription insère un message marqueur à cet endroit et continue avec le nouveau contenu envoyé par le client ; lorsque votre organisation a une période de rétention finie, l'historique réécrit lui-même est retenu (un second marqueur le signale) et seuls le dernier tour utilisateur et ce qui suit sont affichés.

Les messages marqueurs et affirmés par le client commencent par un bloc text explicatif entre crochets marqué truncated: true, par exemple [system prompt content not shown]. Traitez ces enregistrements comme présents mais indisponibles ou non vérifiés plutôt que manquants, et tolérez les types et raisons de provenance non reconnus.

Deux paramètres plafonnent le nombre d'octets renvoyés pour chaque bloc d'outil : tool_use_input_max_bytes et tool_result_max_bytes, tous deux valant 10 000 octets par défaut. Passez -1 pour le maximum du serveur (environ 1 Mio par chaîne) ; 0 renvoie 400 Bad Request, et les valeurs supérieures au maximum y sont ramenées. Une chaîne coupée par l'un ou l'autre plafond est coupée sur une frontière de caractère et se voit ajouter un suffixe dans la bande (par exemple, …[truncated; pass tool_result_max_bytes=-1 for the server max]), et son bloc porte "truncated": true. Un input de tool_use tronqué n'est donc plus du JSON valide, n'analysez donc les entrées d'outils qu'à partir de blocs non tronqués (ou relevez le plafond et récupérez à nouveau). Les blocs de type text sont toujours plafonnés au même maximum du serveur d'environ 1 Mio ; aucun paramètre ne le relève, et un bloc text atteignant la limite porte également "truncated": true.

Le contenu de la transcription respecte la période de rétention décrite sous Sessions sur les machines des utilisateurs. Lorsque le début d'une session l'a dépassée, la transcription commence par un unique espace réservé content_unavailable avec une reason de retention_elapsed, suivi des messages conservés. Lorsque tous les appels d'une session ont expiré, le point de terminaison de messages renvoie 404 Not Found, comme il le fait pour les sessions dans des organisations que votre clé ne peut pas lire, les sessions qui n'existent pas, et les sessions pour lesquelles la rétention zéro des données est en vigueur. Un identifiant de session mal formé renvoie 400 Bad Request.

Sessions dans le cloud (sessions distantes)

Les sessions Cowork démarrées sur claude.ai web ou mobile s'exécutent dans le cloud dans des environnements gérés par Anthropic. La Compliance API expose ces sessions distantes via deux points de terminaison : GET /v1/compliance/apps/sessions/remote liste les métadonnées des sessions, et GET /v1/compliance/apps/sessions/remote/{session_id}/messages renvoie la transcription d'une session. Les deux requièrent la portée read:compliance_user_data, et les deux sont décomptés de la limite de débit partagée de la Compliance API ainsi que d'un second budget de requêtes spécifique à ces points de terminaison ; consultez 429 Too Many Requests.

Le point de terminaison de liste a par défaut une portée à l'échelle de l'organisation : omettez organization_ids[] pour inclure chaque organisation claude.ai que votre clé peut lire, ou passez jusqu'à 500 valeurs pour restreindre la portée. Pour restreindre la liste à des utilisateurs spécifiques à la place, passez de 1 à 10 valeurs user_ids[] (obtenez les identifiants via Lister les utilisateurs de l'organisation) ; le filtre correspond à l'utilisateur propriétaire de la session, de sorte que les sessions appartenant à un agent sont exclues dès que user_ids[] est défini. Bornez les résultats dans le temps avec les paramètres de plage created_at (gte, gt, lt, lte, au format RFC 3339). Il n'y a pas de filtre updated_at. La requête suivante liste les sessions créées depuis une date donnée.

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"
}

Les résultats sont triés par ordre chronologique inverse (les plus récents en premier) selon created_at et plafonnés à limit résultats par réponse (100 par défaut, 500 au maximum). Le point de terminaison pagine avec les jetons page et next_page (consultez Paginer les résultats) : repassez la valeur next_page de la réponse comme paramètre de requête page lors de la requête suivante, et arrêtez-vous lorsque next_page vaut null.

Une session appartient soit à un utilisateur, soit à un agent, jamais aux deux. Pour les sessions appartenant à un utilisateur, user porte l'identifiant et l'adresse e-mail du propriétaire (email_address vaut null lorsque l'utilisateur n'est plus membre d'une organisation que votre clé peut lire) et agent_id vaut null. Pour les sessions appartenant à un agent (par exemple, les tâches planifiées), user vaut null, agent_id porte l'identifiant de l'agent (préfixe cagt_), et started_by_user identifie l'humain qui a lancé l'exécution, par exemple en démarrant une tâche planifiée ; sur les sessions appartenant à un utilisateur, started_by_user vaut null.

claude_project_id est l'identifiant du projet claude.ai auquel appartient la session (préfixe claude_proj_), ou null lorsque la session n'est pas dans un projet.

status est l'une des valeurs pending, active, paused, archived ou failed. Une session est pending pendant son provisionnement ; une session pending n'a pas encore de transcription, et le point de terminaison de messages renvoie 404 pour elle jusqu'à la fin du provisionnement. Les sessions qui ont été supprimées ne sont jamais renvoyées.

product_surface (chaîne ou null) identifie le produit qui a créé la session. Le point de terminaison ne renvoie actuellement que les sessions dont le product_surface vaut cowork_remote : les sessions Cowork démarrées sur claude.ai web ou mobile.

Récupérer la transcription d'une session distante

Le point de terminaison de messages renvoie la transcription de la session : prompts utilisateur, réponses de l'assistant, et appels d'outils et leurs résultats. Les blocs de réflexion et les images ne sont pas inclus. Pour un résumé de la couverture, consultez la FAQ de la Compliance API ; pour un tableau comparant les sessions distantes aux sessions locales et à la journalisation OpenTelemetry de Cowork, consultez l'introduction de cette page.

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
}

La réponse intègre une enveloppe session à côté du tableau data paginé. Sur ce point de terminaison, l'enveloppe a toujours user.email_address, started_by_user et claude_project_id définis à null ; obtenez ces valeurs depuis le point de terminaison de liste à la place.

Les messages sont renvoyés du plus ancien au plus récent par défaut ; passez order=desc pour inverser. La pagination utilise le même schéma page/next_page que le point de terminaison de liste, avec une valeur limit par défaut de 100 et un maximum de 1 000. Une page peut se terminer prématurément lorsque la réponse atteint sa limite de taille, donc une page contenant moins de limit messages ne signifie pas que vous avez atteint la fin ; continuez à paginer jusqu'à ce que next_page vaille null.

Chaque message porte un role (user ou assistant) et un tableau content de blocs text, tool_use et tool_result. Les valeurs created_at des messages sont des horodatages de validation : des messages consécutifs peuvent partager un horodatage ou s'inverser légèrement, préservez donc l'ordre renvoyé plutôt que de retrier par created_at. Sur les sessions appartenant à un agent, sent_by_user_id enregistre l'utilisateur qui a envoyé un message utilisateur donné lorsqu'il est attribuable ; il vaut null sinon, y compris sur tous les messages d'assistant. Lorsque le contenu d'un message ne peut pas du tout être renvoyé (par exemple, s'il dépasse les limites de taille), le message porte content_unavailable défini à true.

Deux paramètres plafonnent le nombre d'octets renvoyés pour chaque bloc d'outil : tool_use_input_max_bytes et tool_result_max_bytes, tous deux valant 10 000 octets par défaut. Passez -1 pour le maximum du serveur (environ 1 Mio par chaîne) ; 0 renvoie 400 Bad Request. Un bloc coupé par l'un ou l'autre plafond porte "truncated": true, et une entrée tool_use tronquée n'est plus du JSON valide, n'analysez donc les entrées d'outils qu'à partir de blocs non tronqués (ou relevez le plafond et récupérez à nouveau).

Le point de terminaison de messages renvoie 404 Not Found pour les sessions pending, les sessions qui n'existent pas ou ont été supprimées, et les sessions dans des organisations que votre clé ne peut pas lire.

Conservation et suppression

Les points de terminaison de session sont en lecture seule ; les sessions locales et distantes ne peuvent pas être supprimées via la Compliance API. Les transcriptions de sessions locales sont conservées pendant 6 ans par défaut, ou pendant la période de conservation des conversations personnalisée de votre organisation lorsqu'une période finie est définie, comme décrit dans la section Sessions sur les machines des utilisateurs. Les transcriptions de sessions distantes sont conservées pendant 6 ans. Pour comprendre comment ces périodes s'articulent avec les autres dispositions de conservation d'Anthropic, consultez API et conservation des données.

Étapes suivantes

Accédez au contenu des chats claude.ai, aux pièces jointes et aux projets avec la même Compliance Access Key.

Un résumé champ par champ de ce que contiennent les transcriptions de session, ainsi que d'autres questions fréquentes.

Les charges utiles d'erreur textuelles et la correction pour chacune d'elles.

Chemins des points de terminaison, paramètres et schémas de réponse pour la Compliance API.

Was this page helpful?