Gérer les erreurs de la Compliance API
Chaque message d'erreur de la Compliance API avec sa cause et sa correction, organisé par code de statut HTTP.
Cette page répertorie les messages de réponse que renvoie chaque point de terminaison documenté de la Compliance API, leur cause et leur correction.
La Compliance API renvoie les erreurs dans le format d'erreur Anthropic standard : 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": "authentication_error",
"message": "The API key provided is invalid or has been revoked."
}
}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.
Effectuez la correspondance sur error.type, et non sur la chaîne du message. Les messages sont suffisamment stables pour être copiés dans des runbooks, mais ils pourraient être reformulés au fil du temps ; les valeurs de type font partie du contrat de l'API. Les points de terminaison de sessions locales présentent quelques exceptions documentées où des réponses partageant un même type se distinguent 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 textuel et la correction.
| Statut | Réessayer ? | Quand |
|---|---|---|
| 400 Bad Request | Non | Corrigez la requête et renvoyez-la. |
| 401 Unauthorized | Non | Corrigez ou renouvelez la clé, puis renvoyez la requête. |
| 403 Forbidden | Non | Ajoutez la portée manquante ou utilisez le bon type de clé, puis renvoyez la requête. |
| 404 Not Found | Généralement non | La ressource a été supprimée ou n'a jamais existé ; retirez-la de votre file d'attente. Exceptions : sur les points de terminaison de sessions locales, le message Local sessions are not available. (renvoyé à chaque appel, y compris la liste) signifie que les points de terminaison sont actuellement indisponibles pour votre organisation parente, et non qu'une session a disparu ; conservez vos identifiants en file d'attente et consultez Session locale introuvable. Une session distante encore au statut pending renvoie 404 sur son point de terminaison de messages jusqu'à son démarrage ; consultez Session distante introuvable. |
| 409 Conflict | Non | La requête est 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 Requests | Oui, après retry-after | Attendez le nombre de secondes indiqué dans retry-after, puis réessayez ; ne faites pas avancer votre curseur. |
| 500 Internal Server Error | Dépend de x-should-retry | Vérifiez l'en-tête de réponse x-should-retry avant de réessayer. |
| 502, 503, 504, 529 | Oui, avec backoff | Transitoire ; réessayez avec un backoff exponentiel. Exception : certaines erreurs 503 de sessions locales ne sont pas transitoires. Consultez Sessions locales temporairement indisponibles. |
400 Bad Request
La requête était syntaxiquement valide mais contenait un paramètre que le serveur a rejeté. Corrigez le paramètre et réessayez.
Format d'horodatage invalide
Type : invalid_request_error
The `created_at.gte` parameter contains an invalid timestamp format. Timestamps must be provided in RFC 3339 format e.g., "2024-03-01T00:00:00Z". Got "2024-01-01".Cause : Une valeur created_at.* ou updated_at.* (.gte, .gt, .lte, .lt) n'a pas pu être analysée comme une date-heure. Le message nomme le paramètre en échec et reprend la valeur qui a été envoyée.
Correction : Envoyez un horodatage RFC 3339 complet incluant l'heure et le fuseau horaire, par exemple 2024-03-01T00:00:00Z ou 2024-03-01T00:00:00+00:00.
La liste des sessions locales (GET /v1/compliance/apps/sessions/local) renvoie également une erreur 400 invalid_request_error lorsque les deux bornes temporelles sont fournies et que created_at.lt n'est pas strictement postérieur à created_at.gte. Le corps indique :
created_at.lt must be strictly after created_at.gte.Envoyez un created_at.lt postérieur à created_at.gte, ou omettez l'une des bornes.
Limite invalide
Type : invalid_request_error
The limit parameter must be between 1 and 1000, inclusive. Got 1500.Cause : Le paramètre de requête limit était en dehors de la plage acceptée. La borne nommée dans le message reflète le maximum du point de terminaison spécifique qui a été appelé.
Correction : Envoyez un limit compris dans la plage acceptée par le point de terminaison. Chaque point de terminaison de liste possède sa propre plage limit ; consultez les contraintes de paramètres sur la page correspondante de la référence de la Compliance API.
Les points de terminaison de transcription de session (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), de sorte qu'une valeur telle que 0 renvoie la même erreur 400 invalid_request_error.
Identifiant de pagination invalide
Type : invalid_request_error
Invalid `after_id`. No activity found for `after_id` "activity_invalid123"Cause : Le curseur after_id ou before_id n'a pas pu être décodé comme un curseur opaque ni analysé comme un identifiant d'activité.
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 de has_more, lorsque next_page vaut null). Un jeton page mal formé renvoie la même erreur 400 invalid_request_error qu'un after_id ou before_id mal formé.
Les deux points de terminaison de sessions locales paginés (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 qui a été tronqué ou altéré 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, de sorte qu'un curseur émis pour une autre session ou un autre ordre de tri renvoie 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 sortis de la période de rétention entre-temps ne sont plus renvoyés (consultez Récupérer la transcription d'une session locale).
401 Unauthorized
L'en-tête x-api-key était manquant ou ne correspondait à aucune clé connue. Une clé valide avec les mauvaises portées renvoie 403 Forbidden à la place.
Clé API invalide
Type : authentication_error
The API key provided is invalid or has been revoked.Cause : La clé dans x-api-key n'existe pas, a été supprimée ou a été désactivée. Un en-tête x-api-key manquant ou vide renvoie le même corps ; vérifiez donc à la fois votre magasin de secrets et le statut de révocation de la clé.
Correction : Confirmez la valeur de la clé, vérifiez qu'elle n'a pas été supprimée dans claude.ai (Compliance Access Keys) ou dans la Claude Console (clés Admin API), et confirmez qu'elle est activée. Consultez Configurer la Compliance API.
403 Forbidden
La clé dans x-api-key est valide mais ne porte pas la portée requise par le point de terminaison. Le message textuel répertorie les portées que porte la clé (Got:) et les portées requises par le point de terminaison (Needed:), ce qui vous permet de confirmer ce que porte la clé sans revérifier dans la Claude Console ou claude.ai. Les portées d'une Compliance Access Key sont immuables après sa création ; chaque correction pour 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: ['read:compliance_activities']Cause : Une clé sans read:compliance_activities a été utilisée pour appeler GET /v1/compliance/activities. Deux chemins courants mènent à cette erreur :
- Une Compliance Access Key (
sk-ant-api01-...) a été créée sans la portéeread:compliance_activities. - Une clé Admin API de la Claude Console (
sk-ant-admin01-...) a été créée alors que la Compliance API n'était pas activée pour l'organisation. Les clés créées alors que la Compliance API n'était pas activée ne portent pas la portée ; consultez Configurer la Compliance API.
Correction : Les portées d'une Compliance Access Key sont immuables après sa création. Créez une nouvelle clé incluant 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 porte cette portée.
Portée insuffisante : données d'organisation
Type : permission_error
Missing required scopes. Got: ['read:compliance_user_data'] Needed: ['read:compliance_org_data']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 chemins courants mènent à cette erreur :
- Une Compliance Access Key (
sk-ant-api01-...) a été créée sans la portéeread:compliance_org_data. - Une clé Admin API de la Claude Console (
sk-ant-admin01-...) a été utilisée. Les clés Admin API ne portent queread:compliance_activitieset ne peuvent pas lire les métadonnées d'organisation.
Correction : Créez une nouvelle Compliance Access Key avec read:compliance_org_data sélectionné. 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: ['read:compliance_org_data']Cause : La portée read:compliance_org_settings a été retirée le 30 juin 2026. GET /v1/compliance/organizations/{organization_id}/settings requiert 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 ne porte que 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 avec read:compliance_org_data sélectionné, mettez à jour votre intégration pour l'utiliser, puis supprimez l'ancienne clé. Une clé qui porte 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: ['read:compliance_user_data']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 chemins courants mènent à cette erreur :
- Une Compliance Access Key (
sk-ant-api01-...) a été créée sans la portéeread:compliance_user_data. - Une clé Admin API de la Claude Console (
sk-ant-admin01-...) a été utilisée. Les clés Admin API ne portent queread:compliance_activitieset ne peuvent pas recevoirread: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 avec read:compliance_user_data sélectionné. 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 avec delete:compliance_user_data sélectionné. 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
Le point de terminaison a été résolu mais l'identifiant de ressource n'existe pas ou a déjà été supprimé. Les suppressions de la Compliance API sont immédiates et permanentes ; une erreur 404 sur un identifiant précédemment connu signifie donc généralement que le contenu a été supprimé définitivement via un appel de suppression de la Compliance API ou retiré par une politique de rétention. 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 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 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.
Chat introuvable
Type : not_found_error
Chat claude_chat_01H5CWunD7RpVJ5bHa8RCkja not found.Cause : L'identifiant de chat dans le chemin ne correspond à aucun chat lisible via la Compliance API. Le chat a peut-être été supprimé définitivement via un appel précédent à la Compliance API ou retiré 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 404 ; ils restent lisibles, avec deleted_at renseigné, mais sans le contenu de leurs messages.
Correction : Confirmez l'identifiant de chat par rapport à une activité récente claude_chat_created ou claude_chat_viewed. 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
No file found with provided id, or it has already been deleted.Cause : L'identifiant de fichier n'existe pas ou a été supprimé. Cette erreur s'applique à la fois aux fichiers joints à des chats (claude_file_...) et aux fichiers de projets.
Correction : Rapprochez avec les activités récentes claude_file_uploaded ou claude_file_deleted. Si le fichier a été supprimé, le binaire a disparu ; l'enregistrement d'activité reste dans le flux pendant la fenêtre de rétention de 6 ans.
Projet introuvable
Type : not_found_error
No project is found with the provided id.Cause : L'identifiant de projet n'existe pas ou a été supprimé.
Correction : Rapprochez avec les activités récentes claude_project_created ou claude_project_deleted. 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 provided id, or it has already been deleted.Cause : L'identifiant de document de projet n'existe pas ou a été supprimé. Cette erreur s'applique aux documents de projet textuels (claude_proj_doc_...), et non aux fichiers de projets.
Correction : Utilisez GET /v1/compliance/apps/projects/{project_id}/attachments pour répertorier les pièces jointes actuelles. Si le document est manquant, 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.
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 la Compliance API. Les deux points de terminaison renvoient ce message unique, sans distinguer la cause, lorsque l'identifiant n'est 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 rétention 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 qui s'applique à 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 404 jusqu'à son démarrage. Un identifiant de session qui n'est pas un identifiant clls_ bien formé renvoie 400 Bad Request à la place.
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 les distingue.
Correction : Confirmez l'identifiant de session par rapport à 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 rétention (ou la session n'est 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 et incluez 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 la Compliance API. 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 404 jusqu'au démarrage de la session. Un identifiant de session qui n'est pas un identifiant cse_ bien formé renvoie 400 Bad Request à la place.
Correction : Confirmez l'identifiant de session et son status par rapport à GET /v1/compliance/apps/sessions/remote ; consultez Sessions dans le cloud. Si la session est pending, réessayez après 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 dans le format d'erreur standard. Le message d'organisation nomme l'org_uuid ; les messages de rôle et de groupe 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 la Compliance API. 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 par rapport au point de terminaison de liste correspondant, et rapprochez 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 hierarchyCause : 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 de votre parent, 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 par rapport à Lister les organisations. Si un identifiant d'organisation réputé valide renvoie toujours 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 projet a des chats attachés
Type : conflict_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 attachés.
Correction : Répertoriez les chats du projet avec GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (le filtre project_ids[] requiert 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 vers la Compliance API sont limitées à 600 requêtes par minute par organisation parente. La limite est un budget unique partagé entre toutes les clés sous le parent (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 portent un second budget de requêtes en plus. 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 fois votre clé API authentifiée, les réponses de la Compliance API indiquent le budget partagé via les 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-limitest le budget de requêtes par minute.anthropic-ratelimit-requests-remainingest le budget restant dans la fenêtre actuelle.anthropic-ratelimit-requests-resetest l'horodatage RFC 3339 auquel la fenêtre se réinitialise et le budget complet est restauré.
Une réponse 429 porte é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 organisation Claude Console autonome) a envoyé plus de 600 requêtes vers /v1/compliance/* dans une fenêtre d'une minute, sur l'ensemble des clés qui partagent son budget, 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), repliez-vous sur un backoff exponentiel (commencez à 1 seconde, doublez jusqu'à 60 secondes). Ne faites pas avancer votre curseur de pagination sur une erreur 429 : la requête en échec n'a renvoyé aucune donnée, de sorte que le curseur de la dernière page réussie est toujours correct.
Les requêtes qui échouent à l'authentification (une clé manquante ou non reconnue, ou une clé Claude API plutôt qu'une Compliance Access Key ou une clé Admin API) sont rejetées avant le limiteur de débit et ne consomment pas de quota. Une clé valide qui ne possède pas 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 comptent que dans la limite partagée. Les points de terminaison de sessions distantes portent également un second budget de requêtes, rattaché à votre organisation parente comme la limite partagée, en plus de celle-ci. Une erreur 429 provenant de ce budget porte un en-tête retry-after qui vaut toujours 1 (une attente minimale, et non le moment réel de réinitialisation) ; les éventuels en-têtes anthropic-ratelimit-* de cette réponse décrivent la limite partagée plutôt que ce budget ; appliquez donc un backoff exponentiel si l'erreur 429 se répète.
Si vous interrogez l'Activity Feed selon un calendrier, budgétez votre débit de requêtes agrégé (sur l'ensemble des clés, des organisations liées et des workers concurrents) 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.
500 Internal Server Error
Une erreur 500 de la Compliance API porte un en-tête de réponse x-should-retry: false lorsque l'échec est déterministe. Les SDK Anthropic respectent automatiquement cet en-tête. Si vous utilisez une bibliothèque de nouvelles tentatives HTTP générique qui réessaie sur chaque erreur 5xx, supprimez 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 backoff exponentiel (commencez à 1 seconde, 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 de nouvelle tentative à 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 de sessions locales renvoient 503 avec l'un de ces corps. Les trois partagent le type overloaded_error ; il s'agit donc de l'une des rares erreurs de cette page pour lesquelles vous avez besoin du texte du message, et non de error.type, pour distinguer les conditions :
- Le corps
index is temporarily unavailablesignifie que les listes de sessions sont brièvement indisponibles en raison de la charge ou d'une condition du back-end. Ceci est transitoire. - Le corps
Captured contentsignifie que le contenu de la transcription d'une session ne peut pas être renvoyé pour le moment. Ceci est généralement transitoire également. Dans les organisations qui utilisent des clés de chiffrement gérées par le client, le point de terminaison de messages renvoie également ce corps pour chaque page contenant du contenu que votre clé ne peut pas déchiffrer, par exemple parce que vous avez désactivé, révoqué ou détruit la clé, ou parce que la clé est inaccessible. Dans ce cas, l'erreur persiste aussi longtemps que la clé ne peut pas être utilisée. Le texte du message est le même dans les deux cas ; le seul signal indiquant que la clé est la cause est donc que l'erreur continue de se reproduire pour cette organisation. Une clé inutilisable n'est jamais signalée commenot_captured. - Le corps
retention overridessignifie qu'un paramètre de rétention ou de traitement des données qui s'applique à une ou plusieurs sessions de la plage demandée n'a pas encore pu être évalué. Sur les points de terminaison de récupération et de messages, il indiquefor this sessionau lieu defor this page. Il dépend des données et des paramètres de l'organisation qui a exécuté la session plutôt que de la charge, et il peut persister pendant une période prolongée.
Correction : Traitez chaque corps comme suit :
- Pour les deux corps
Try again shortly., réessayez avec un backoff exponentiel et ne faites pas avancer votre curseurpage, car la requête en échec n'a renvoyé aucune donnée. - Si le corps
Captured contentcontinue de se reproduire sur le point de terminaison de messages pour une organisation qui utilise une clé gérée par le client, traitez-le comme persistant : arrêtez de parcourir les transcriptions de cette organisation et vérifiez le statut de la clé dans votre service de gestion de clés. Les transcriptions des autres organisations liées, et les métadonnées de session partout, ne sont pas affectées. Si vous réessayez lors d'une exécution ultérieure, recommencez le parcours de chaque session sanspage, car les curseurs de page de 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 qu'il se résorbe. Sur le point de terminaison de liste, soit réessayez plus tard en recommençant sans le paramètrepage(un jeton de page de liste de plus de 24 heures est toujours accepté mais est réévalué par rapport à la limite de rétention actuelle, de sorte qu'un parcours mis en attente peut ignorer des sessions), soit réduisez la fenêtrecreated_at.gteetcreated_at.ltjusqu'à ce que la requête réussisse et exportez la plage ignorée séparément lors d'une exécution ultérieure. Sur les points de terminaison de récupération et de messages, ignorez cet identifiant de session, poursuivez le reste de votre export et réessayez la session lors d'une exécution ultérieure. Les curseurs de page de messages expirent 24 heures après la première page du parcours ; recommencez donc le parcours de cette session sanspagelorsque vous y revenez.
Si l'une de ces conditions se reproduit d'une exécution à l'autre, contactez votre représentant Anthropic et incluez l'en-tête de réponse request-id. Pour le cas de la clé gérée par le client, ne le faites que si l'erreur persiste alors que votre clé est utilisable.
Pour les incidents à l'échelle du service, consultez status.anthropic.com.
Étapes suivantes
Questions courantes sur l'accès, les portées, la rétention et l'intégration.
Le catalogue d'erreurs à l'échelle de la plateforme et la sémantique de nouvelle tentative.
Was this page helpful?