Claude Platform Docs
AdministrationAPI Compliance

Gérer les erreurs de la Compliance API

Réponses d'erreur de l'API Compliance classées par code de statut HTTP, avec la cause et la correction pour chacune.

Cette page répertorie les réponses d'erreur courantes de l'API Compliance par code de statut HTTP, avec la cause et la correction pour chacune.

L'API Compliance renvoie les erreurs au format d'erreur standard d'Anthropic : un code de statut non-2xx, un en-tête de réponse request-id et un corps JSON avec un objet error contenant type et message. Incluez la valeur de l'en-tête request-id lorsque vous faites remonter un problème au support.

{
  "error": {
    "type": "permission_error",
    "message": "Missing required scopes. Got: ['read:compliance_activities'] Needed one of: ['read:compliance_user_data', 'read:org_audit']"
  }
}

Sur cette page, les sessions locales s'exécutent sur les machines des utilisateurs et les sessions distantes s'exécutent dans le cloud ; consultez Récupérer les transcriptions de sessions.

Basez-vous sur le code de statut HTTP et sur error.type, et non sur la chaîne du message. Les messages sont suffisamment stables pour être copiés dans des procédures opérationnelles, mais ils peuvent être reformulés au fil du temps ; les codes de statut et les valeurs de type font partie du contrat de l'API. Quelques réponses qui partagent un code de statut et un type se distinguent par un code d'erreur dans error.details.error_code lorsque la réponse en contient un, et sinon par leur message ; chacune est signalée là où elle s'applique.

Le tableau suivant vous indique d'un coup d'œil s'il faut réessayer. Chaque section qui suit présente le corps d'erreur exact et la correction.

StatutRéessayer ?Quand
400 Bad RequestNonCorrigez la requête, ou activez l'API Compliance si le message indique qu'elle n'est pas activée, puis renvoyez-la. Si error.details.error_code vaut transcript_page_read_limit_exceeded (le message indique qu'une page de la transcription d'une session est trop volumineuse pour être lue), ne renvoyez pas la même requête ; Page de transcription trop volumineuse indique quoi faire à la place.
401 UnauthorizedNonLa clé n'est pas reconnue, a été désactivée ou a expiré ; réactivez-la ou remplacez-la, puis renvoyez la requête.
403 ForbiddenNonAjoutez la portée manquante ou utilisez le bon type de clé, puis renvoyez la requête.
404 Not FoundGénéralement nonUn message qui nomme une ressource signifie qu'elle a été supprimée ou n'a jamais existé ; retirez-la de votre file d'attente. Le message seul Not found signifie que la requête ne s'est pas authentifiée (ou que le chemin n'existe pas), et non qu'une ressource a disparu ; consultez Requête non authentifiée. Les points de terminaison de sessions ajoutent deux autres cas : sur les points de terminaison de sessions locales, le message Local sessions are not available. (renvoyé à chaque appel, y compris pour la liste) signifie que les points de terminaison sont actuellement indisponibles pour votre organisation parente, et non qu'une session a disparu ; conservez vos ID en file d'attente et consultez Session locale introuvable. Une session distante encore au statut pending renvoie une erreur 404 sur son point de terminaison de messages jusqu'à son démarrage ; consultez Session distante introuvable.
409 ConflictNonLa requête entre en conflit avec l'état actuel de la ressource ; résolvez le conflit (par exemple en détachant les ressources enfants), puis réessayez.
429 Too Many RequestsOui, après retry-afterAttendez le nombre de secondes indiqué dans retry-after, puis réessayez ; n'avancez pas votre curseur.
500 Internal Server ErrorDépend de x-should-retryVérifiez l'en-tête de réponse x-should-retry avant de réessayer.
502, 503, 504, 529Oui, avec backoffTransitoire ; réessayez avec un backoff exponentiel. Exception : certaines erreurs 503 des sessions locales ne sont pas transitoires. Consultez Sessions locales temporairement indisponibles.

400 Bad Request

La requête était syntaxiquement valide, mais le serveur a rejeté un paramètre ou l'API Compliance n'est pas activée pour l'organisation. Corrigez la cause indiquée dans le message et renvoyez la requête. Une erreur 400 est différente : Page de transcription trop volumineuse, que le point de terminaison de messages des sessions locales peut renvoyer pour une page d'une très grande session même lorsque tous les paramètres sont valides ; son entrée indique quoi faire au lieu de renvoyer la requête.

API Compliance non activée

Type : invalid_request_error

Compliance API is not enabled for this organization

Cause : La clé est valide, mais l'API Compliance n'est pas activée pour l'organisation ou l'organisation parente à laquelle la clé appartient. Chaque point de terminaison renvoie cette réponse tant que l'API n'est pas activée, et de nouveau si un administrateur désactive l'API.

Correction : Activez l'API Compliance en suivant Configurer l'API Compliance, puis renvoyez la requête.

Paramètre de requête inconnu

Type : invalid_request_error

Unknown query parameter: 'created_at[gte]'. Did you mean 'created_at.gte'?

Cause : La requête incluait un paramètre de requête que le point de terminaison ne définit pas. L'API Compliance rejette les paramètres non reconnus au lieu de les ignorer. Le message nomme le paramètre et, pour les erreurs proches, comme la notation entre crochets à la place d'un point ou un suffixe [] manquant, suggère le nom défini.

Correction : Utilisez les noms de paramètres indiqués sur la page de référence de l'API Compliance du point de terminaison. Les filtres de plage utilisent la notation pointée (par exemple, created_at.gte), les filtres de tableau prennent un suffixe [] (par exemple, activity_types[]), et les paramètres de pagination sont after_id, before_id ou page, selon le point de terminaison.

Valeur de paramètre invalide

Type : invalid_request_error

limit: Input should be less than or equal to 1000
created_at.gte: Input should be a valid datetime or date, invalid character in year
activity_types[].0: Input is not one of the permitted values.

Cause : La valeur d'un paramètre de requête n'a pas passé la validation. Le message commence par le nom du paramètre (suivi de la position de l'élément pour un paramètre de type tableau), puis indique la contrainte non respectée. Trois cas courants sont présentés : une valeur limit supérieure au maximum du point de terminaison (le nombre dans le message correspond au maximum de ce point de terminaison), une valeur created_at.* ou updated_at.* qui ne peut pas être analysée comme une date ou un horodatage, et une valeur activity_types[] qui n'est pas un type d'activité pris en charge.

Correction : Corrigez le paramètre nommé dans le message. Chaque point de terminaison de liste possède sa propre plage limit. Consultez les contraintes de paramètres sur la page de référence de l'API Compliance correspondante. Envoyez les horodatages au format RFC 3339 avec un décalage UTC explicite, par exemple 2024-03-01T00:00:00Z ou 2024-03-01T00:00:00+00:00. La liste des sessions locales rejette un horodatage sans décalage (created_at.gte: Input should have timezone info). Pour les valeurs activity_types[] prises en charge, consultez Interroger les activités de conformité.

La liste des sessions locales (GET /v1/compliance/apps/sessions/local) renvoie également une erreur 400 invalid_request_error lorsque vous fournissez une borne inférieure (created_at.gte ou created_at.gt) et une borne supérieure (created_at.lt ou created_at.lte) et que la borne supérieure n'est pas postérieure à la borne inférieure. Des bornes égales ne sont autorisées que pour created_at.gte avec created_at.lte. Le message nomme les deux paramètres, par exemple :

created_at.lt must be strictly after created_at.gte.
created_at.lte must be at or after created_at.gte.

Envoyez une borne supérieure postérieure à la borne inférieure, ou omettez l'une des bornes.

Les points de terminaison de transcriptions de sessions (GET /v1/compliance/apps/sessions/local/{session_id}/messages et GET /v1/compliance/apps/sessions/remote/{session_id}/messages) valident leurs paramètres de troncature de la même manière : tool_use_input_max_bytes et tool_result_max_bytes acceptent chacun un nombre d'octets positif ou -1 (le maximum du serveur). Une valeur telle que 0 renvoie donc la même erreur 400 invalid_request_error.

Curseur de pagination invalide

Type : invalid_request_error

Invalid activity_id format: 'activity_invalid123'
Invalid pagination cursor for 'after_id'

Cause : Un « pagination cursor » (curseur de pagination) n'a pas pu être décodé. Sur l'Activity Feed, une valeur after_id ou before_id qui n'est ni un curseur émis par l'API ni un identifiant d'activité bien formé renvoie le premier corps, qui reprend la valeur envoyée. Sur les points de terminaison de chats et de messages de chat, une valeur after_id ou before_id qui ne peut pas être décodée renvoie le second corps, qui nomme le paramètre.

Correction : Traitez les curseurs de pagination comme des chaînes opaques. Copiez toujours la valeur first_id ou last_id renvoyée par la page précédente. Arrêtez-vous lorsque has_more vaut false. Ne construisez pas de curseurs à partir d'identifiants d'objets.

Les points de terminaison d'annuaire, de projets et de sessions (organisations, utilisateurs, rôles, permissions de rôles, groupes, membres de groupes, projets, pièces jointes de projets, sessions locales et distantes, et messages de sessions) paginent avec un jeton page opaque plutôt qu'avec after_id et before_id. Le même conseil s'applique : transmettez la valeur next_page de la réponse précédente sans la modifier, et arrêtez-vous lorsque has_more vaut false (ou, sur les points de terminaison de sessions, qui ne renvoient pas has_more, lorsque next_page vaut null). Un jeton page mal formé renvoie la même erreur 400 invalid_request_error qu'une valeur after_id ou before_id mal formée, avec un message propre au point de terminaison.

Les deux points de terminaison paginés de sessions locales (la liste et le point de terminaison de messages) renvoient l'erreur 400 invalid_request_error suivante pour toute valeur page qu'ils ne peuvent pas décoder, par exemple un jeton tronqué ou modifié après que vous l'avez stocké, ou un jeton émis par un autre point de terminaison ou sous une autre organisation parente. Sur le point de terminaison de messages de sessions locales (GET /v1/compliance/apps/sessions/local/{session_id}/messages), chaque curseur page est également lié à la session et à l'order pour lesquels il a été émis. Un curseur émis pour une autre session ou un autre ordre de tri renvoie donc le même corps :

The page parameter is not a valid cursor for this request.

Les curseurs du point de terminaison de messages expirent également 24 heures après le début du parcours (un passage à travers les pages). Un curseur expiré renvoie :

The page cursor has expired. Restart the walk without a page parameter; results will reflect the current retention boundary.

Pour le premier corps, renvoyez la valeur next_page non modifiée de la réponse précédente au point de terminaison et à la session qui l'ont émise. Pour un curseur expiré, recommencez sans paramètre page. Le nouveau parcours reflète la limite de rétention en vigueur au moment où il commence, de sorte que les messages qui ont dépassé la période de rétention entre-temps ne sont plus renvoyés (consultez Récupérer la transcription d'une session locale).

Page de transcription trop volumineuse

Type : invalid_request_error

Code d'erreur : transcript_page_read_limit_exceeded, renvoyé dans error.details.error_code

This page of the session's transcript is too large to read, and retrying will not help. If you are reading newest first (order=desc), read this session oldest first instead: omit the order and page parameters, then follow next_page.

Cause : GET /v1/compliance/apps/sessions/local/{session_id}/messages peut renvoyer cette erreur pour une page d'une très grande session. Seul ce point de terminaison renvoie cette erreur. Elle partage le type invalid_request_error avec les autres erreurs 400 ; identifiez-la donc par son code d'erreur, et non par le texte du message, qui pourrait être reformulé.

Correction : Ne réessayez pas la requête. Si elle utilisait order=desc, lisez plutôt cette session de la plus ancienne à la plus récente :

  • Recommencez le parcours de la session (un passage à travers ses pages ; consultez Récupérer la transcription d'une session locale) sans order (ou avec order=asc) et sans page, et suivez next_page jusqu'à ce qu'il vaille null. Les messages que vous avez déjà stockés lors de la lecture du plus récent au plus ancien conservent le même id, dédupliquez donc sur id.
  • Définissez le délai d'expiration des requêtes de votre client à au moins 5 minutes pour ce parcours.
  • Réduire limit n'est pas un moyen fiable d'éviter cette erreur.

Si une requête du plus ancien au plus récent renvoie cette erreur, ne la réessayez pas non plus. Conservez les pages que vous avez déjà lues, enregistrez la session comme incomplète, poursuivez le reste de votre export et contactez votre représentant Anthropic en fournissant l'en-tête de réponse request-id.

401 Unauthorized

La requête contenait une Compliance Access Key (sk-ant-api01-...) ou une clé Admin API (sk-ant-admin01-...) qui ne permet pas l'authentification. Une requête qui ne contient aucune clé, ou une clé d'un autre type, renvoie à la place une erreur 404 Not Found sur tous les points de terminaison sauf celui des paramètres d'organisation, et une clé valide avec les mauvaises portées renvoie une erreur 403 Forbidden.

Clé API invalide, désactivée ou expirée

Type : authentication_error

API key is invalid.
API key has been deactivated.
API key has expired.

Cause : API key is invalid. signifie que la valeur envoyée ne correspond à aucune clé utilisable, par exemple parce qu'elle a été tronquée ou modifiée lors de son stockage. API key has been deactivated. signifie que la clé a été désactivée ou supprimée. API key has expired. signifie que la date d'expiration d'une clé Admin API est dépassée. Les Compliance Access Keys ne sont pas créées avec une date d'expiration.

Correction : Pour API key is invalid., comparez la valeur envoyée par votre client au secret que vous avez stocké lors de la création de la clé ; le secret complet n'est affiché qu'une seule fois, donc si votre copie stockée est erronée, créez une nouvelle clé. Pour API key has been deactivated., réactivez la clé si elle a seulement été désactivée, dans claude.ai > Organization settings > API pour une Compliance Access Key ou sur la page Admin keys (platform.claude.com/settings/admin-keys) de la Claude Console pour une clé Admin API ; une clé supprimée ne peut pas être restaurée. Pour une clé supprimée ou expirée, créez une nouvelle clé et mettez à jour votre intégration pour l'utiliser, comme décrit dans Gérer et renouveler les clés.

403 Forbidden

La clé dans x-api-key est valide, mais ne possède aucune « scope » (portée) acceptée par le point de terminaison. Le message exact liste les portées que possède la clé (Got:) et les portées acceptées par le point de terminaison (Needed one of: sur les points de terminaison de lecture, où une seule des portées listées suffit, ou Needed: sur les points de terminaison de suppression). Vous pouvez ainsi confirmer ce que possède la clé sans revérifier la Claude Console ou claude.ai. Sur les points de terminaison de lecture, la liste des portées acceptées inclut également read:org_audit, une portée d'audit en lecture seule qui couvre tous les points de terminaison de lecture de l'API Compliance. Consultez Choisir les portées d'une clé Claude Enterprise. Les portées d'une Compliance Access Key sont immuables après sa création : chaque correction liée à une portée insuffisante vous invite donc à créer une nouvelle clé plutôt qu'à modifier la clé existante. Une organisation Claude Console autonome (sans organisation parente) ne peut pas créer de Compliance Access Key. Les corrections qui en nécessitent une ne s'appliquent donc pas à elle. Elle peut uniquement interroger l'Activity Feed.

Portée insuffisante : Activity Feed

Type : permission_error

Missing required scopes. Got: ['read:compliance_user_data'] Needed one of: ['read:compliance_activities', 'read:org_audit']

Cause : Une clé sans read:compliance_activities a été utilisée pour appeler GET /v1/compliance/activities. Deux situations courantes mènent à cette erreur :

  • Une Compliance Access Key (sk-ant-api01-...) a été créée sans la portée read:compliance_activities.
  • Une clé Admin API de la Claude Console (sk-ant-admin01-...) a été créée alors que l'API Compliance n'était pas activée pour l'organisation. Les clés créées alors que l'API Compliance n'était pas activée ne possèdent pas cette portée. Consultez Configurer l'API Compliance.

Correction : Les portées d'une Compliance Access Key sont immuables après sa création. Créez une nouvelle clé qui inclut read:compliance_activities, ou utilisez une clé Admin API de la Claude Console. Consultez De quelle clé avez-vous besoin ? pour connaître les conditions dans lesquelles une clé Admin API possède cette portée.

Portée insuffisante : données d'organisation

Type : permission_error

Missing required scopes. Got: ['read:compliance_user_data'] Needed one of: ['read:compliance_org_data', 'read:org_audit']

Cause : Une clé sans read:compliance_org_data a été utilisée pour appeler un point de terminaison d'organisations, de rôles, de groupes ou de paramètres effectifs. Deux situations courantes mènent à cette erreur :

  • Une Compliance Access Key (sk-ant-api01-...) a été créée sans la portée read:compliance_org_data.
  • Une clé Admin API de la Claude Console (sk-ant-admin01-...) a été utilisée. Les clés Admin API possèdent uniquement read:compliance_activities et ne peuvent pas lire les métadonnées d'organisation.

Correction : Créez une nouvelle Compliance Access Key en sélectionnant read:compliance_org_data. Les clés Admin API ne peuvent pas lire les métadonnées d'organisation. La Compliance Access Key est requise.

Portée retirée : paramètres d'organisation

Type : permission_error

Missing required scopes. Got: ['read:compliance_org_settings'] Needed one of: ['read:compliance_org_data', 'read:org_audit']

Cause : La portée read:compliance_org_settings a été retirée le 30 juin 2026. GET /v1/compliance/organizations/{organization_id}/settings nécessite désormais read:compliance_org_data, la même portée que les autres points de terminaison d'organisation, et la portée retirée n'autorise plus rien. Une Compliance Access Key qui possède uniquement read:compliance_org_settings renvoie cette erreur à chaque appel au point de terminaison des paramètres, même si la clé fonctionnait avant le retrait. La portée retirée ne peut plus être sélectionnée ni accordée lors de la création d'une clé.

Correction : Les portées d'une Compliance Access Key sont immuables après sa création. Créez une nouvelle Compliance Access Key en sélectionnant read:compliance_org_data, mettez à jour votre intégration pour l'utiliser, puis supprimez l'ancienne clé. Une clé qui possède déjà read:compliance_org_data n'est pas affectée par le retrait.

Portée insuffisante : données utilisateur

Type : permission_error

Missing required scopes. Got: ['read:compliance_activities'] Needed one of: ['read:compliance_user_data', 'read:org_audit']

Cause : Une clé sans read:compliance_user_data a été utilisée pour appeler un point de terminaison de chats, de messages, de fichiers, de projets, de sessions, d'utilisateurs d'organisation ou de membres de groupes. Deux situations courantes mènent à cette erreur :

  • Une Compliance Access Key (sk-ant-api01-...) a été créée sans la portée read:compliance_user_data.
  • Une clé Admin API de la Claude Console (sk-ant-admin01-...) a été utilisée. Les clés Admin API possèdent uniquement read:compliance_activities et ne peuvent pas recevoir read:compliance_user_data. Elles ne peuvent donc pas appeler les points de terminaison de chats, de fichiers, de projets, de pièces jointes de projets, de sessions, d'utilisateurs ou de membres de groupes.

Correction : Utilisez une Compliance Access Key créée dans claude.ai en sélectionnant read:compliance_user_data. Si la requête ne doit réellement concerner que l'Activity Feed, dirigez plutôt la clé Admin API vers GET /v1/compliance/activities.

Portée insuffisante : suppression

Type : permission_error

Missing required scopes. Got: ['read:compliance_user_data'] Needed: ['delete:compliance_user_data']

Cause : Une Compliance Access Key sans delete:compliance_user_data a été utilisée pour appeler un point de terminaison DELETE sur des chats, des fichiers ou des projets.

Correction : Créez une nouvelle Compliance Access Key en sélectionnant delete:compliance_user_data. La portée de suppression est distincte de read:compliance_user_data afin que les clés d'audit en lecture seule ne puissent pas supprimer de contenu.

404 Not Found

Une erreur 404 dont le message nomme une ressource ou un type de ressource signifie que l'identifiant dans le chemin n'existe pas ou a déjà été supprimé. Les suppressions de l'API Compliance sont immédiates et définitives. Une erreur 404 sur un identifiant précédemment connu signifie donc généralement que le contenu a disparu : supprimé définitivement par un appel de suppression de l'API Compliance, supprimé par une politique de rétention ou, pour les fichiers et les artefacts, supprimé avec leur chat par un utilisateur dans claude.ai. Une erreur 404 avec le message seul Not found est différente : la requête ne s'est pas authentifiée (ou le chemin n'existe pas), et n'importe quel point de terminaison peut la renvoyer, y compris les points de terminaison de liste. Consultez Requête non authentifiée. Les points de terminaison de sessions ajoutent deux cas. Sur les points de terminaison de sessions locales, un message 404 distinct, Local sessions are not available., est renvoyé à chaque appel (y compris pour la liste) tant que les points de terminaison sont indisponibles pour votre organisation parente. Il ne dépend pas de l'identifiant de session et peut être temporaire. Consultez Session locale introuvable. Sur les points de terminaison de sessions distantes, une session encore en cours de provisionnement (status à pending) n'a pas encore de transcription : son point de terminaison de messages renvoie donc une erreur 404 jusqu'au démarrage de la session. Consultez Session distante introuvable. Les chaînes de type d'activité citées dans chaque correction (par exemple, claude_chat_created) sont des valeurs que vous pouvez transmettre au filtre activity_types[] de l'Activity Feed. Consultez Interroger les activités de conformité pour connaître toutes les valeurs prises en charge.

Requête non authentifiée

Type : not_found_error

Not found

Cause : La requête ne contenait pas d'identifiant accepté par l'API Compliance : aucune clé API n'a été envoyée, ou la clé n'est ni une Compliance Access Key (sk-ant-api01-...) ni une clé Admin API (sk-ant-admin01-...), par exemple une clé Claude API (sk-ant-api03-...). Le statut, le type et le message sont identiques à ceux d'un chemin inexistant et ne dépendent ni du point de terminaison ni d'un identifiant de ressource. Les points de terminaison de liste tels que GET /v1/compliance/activities renvoient donc également ce corps. La seule exception est GET /v1/compliance/organizations/{organization_id}/settings, qui répond à ces requêtes par une erreur 401 authentication_error. Sur tous les points de terminaison, une Compliance Access Key ou une clé Admin API qui ne permet pas l'authentification renvoie à la place une erreur 401 Unauthorized.

Correction : Envoyez la clé dans l'en-tête x-api-key et vérifiez son préfixe : l'API Compliance accepte uniquement les clés sk-ant-api01-... et sk-ant-admin01-.... Consultez De quelle clé avez-vous besoin ?. Si l'en-tête et la clé sont corrects et qu'un chemin renvoie toujours Not found alors que d'autres réussissent, vérifiez ce chemin dans la référence de l'API Compliance.

Chat introuvable

Type : not_found_error

Chat conversation not found: 'claude_chat_01H5CWunD7RpVJ5bHa8RCkja'

Cause : L'identifiant de chat dans le chemin ne correspond à aucun chat lisible via l'API Compliance. Le chat a peut-être été supprimé définitivement par un appel précédent à l'API Compliance ou supprimé par la politique de rétention de votre organisation, ou il appartient peut-être à une organisation que la clé appelante ne peut pas lire. Les chats qu'un utilisateur a supprimés dans claude.ai ne renvoient pas d'erreur 404 : ils restent lisibles, avec deleted_at renseigné, mais sans le contenu de leurs messages.

Correction : Vérifiez l'identifiant du chat à l'aide d'une activité claude_chat_created ou claude_chat_viewed récente. Si l'activité est récente et que la lecture échoue toujours, le chat a été supprimé définitivement (via cette API ou par expiration de la politique de rétention) ou appartient à une organisation hors de la portée de votre clé.

Fichier introuvable

Type : not_found_error

File not found: 0d3b8f72-6c1e-4a59-b2de-7f4c9a1e5b60

Cause : L'identifiant de fichier n'existe pas dans une organisation que votre clé peut lire, ou le fichier a été supprimé. La suppression d'un chat dans claude.ai supprime également les fichiers qui y sont joints, bien que le chat lui-même reste listé. Le message identifie le fichier par son UUID sous-jacent plutôt que par l'identifiant claude_file_... envoyé dans la requête. Les points de terminaison de métadonnées, de contenu et de suppression renvoient ce corps. Il s'applique à la fois aux fichiers joints aux chats (claude_file_...) et aux fichiers de projets.

Correction : Effectuez un rapprochement avec les activités claude_file_uploaded ou claude_file_deleted récentes. Les fichiers supprimés avec un chat n'ont pas d'activité claude_file_deleted : vérifiez donc également l'activité claude_chat_deleted du chat. Si le fichier a été supprimé, le binaire a disparu. Les enregistrements d'activité restent dans le flux pendant la période de rétention de 6 ans.

Fichier généré ou artefact introuvable

Type : not_found_error

Generated file not found: 'claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX'
Generated file content not found: 'claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX'
Artifact version not found: 'claude_artifact_version_01KmNpQrSt3UvWxYz5AbCdEfG'

Cause : L'identifiant dans le chemin ne correspond à aucun fichier généré par un outil ni à aucune version d'artefact lisible via l'API Compliance. Le point de terminaison de métadonnées des fichiers générés renvoie le premier corps, le point de terminaison de contenu renvoie le deuxième, et les deux points de terminaison d'artefacts renvoient le troisième. Les fichiers générés et les artefacts sont supprimés avec le chat dans lequel ils ont été créés, y compris lorsqu'un utilisateur supprime le chat dans claude.ai.

Correction : Utilisez Obtenir les messages d'un chat pour retrouver le chat dont provient l'identifiant. Si le champ deleted_at du chat est renseigné, ou si une activité claude_chat_deleted nomme le chat, le contenu a disparu. Retirez l'identifiant de votre file d'attente. Sinon, vérifiez l'identifiant à l'aide des tableaux generated_files et artifacts des messages du chat.

Projet introuvable

Type : not_found_error

No project is found with the provided id.
No project found with provided id, or it has already been deleted.

Cause : L'identifiant de projet n'existe pas ou a été supprimé. Les points de terminaison de détails du projet, de pièces jointes et de collaborateurs renvoient le premier corps. DELETE /v1/compliance/apps/projects/{project_id} renvoie le second.

Correction : Effectuez un rapprochement avec les activités claude_project_created ou claude_project_deleted récentes. L'Activity Feed continue d'exposer les événements du cycle de vie du projet même après la disparition du projet lui-même.

Document de projet introuvable

Type : not_found_error

No project document found with the provided id.
No project document found with the provided id, or it has already been deleted.

Cause : L'identifiant du document de projet n'existe pas ou a été supprimé. Les points de terminaison de contenu et de métadonnées du document renvoient le premier corps. DELETE /v1/compliance/apps/projects/documents/{document_id} renvoie le second. Cette erreur s'applique aux documents de projet textuels (claude_proj_doc_...), et non aux fichiers de projet.

Correction : Utilisez GET /v1/compliance/apps/projects/{project_id}/attachments pour lister les pièces jointes actuelles. Si le document est absent, il a été supprimé. Récupérez-le via un enregistrement d'activité claude_project_document_uploaded si vous n'avez besoin que des métadonnées. L'enregistrement d'activité indique qui a téléversé le document, quand et dans quel projet, mais pas son nom.

Session locale introuvable

Type : not_found_error

Local session not found.

Cause : L'identifiant de session transmis à GET /v1/compliance/apps/sessions/local/{session_id} ou à GET /v1/compliance/apps/sessions/local/{session_id}/messages ne correspond à aucune session locale lisible via l'API Compliance. Les deux points de terminaison renvoient ce même message, sans distinguer la cause, lorsque l'identifiant ne correspond pas à une session d'une organisation que votre clé peut lire (y compris les identifiants appartenant à une autre organisation parente), lorsque la session n'a jamais existé, lorsque la conservation zéro des données est en vigueur pour la session, ou lorsque toute l'activité de la session a dépassé la période de rétention applicable à l'organisation qui l'a exécutée. La réponse Local session not found. n'a pas de forme transitoire, car les sessions locales n'ont pas d'état de provisionnement (pending). Comparez avec Session distante introuvable, où une session pending renvoie une erreur 404 jusqu'à son démarrage. Un identifiant de session qui n'est pas un identifiant clls_ bien formé renvoie à la place une erreur 400 Bad Request.

Les points de terminaison de sessions locales, y compris le point de terminaison de liste, renvoient un message 404 différent, Local sessions are not available., tant que les points de terminaison eux-mêmes sont indisponibles pour votre organisation parente. Cette réponse ne dépend pas de l'identifiant de session. Aucune clé, portée ou paramètre côté client ne la modifie, et elle peut être temporaire. Les deux réponses portent le type not_found_error. C'est le texte du message qui permet de les distinguer.

Correction : Vérifiez l'identifiant de session à l'aide de GET /v1/compliance/apps/sessions/local. Consultez Sessions sur les machines des utilisateurs. Si la session n'apparaît plus dans la liste, son contenu a dépassé la période de rétention (ou la session ne se trouve plus, pour une autre raison, dans une organisation que votre clé peut lire) et sa transcription n'est pas récupérable. Retirez l'identifiant de votre file d'attente. Si chaque appel, y compris la liste, renvoie Local sessions are not available., conservez vos identifiants de session en file d'attente et réessayez lors de votre prochaine exécution planifiée. Si la réponse persiste, contactez votre représentant Anthropic en incluant l'en-tête de réponse request-id.

Session distante introuvable

Type : not_found_error

Remote session not found.

Cause : L'identifiant de session transmis à GET /v1/compliance/apps/sessions/remote/{session_id}/messages ne correspond à aucune transcription de session lisible via l'API Compliance. Cela se produit lorsque l'identifiant de session (cse_...) n'existe pas ou que la session a été supprimée, lorsque la session appartient à une organisation que votre clé ne peut pas lire, ou lorsque le status de la session est encore pending : une session en attente n'a pas encore de transcription, de sorte que le point de terminaison de messages renvoie une erreur 404 jusqu'au démarrage de la session. Un identifiant de session qui n'est pas un identifiant cse_ bien formé renvoie à la place une erreur 400 Bad Request.

Correction : Vérifiez l'identifiant de session et son status à l'aide de GET /v1/compliance/apps/sessions/remote. Consultez Sessions dans le cloud. Si la session est pending, réessayez une fois qu'elle a quitté ce statut. Si la session n'apparaît plus dans la liste, elle a été supprimée et sa transcription n'est pas récupérable.

Organisation, rôle ou groupe introuvable

Type : not_found_error

The "ce86b5f3-7c16-48b3-a9f3-e1d2c4b8a0f1" organization does not exist or the requester is not authorized to access it.

Les points de terminaison d'organisations, de rôles et de groupes renvoient une erreur 404 not_found_error au format d'erreur standard. Le message relatif à l'organisation nomme l'org_uuid. Les messages relatifs aux rôles et aux groupes sont génériques (Role not found., Group not found.). Cela se produit lorsqu'un identifiant de chemin (org_uuid, role_id ou group_id) n'existe pas ou n'appartient plus à une arborescence que la clé appelante peut lire.

Cause : L'identifiant dans le chemin ne correspond à aucun enregistrement lisible via l'API Compliance. Les rôles et les groupes peuvent être supprimés, et les organisations peuvent être dissociées de l'arborescence parente.

Correction : Vérifiez l'identifiant à l'aide du point de terminaison de liste correspondant, et effectuez un rapprochement avec les activités récentes d'organisation, de rôle ou de groupe dans l'Activity Feed.

Paramètres d'organisation non disponibles

Type : not_found_error

organization `91012d09-e48b-438e-a489-1bebfd8fa6f9` not found in this organization's hierarchy

Cause : GET /v1/compliance/organizations/{organization_id}/settings renvoie cette erreur 404 dans trois cas qui partagent intentionnellement le même corps, afin que la réponse ne révèle pas si une organisation existe : l'organization_id ne fait pas partie des organisations liées à votre organisation parente, la valeur n'est pas un UUID valide, ou le point de terminaison des paramètres n'est pas encore activé pour votre organisation parente.

Correction : Vérifiez l'identifiant à l'aide de Lister les organisations. Si un identifiant d'organisation dont vous êtes sûr renvoie toujours une erreur 404, le point de terminaison des paramètres n'est pas encore activé pour votre organisation parente. Contactez votre représentant Anthropic.

409 Conflict

La requête est bien formée et autorisée, mais entre en conflit avec l'état actuel de la ressource. Le corps porte le type invalid_request_error, également utilisé par les réponses 400 : distinguez donc un conflit par le code de statut 409 plutôt que par error.type.

Le projet a des chats associés

Type : invalid_request_error

The "claude_proj_01KGp4eZNug9ri4kE35RSppq" project cannot be deleted as it has chats attached to it. Delete or detach all chats, and try deleting the project again.

Cause : DELETE /v1/compliance/apps/projects/{project_id} a été appelé sur un projet auquel des chats sont encore associés.

Correction : Listez les chats du projet avec GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (le filtre project_ids[] nécessite au moins une valeur user_ids[]. Énumérez les identifiants via Lister les utilisateurs de l'organisation), supprimez chacun d'eux avec DELETE /v1/compliance/apps/chats/{claude_chat_id}, puis réessayez la suppression du projet.

429 Too Many Requests

Les requêtes adressées à l'API Compliance sont limitées à 600 requêtes par minute par organisation parente. Cette limite constitue un budget unique partagé entre toutes les clés de l'organisation parente (les Compliance Access Keys et les clés Admin API de toutes les organisations liées) et entre tous les points de terminaison /v1/compliance/* ; les points de terminaison de sessions distantes sont en outre soumis à un second budget de requêtes. Pour une organisation Claude Console autonome, qui n'a pas d'organisation parente, le même budget s'applique à l'organisation elle-même et est partagé entre ses clés Admin API. Contactez votre représentant Anthropic si votre intégration nécessite une limite plus élevée.

Une erreur 429 est différente : sur une session très volumineuse, le point de terminaison des messages de sessions locales peut renvoyer Serveur occupé à lire des transcriptions volumineuses, qui n'est ni une « rate limit » (limite de débit) ni une limite imposée à votre organisation. Son entrée, à la fin de cette section, explique comment l'identifier et quoi faire.

Une fois votre clé API authentifiée, les réponses de l'API Compliance indiquent le budget partagé au moyen des en-têtes de réponse de limite de débit standard, afin que votre client puisse réguler son débit de manière proactive au lieu d'attendre une erreur 429 :

  • anthropic-ratelimit-requests-limit est le budget de requêtes par minute.
  • anthropic-ratelimit-requests-remaining est le budget restant dans la fenêtre actuelle.
  • anthropic-ratelimit-requests-reset est l'horodatage RFC 3339 auquel la fenêtre est réinitialisée et le budget complet restauré.

Une réponse 429 comporte également un en-tête retry-after indiquant le nombre de secondes à attendre avant d'envoyer la requête suivante. Cette valeur peut inclure une petite marge de sécurité au-delà de anthropic-ratelimit-requests-reset ; respectez retry-after.

HTTP/1.1 429 Too Many Requests
date: Tue, 21 Apr 2026 14:38:02 GMT
retry-after: 25
anthropic-ratelimit-requests-limit: 600
anthropic-ratelimit-requests-remaining: 0
anthropic-ratelimit-requests-reset: 2026-04-21T14:38:25Z
{
  "error": {
    "type": "rate_limit_error",
    "message": "Compliance API rate limit of 600 requests per minute per parent organization has been exceeded. Retry after the time indicated by the retry-after header. Quote the request-id response header when contacting Anthropic support."
  }
}

Cause : Votre organisation parente (ou votre organisation Claude Console autonome) a envoyé plus de 600 requêtes à /v1/compliance/* dans une fenêtre d'une minute, toutes clés partageant son budget confondues, ou elle a épuisé le second budget de requêtes des points de terminaison de sessions distantes (décrit plus loin dans cette section).

Correction : Attendez le nombre de secondes indiqué dans l'en-tête retry-after, puis réessayez. Si l'en-tête est absent (par exemple, supprimé par un intermédiaire), utilisez à la place un « exponential backoff » (délai d'attente exponentiel) : commencez à 1 seconde et doublez jusqu'à 60 secondes. N'avancez pas votre curseur de pagination en cas d'erreur 429 : la requête échouée n'a renvoyé aucune donnée, donc le curseur de la dernière page réussie reste correct.

Les requêtes dont l'authentification échoue (clé manquante ou non reconnue, ou clé Claude API au lieu d'une Compliance Access Key ou d'une clé Admin API) sont rejetées avant le limiteur de débit et ne consomment pas de quota. Une clé valide à laquelle il manque la portée requise par le point de terminaison consomme une unité de quota avant que l'erreur 403 ne soit renvoyée.

Les points de terminaison de sessions locales ne sont décomptés que de la limite partagée. Les points de terminaison de sessions distantes sont en outre soumis à un second budget de requêtes, rattaché à votre organisation parente comme la limite partagée, qui s'ajoute à celle-ci. Une erreur 429 provenant de ce budget comporte un en-tête retry-after toujours égal à 1 (un délai d'attente minimal, et non le véritable moment de réinitialisation) ; les éventuels en-têtes anthropic-ratelimit-* de cette réponse décrivent la limite partagée et non ce budget, donc appliquez un délai d'attente exponentiel si l'erreur 429 se répète. L'une des erreurs 429 ne provient d'aucun budget de requêtes : Serveur occupé à lire des transcriptions volumineuses, que seul le point de terminaison des messages de sessions locales renvoie.

Si vous interrogez l'Activity Feed selon un calendrier, maintenez votre débit de requêtes global (toutes clés, organisations liées et workers concurrents confondus) en dessous de la limite partagée. Surveillez anthropic-ratelimit-requests-remaining pour ralentir avant de l'atteindre. Consultez Concevoir votre intégration de conformité pour choisir entre l'interrogation par fenêtre et l'ingestion pilotée par curseur.

Serveur occupé à lire des transcriptions volumineuses

Type : rate_limit_error

Code d'erreur : transcript_read_server_busy, renvoyé dans error.details.error_code

Too many large session transcripts are being read at once. This is not a limit on your organization. Retry this request after the number of seconds in the retry-after header.

Cause : GET /v1/compliance/apps/sessions/local/{session_id}/messages peut renvoyer cette erreur 429 pour une page d'une session très volumineuse. Seul ce point de terminaison renvoie cette erreur, et elle peut survenir avec l'une ou l'autre valeur de order. Il ne s'agit ni d'une limite de débit ni d'une limite imposée à votre organisation : cela ne signifie pas que vous avez dépassé la limite partagée ou tout autre budget de requêtes. Cette erreur partage le code de statut 429 et le type rate_limit_error avec les réponses de limite de débit ; identifiez-la donc par son code d'erreur, et non par le texte du message, qui pourrait être reformulé.

Correction : Attendez le nombre de secondes indiqué dans l'en-tête retry-after, puis renvoyez la même requête, sans modification : conservez la même valeur de page, ou aucune si la requête n'en avait pas. Si la nouvelle tentative renvoie à nouveau cette erreur, attendez et réessayez de la même manière. Si l'en-tête retry-after est absent, utilisez à la place un délai d'attente exponentiel (commencez à 1 seconde et doublez jusqu'à 60 secondes). Si cette erreur se reproduit d'une exécution à l'autre, contactez votre représentant Anthropic en indiquant l'en-tête de réponse request-id.

500 Internal Server Error

Une erreur 500 de l'API Compliance comporte un en-tête de réponse x-should-retry: false lorsque l'échec est déterministe. Le SDK Claude respecte automatiquement cet en-tête. Si vous utilisez une bibliothèque HTTP générique de nouvelles tentatives qui réessaie sur chaque erreur 5xx, désactivez les nouvelles tentatives lorsque x-should-retry vaut false ; réessayer cette erreur échoue de manière identique à chaque tentative.

Une erreur 500 sans l'en-tête x-should-retry: false est transitoire : réessayez avec un délai d'attente exponentiel (commencez à 1 seconde et doublez jusqu'à 60 secondes). Il en va de même pour les réponses 502, 503, 504 et 529. L'exception est un petit ensemble d'erreurs 503 de sessions locales, décrites ci-après, qui dépendent des paramètres ou de la clé de chiffrement d'une organisation plutôt que de la charge. Consultez Erreurs pour la sémantique des nouvelles tentatives à l'échelle de la plateforme.

Sessions locales temporairement indisponibles

Type : overloaded_error

The local-sessions index is temporarily unavailable. Try again shortly.
Captured content is temporarily unavailable. Try again shortly.
The local-sessions index cannot currently evaluate retention overrides for this page. Try again later.

Cause : Les points de terminaison des sessions locales renvoient une erreur 503 avec l'un de ces corps. Les trois partagent le type overloaded_error. C'est donc l'une des rares erreurs de cette page pour lesquelles vous devez utiliser le texte du message, et non error.type, pour distinguer les conditions :

  • Le corps index is temporarily unavailable signifie que les listes de sessions sont brièvement indisponibles en raison de la charge ou d'une condition du backend. Cette situation est transitoire.
  • Le corps Captured content signifie que le contenu de la transcription d'une session ne peut pas être renvoyé pour le moment. Cette situation est généralement transitoire elle aussi. Dans les organisations qui utilisent des « customer-managed encryption keys » (clés de chiffrement gérées par le client), le point de terminaison des messages renvoie également ce corps pour chaque page dont votre clé gérée par le client ne peut pas déchiffrer le contenu. C'est le cas, par exemple, si vous avez désactivé, révoqué ou détruit la clé, ou si la clé est inaccessible. L'erreur persiste alors tant que la clé ne peut pas être utilisée. Le texte du message est identique dans les deux cas. Le seul signal indiquant que la clé est en cause est donc la répétition de l'erreur pour cette organisation. Une clé inutilisable n'est jamais signalée comme not_captured.
  • Le corps retention overrides signifie qu'un paramètre de rétention ou de traitement des données n'a pas encore pu être évalué. Ce paramètre s'applique à une ou plusieurs sessions de la plage demandée. Sur les points de terminaison de récupération et de messages, le corps indique for this session au lieu de for this page. Cette condition dépend des données et des paramètres de l'organisation qui a exécuté la session, et non de la charge. Elle peut persister pendant une période prolongée.

Solution : Traitez chaque corps comme suit :

  • Pour les deux corps Try again shortly., réessayez avec un « exponential backoff » (délai d'attente exponentiel). N'avancez pas votre curseur page, car la requête ayant échoué n'a renvoyé aucune donnée.

  • Si le corps Captured content se répète sur le point de terminaison des messages pour une organisation qui utilise une clé gérée par le client, considérez l'erreur comme persistante. Arrêtez le parcours des transcriptions de cette organisation et vérifiez l'état de la clé dans votre service de gestion des clés. Les transcriptions des autres organisations liées ne sont pas affectées, pas plus que les métadonnées des sessions, quelle que soit l'organisation. Si vous réessayez lors d'une exécution ultérieure, recommencez le parcours de chaque session sans page. En effet, les curseurs de page des messages expirent 24 heures après la première page du parcours.

  • Pour le corps Try again later., ne maintenez pas un parcours ouvert en attendant que la condition disparaisse. Sur le point de terminaison de liste, deux options s'offrent à vous :

    • Réessayez plus tard en recommençant sans le paramètre page. Un jeton de page de liste datant de plus de 24 heures est toujours accepté, mais il est réévalué par rapport à la limite de rétention actuelle. Un parcours mis en attente peut donc ignorer des sessions.
    • Réduisez la fenêtre created_at jusqu'à ce que la requête réussisse, puis exportez séparément la plage ignorée lors d'une exécution ultérieure.

    Sur les points de terminaison de récupération et de messages, ignorez cet identifiant de session et poursuivez le reste de votre export. Réessayez ensuite la session lors d'une exécution ultérieure. Les curseurs de page des messages expirent 24 heures après la première page du parcours. Recommencez donc le parcours de cette session sans page lorsque vous y revenez.

Si l'une de ces conditions se reproduit d'une exécution à l'autre, contactez votre représentant Anthropic en indiquant l'en-tête de réponse request-id. Dans le cas d'une clé gérée par le client, ne le faites que si l'erreur persiste alors que cette clé est utilisable.

Pour les incidents affectant l'ensemble du service, consultez status.anthropic.com.

Prochaines étapes

Questions fréquentes sur l'accès, les portées, la rétention et l'intégration.

Le catalogue des erreurs de l'ensemble de la plateforme et la sémantique des nouvelles tentatives.

Was this page helpful?