Claude Platform Docs

Обработка ошибок Compliance API

Ответы Compliance API с ошибками, сгруппированные по кодам состояния HTTP, с причиной и способом устранения для каждого из них.

На этой странице перечислены распространённые ответы Compliance API с ошибками, сгруппированные по кодам состояния HTTP, с причиной и способом исправления для каждого.

Compliance API возвращает ошибки в стандартном формате ошибок Anthropic: код состояния, отличный от 2xx, заголовок ответа request-id и тело JSON с объектом error, содержащим type и message. При обращении в службу поддержки указывайте значение заголовка request-id.

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

На этой странице локальные сессии выполняются на компьютерах пользователей, а удалённые сессии — в облаке; см. Получение стенограмм сеансов.

Ориентируйтесь на код состояния HTTP и error.type, а не на строку сообщения. Сообщения достаточно стабильны, чтобы копировать их в регламенты (runbooks), но со временем их формулировки могут меняться; коды состояния и значения типа являются частью контракта API. Несколько ответов с одинаковыми кодом состояния и типом различаются по коду ошибки в error.details.error_code, если ответ его содержит, а в противном случае — по сообщению; каждый такой случай отмечен там, где он применим.

Следующая таблица позволяет с первого взгляда понять, нужно ли повторять запрос. В каждом из последующих разделов приведено дословное тело ошибки и способ исправления.

СтатусПовторять?Когда
400 Bad RequestНетИсправьте запрос или включите Compliance API, если в сообщении сказано, что он не включён, затем отправьте запрос повторно. Если error.details.error_code равен transcript_page_read_limit_exceeded (в сообщении сказано, что страница расшифровки сессии слишком велика для чтения), не отправляйте тот же запрос повторно; что делать вместо этого, описано в разделе Страница расшифровки слишком велика.
401 UnauthorizedНетКлюч не распознан, деактивирован или срок его действия истёк; повторно включите или замените его, затем отправьте запрос повторно.
403 ForbiddenНетДобавьте недостающую область действия (scope) или используйте правильный тип ключа, затем отправьте запрос повторно.
404 Not FoundОбычно нетСообщение, в котором назван ресурс, означает, что он был удалён или никогда не существовал; удалите его из своей очереди. Простое сообщение Not found означает, что запрос не прошёл аутентификацию (или путь не существует), а не то, что ресурс исчез; см. Запрос не аутентифицирован. Конечные точки сессий добавляют ещё два случая: на конечных точках локальных сессий сообщение Local sessions are not available. (возвращаемое при каждом вызове, включая список) означает, что конечные точки в данный момент недоступны для вашей родительской организации, а не то, что сессия исчезла; сохраните идентификаторы в очереди и см. Локальная сессия не найдена. Удалённая сессия, всё ещё находящаяся в статусе pending, возвращает 404 на своей конечной точке сообщений, пока не запустится; см. Удалённая сессия не найдена.
409 ConflictНетЗапрос конфликтует с текущим состоянием ресурса; устраните конфликт (например, отсоедините дочерние ресурсы), затем повторите запрос.
429 Too Many RequestsДа, после retry-afterПодождите указанное в retry-after количество секунд, затем повторите запрос; не продвигайте курсор.
500 Internal Server ErrorЗависит от x-should-retryПеред повтором проверьте заголовок ответа x-should-retry.
502, 503, 504, 529Да, с задержкойВременная ошибка; повторяйте с экспоненциальной задержкой. Исключение: некоторые ошибки 503 локальных сессий не являются временными. См. Локальные сеансы временно недоступны.

400 Bad Request

Запрос был синтаксически корректным, но сервер отклонил параметр, или Compliance API не включён для организации. Устраните причину, указанную в сообщении, и отправьте запрос повторно. Одна ошибка 400 отличается от остальных: Страница расшифровки слишком велика — её может вернуть конечная точка сообщений локальной сессии для страницы очень большой сессии, даже если все параметры корректны; в её описании сказано, что делать вместо повторной отправки.

Compliance API не включён

Тип: invalid_request_error

Compliance API is not enabled for this organization

Причина: Ключ действителен, но Compliance API не включён для организации или родительской организации, которой принадлежит ключ. Каждая конечная точка возвращает этот ответ до тех пор, пока API не будет включён, а также снова, если администратор отключит API.

Решение: Включите Compliance API, следуя инструкциям в разделе Настройка Compliance API, затем отправьте запрос повторно.

Неизвестный параметр запроса

Тип: invalid_request_error

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

Причина: Запрос содержал параметр запроса, который не определён для конечной точки; Compliance API отклоняет нераспознанные параметры, а не игнорирует их. В сообщении указывается имя параметра, а для близких промахов, таких как скобочная нотация вместо точки или отсутствующий суффикс [], предлагается определённое имя.

Решение: Используйте имена параметров, указанные на странице справочника Compliance API для соответствующей конечной точки. Фильтры диапазонов используют точечную нотацию (например, created_at.gte), фильтры-массивы принимают суффикс [] (например, activity_types[]), а параметрами пагинации являются after_id, before_id или page в зависимости от конечной точки.

Недопустимое значение параметра

Тип: 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.

Причина: Значение параметра запроса не прошло проверку. Сообщение начинается с имени параметра (за которым для параметра-массива следует позиция элемента), затем указывается нарушенное ограничение. Показаны три распространённых случая: значение limit, превышающее максимум конечной точки (число в сообщении — это максимум данной конечной точки), значение created_at.* или updated_at.*, которое невозможно разобрать как дату или метку времени, и значение activity_types[], не являющееся поддерживаемым типом активности.

Решение: Исправьте параметр, указанный в сообщении. У каждой конечной точки списка свой диапазон limit; см. ограничения параметров на соответствующей странице справочника Compliance API. Отправляйте метки времени в формате RFC 3339 с явным смещением UTC, например 2024-03-01T00:00:00Z или 2024-03-01T00:00:00+00:00; список локальных сессий отклоняет метку времени без смещения (created_at.gte: Input should have timezone info). Поддерживаемые значения activity_types[] см. в разделе Запрос активностей соответствия.

Список локальных сессий (GET /v1/compliance/apps/sessions/local) также возвращает 400 invalid_request_error, если вы указываете нижнюю границу (created_at.gte или created_at.gt) и верхнюю границу (created_at.lt или created_at.lte), а верхняя граница не позже нижней. Равные границы допускаются только для created_at.gte вместе с created_at.lte. В сообщении указываются оба параметра, например:

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

Укажите верхнюю границу позже нижней или опустите одну из границ.

Конечные точки расшифровок сессий (GET /v1/compliance/apps/sessions/local/{session_id}/messages и GET /v1/compliance/apps/sessions/remote/{session_id}/messages) проверяют свои параметры усечения таким же образом: tool_use_input_max_bytes и tool_result_max_bytes принимают положительное количество байтов или -1 (максимум сервера), поэтому такое значение, как 0, возвращает ту же ошибку 400 invalid_request_error.

Недопустимый курсор пагинации

Тип: invalid_request_error

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

Причина: Не удалось декодировать «pagination cursor» (курсор пагинации). В Activity Feed значение after_id или before_id, которое не является ни курсором, выданным API, ни корректно сформированным идентификатором активности, возвращает первое тело, в котором повторяется отправленное значение. На конечных точках чатов и сообщений чатов значение after_id или before_id, которое невозможно декодировать, возвращает второе тело, в котором указано имя параметра.

Решение: Рассматривайте курсоры пагинации как непрозрачные строки. Всегда копируйте значение first_id или last_id, возвращённое предыдущей страницей; останавливайтесь, когда has_more равно false. Не формируйте курсоры из идентификаторов объектов.

Конечные точки каталога, проектов и сессий (организации, пользователи, роли, разрешения ролей, группы, участники групп, проекты, вложения проектов, локальные и удалённые сессии, а также сообщения сессий) используют для пагинации непрозрачный токен page вместо after_id и before_id. Применяется тот же совет: передавайте значение next_page из предыдущего ответа без изменений и останавливайтесь, когда has_more равно false (или, на конечных точках сессий, которые не возвращают has_more, когда next_page равно null). Некорректно сформированный токен page возвращает ту же ошибку 400 invalid_request_error, что и некорректные after_id или before_id, с сообщением, специфичным для конечной точки.

Две конечные точки локальных сессий с пагинацией (список и конечная точка сообщений) возвращают следующую ошибку 400 invalid_request_error для любого значения page, которое они не могут декодировать, например для токена, который был усечён или изменён после сохранения, или токена, выданного другой конечной точкой или в рамках другой родительской организации. На конечной точке сообщений локальной сессии (GET /v1/compliance/apps/sessions/local/{session_id}/messages) каждый курсор page также привязан к сессии и порядку order, для которых он был выдан, поэтому курсор, выданный для другой сессии или другого порядка сортировки, возвращает то же тело:

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

Курсоры на конечной точке сообщений также истекают через 24 часа после начала обхода (одного прохода по страницам). Истёкший курсор возвращает:

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

В случае первого тела повторно отправьте неизменённое значение next_page из предыдущего ответа той конечной точке и для той сессии, которые его выдали. В случае истёкшего курсора начните заново без параметра page; новый обход отражает границу хранения, действующую на момент его начала, поэтому сообщения, которые за это время вышли за пределы периода хранения, больше не возвращаются (см. Получение расшифровки локальной сессии).

Страница расшифровки слишком велика

Тип: invalid_request_error

Код ошибки: transcript_page_read_limit_exceeded, возвращается в 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.

Причина: GET /v1/compliance/apps/sessions/local/{session_id}/messages может вернуть эту ошибку для страницы очень большой сессии. Эту ошибку возвращает только данная конечная точка. Она имеет тот же тип invalid_request_error, что и другие ошибки 400, поэтому определяйте её по коду ошибки, а не по тексту сообщения, формулировка которого может измениться.

Решение: Не повторяйте запрос. Если в нём использовался order=desc, вместо этого читайте сессию начиная с самых старых сообщений:

  • Начните обход сессии заново (один проход по её страницам; см. Получение стенограммы локального сеанса) без order (или с order=asc) и без page и следуйте по next_page, пока оно не станет null. Сообщения, которые вы уже сохранили при чтении от новых к старым, сохраняют тот же id, поэтому устраняйте дубликаты по id.
  • Установите тайм-аут запроса вашего клиента не менее 5 минут для этого обхода.
  • Уменьшение limit не является надёжным способом избежать этой ошибки.

Если эту ошибку возвращает запрос с чтением от старых к новым, его также не повторяйте. Сохраните уже прочитанные страницы, отметьте сессию как неполную, продолжите остальную часть экспорта и свяжитесь с вашим представителем Anthropic, указав заголовок ответа request-id.

401 Unauthorized

Запрос содержал Compliance Access Key (sk-ant-api01-...) или ключ Admin API (sk-ant-admin01-...), который не проходит аутентификацию. Запрос без ключа или с ключом другого типа вместо этого возвращает 404 Not Found на всех конечных точках, кроме настроек организации, а действительный ключ с неправильными областями действия возвращает 403 Forbidden.

Недействительный, деактивированный или истёкший ключ API

Тип: authentication_error

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

Причина: API key is invalid. означает, что отправленное значение не соответствует пригодному для использования ключу, например потому, что оно было усечено или изменено при сохранении. API key has been deactivated. означает, что ключ был отключён или удалён. API key has expired. означает, что дата истечения срока действия ключа Admin API прошла; Compliance Access Keys создаются без такой даты.

Решение: Для API key is invalid. сравните значение, которое отправляет ваш клиент, с секретом, сохранённым при создании ключа; полный секрет отображается только один раз, поэтому если ваша сохранённая копия неверна, создайте новый ключ. Для API key has been deactivated. повторно включите ключ, если он был только отключён: в claude.ai > Organization settings > API для Compliance Access Key или на странице Admin keys (platform.claude.com/settings/admin-keys) в Claude Console для ключа Admin API; удалённый ключ восстановить невозможно. Для удалённого или истёкшего ключа создайте новый ключ и обновите интеграцию для его использования, как описано в разделе Управление ключами и их ротация.

403 Forbidden

Ключ в x-api-key действителен, но не имеет «scope» (области действия), которую принимает конечная точка. В дословном сообщении перечислены области действия, которые есть у ключа (Got:), и области действия, которые принимает конечная точка (Needed one of: на конечных точках чтения, где достаточно любой одной из перечисленных областей, или Needed: на конечных точках удаления), поэтому вы можете проверить, что есть у ключа, не заглядывая повторно в Claude Console или claude.ai. На конечных точках чтения список принимаемых областей также включает read:org_audit — область аудита только для чтения, которая охватывает все конечные точки чтения Compliance API; см. Выбор областей действия для ключа Claude Enterprise. Области действия Compliance Access Key неизменяемы после создания, поэтому каждое решение проблемы недостаточной области действия предписывает создать новый ключ, а не редактировать существующий. Автономная организация Claude Console (без родительской организации) не может создать Compliance Access Key, поэтому решения, требующие такого ключа, к ней не применимы; она может запрашивать только Activity Feed.

Недостаточная область действия: Activity Feed

Тип: permission_error

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

Причина: Для вызова GET /v1/compliance/activities использовался ключ без read:compliance_activities. Есть два распространённых пути к этой ошибке:

  • Compliance Access Key (sk-ant-api01-...) был создан без области действия read:compliance_activities.
  • Ключ Admin API Claude Console (sk-ant-admin01-...) был создан, когда Compliance API не был включён для организации. Ключи, созданные, когда Compliance API не был включён, не имеют этой области действия; см. Настройка Compliance API.

Решение: Области действия Compliance Access Key неизменяемы после создания. Создайте новый ключ, включающий read:compliance_activities, или используйте ключ Admin API Claude Console. Условия, при которых ключ Admin API имеет эту область действия, см. в разделе Какой ключ вам нужен?.

Недостаточная область действия: данные организации

Тип: permission_error

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

Причина: Для вызова конечной точки организаций, ролей, групп или действующих настроек использовался ключ без read:compliance_org_data. Есть два распространённых пути к этой ошибке:

  • Compliance Access Key (sk-ant-api01-...) был создан без области действия read:compliance_org_data.
  • Использовался ключ Admin API Claude Console (sk-ant-admin01-...). Ключи Admin API имеют только read:compliance_activities и не могут читать метаданные организации.

Решение: Создайте новый Compliance Access Key с выбранной областью read:compliance_org_data. Ключи Admin API не могут читать метаданные организации; требуется Compliance Access Key.

Выведенная из использования область действия: настройки организации

Тип: permission_error

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

Причина: Область действия read:compliance_org_settings была выведена из использования 30 июня 2026 года. GET /v1/compliance/organizations/{organization_id}/settings теперь требует read:compliance_org_data — ту же область действия, что и другие конечные точки организаций, а выведенная из использования область больше ничего не разрешает. Compliance Access Key, имеющий только read:compliance_org_settings, возвращает эту ошибку при каждом вызове конечной точки настроек, даже если ключ работал до вывода области из использования. Выведенную из использования область больше нельзя выбрать или предоставить при создании ключа.

Решение: Области действия Compliance Access Key неизменяемы после создания. Создайте новый Compliance Access Key с выбранной областью read:compliance_org_data, обновите интеграцию для его использования, затем удалите старый ключ. Ключ, у которого уже есть read:compliance_org_data, не затронут выводом области из использования.

Недостаточная область действия: данные пользователей

Тип: permission_error

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

Причина: Для вызова конечной точки чатов, сообщений, файлов, проектов, сессий, пользователей организации или участников групп использовался ключ без read:compliance_user_data. Есть два распространённых пути к этой ошибке:

  • Compliance Access Key (sk-ant-api01-...) был создан без области действия read:compliance_user_data.
  • Использовался ключ Admin API Claude Console (sk-ant-admin01-...). Ключи Admin API имеют только read:compliance_activities, и им нельзя предоставить read:compliance_user_data, поэтому они не могут вызывать конечные точки чатов, файлов, проектов, вложений проектов, сессий, пользователей или участников групп.

Решение: Используйте Compliance Access Key, созданный в claude.ai с выбранной областью read:compliance_user_data. Если запрос действительно должен касаться только Activity Feed, направьте ключ Admin API на GET /v1/compliance/activities.

Недостаточная область действия: удаление

Тип: permission_error

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

Причина: Для вызова конечной точки DELETE для чатов, файлов или проектов использовался Compliance Access Key без delete:compliance_user_data.

Решение: Создайте новый Compliance Access Key с выбранной областью delete:compliance_user_data. Область действия удаления отделена от read:compliance_user_data, чтобы ключи аудита только для чтения не могли удалять содержимое.

404 Not Found

Ошибка 404, в сообщении которой назван ресурс или тип ресурса, означает, что идентификатор в пути не существует или уже был удалён. Удаления через Compliance API выполняются немедленно и безвозвратно, поэтому 404 для ранее известного идентификатора обычно означает, что содержимое исчезло: оно было окончательно удалено вызовом удаления Compliance API, удалено «retention policy» (политикой хранения) или, в случае файлов и артефактов, удалено вместе со своим чатом пользователем в claude.ai. Ошибка 404 с простым сообщением Not found — другое дело: запрос не прошёл аутентификацию (или путь не существует), и её может вернуть любая конечная точка, включая конечные точки списков; см. Запрос не аутентифицирован. Конечные точки сессий добавляют два случая. На конечных точках локальных сессий отдельное сообщение 404, Local sessions are not available., возвращается при каждом вызове (включая список), пока конечные точки недоступны для вашей родительской организации; оно не зависит от идентификатора сессии и может быть временным. См. Локальная сессия не найдена. На конечных точках удалённых сессий у сессии, которая ещё подготавливается (status равен pending), пока нет расшифровки, поэтому её конечная точка сообщений возвращает 404, пока сессия не запустится. См. Удалённая сессия не найдена. Строки типов активности, упоминаемые в каждом решении (например, claude_chat_created), — это значения, которые можно передать в фильтр activity_types[] Activity Feed; все поддерживаемые значения см. в разделе Запрос активностей соответствия.

Запрос не аутентифицирован

Тип: not_found_error

Not found

Причина: Запрос не содержал учётных данных, которые принимает Compliance API: ключ API не был отправлен, или ключ не является Compliance Access Key (sk-ant-api01-...) или ключом Admin API (sk-ant-admin01-...), например это ключ Claude API (sk-ant-api03-...). Статус, тип и сообщение такие же, как для несуществующего пути, и не зависят от конечной точки или какого-либо идентификатора ресурса, поэтому конечные точки списков, такие как GET /v1/compliance/activities, тоже возвращают это тело. Единственное исключение — GET /v1/compliance/organizations/{organization_id}/settings, которая отвечает на такие запросы ошибкой 401 authentication_error. На всех конечных точках Compliance Access Key или ключ Admin API, не прошедший аутентификацию, вместо этого возвращает 401 Unauthorized.

Решение: Отправляйте ключ в заголовке x-api-key и проверьте его префикс: Compliance API принимает только ключи sk-ant-api01-... и sk-ant-admin01-...; см. Какой ключ вам нужен?. Если заголовок и ключ верны, а один путь по-прежнему возвращает Not found, тогда как другие работают, сверьте этот путь со справочником Compliance API.

Чат не найден

Тип: not_found_error

Chat conversation not found: 'claude_chat_01H5CWunD7RpVJ5bHa8RCkja'

Причина: Идентификатор чата в пути не соответствует чату, доступному для чтения через Compliance API. Чат мог быть окончательно удалён предыдущим вызовом Compliance API или удалён политикой хранения вашей организации, либо он может принадлежать организации, которую вызывающий ключ не может читать. Чаты, удалённые пользователем в claude.ai, не возвращают 404; они остаются доступными для чтения с заполненным полем deleted_at, но без содержимого сообщений.

Решение: Сверьте идентификатор чата с недавней активностью claude_chat_created или claude_chat_viewed. Если активность недавняя, а чтение по-прежнему не удаётся, чат был окончательно удалён (через этот API или по истечении срока политики хранения) или принадлежит организации за пределами области действия вашего ключа.

Файл не найден

Тип: not_found_error

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

Причина: Идентификатор файла не существует в организации, которую может читать ваш ключ, или файл был удалён. Удаление чата в claude.ai также удаляет прикреплённые к нему файлы, хотя сам чат остаётся в списке. В сообщении файл идентифицируется по его базовому UUID, а не по идентификатору claude_file_..., отправленному в запросе. Это тело возвращают конечные точки метаданных, содержимого и удаления; оно применяется как к файлам, прикреплённым к чатам (claude_file_...), так и к файлам проектов.

Решение: Сверьтесь с недавними активностями claude_file_uploaded или claude_file_deleted. У файлов, удалённых вместе с чатом, нет активности claude_file_deleted, поэтому также проверьте наличие активности claude_chat_deleted для чата. Если файл был удалён, двоичные данные утрачены; записи активности остаются в ленте в течение 6-летнего периода хранения.

Сгенерированный файл или артефакт не найден

Тип: 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'

Причина: Идентификатор в пути не соответствует сгенерированному инструментом файлу или версии артефакта, доступным для чтения через Compliance API. Конечная точка метаданных сгенерированного файла возвращает первое тело, конечная точка содержимого — второе, а обе конечные точки артефактов — третье. Сгенерированные файлы и артефакты удаляются вместе с чатом, в котором они были созданы, в том числе когда пользователь удаляет чат в claude.ai.

Решение: Используйте Получение сообщений чата, чтобы найти чат, из которого получен идентификатор. Если поле deleted_at чата заполнено или активность claude_chat_deleted указывает на этот чат, содержимое утрачено; удалите идентификатор из своей очереди. В противном случае сверьте идентификатор с массивами generated_files и artifacts в сообщениях чата.

Проект не найден

Тип: not_found_error

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

Причина: Идентификатор проекта не существует или проект был удалён. Конечные точки сведений о проекте, вложений и соавторов возвращают первое тело; DELETE /v1/compliance/apps/projects/{project_id} возвращает второе.

Решение: Сверьтесь с недавними активностями claude_project_created или claude_project_deleted. Activity Feed продолжает отображать события жизненного цикла проекта даже после того, как сам проект исчез.

Документ проекта не найден

Тип: 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.

Причина: Идентификатор документа проекта не существует или документ был удалён. Конечные точки содержимого и метаданных документа возвращают первое тело; DELETE /v1/compliance/apps/projects/documents/{document_id} возвращает второе. Эта ошибка относится к текстовым документам проекта (claude_proj_doc_...), а не к файлам проекта.

Решение: Используйте GET /v1/compliance/apps/projects/{project_id}/attachments, чтобы получить список текущих вложений. Если документ отсутствует, он был удалён; если вам нужны только метаданные, получите их из записи активности claude_project_document_uploaded. Запись активности показывает, кто загрузил документ, когда и в какой проект, но не его имя.

Локальная сессия не найдена

Тип: not_found_error

Local session not found.

Причина: Идентификатор сессии, переданный в GET /v1/compliance/apps/sessions/local/{session_id} или GET /v1/compliance/apps/sessions/local/{session_id}/messages, не соответствует локальной сессии, доступной для чтения через Compliance API. Обе конечные точки возвращают это единственное сообщение, не различая причину, когда идентификатор не является сессией в организации, которую может читать ваш ключ (включая идентификаторы, принадлежащие другой родительской организации), когда сессия никогда не существовала, когда для сессии действует нулевое хранение данных или когда вся активность сессии вышла за пределы периода хранения, применимого к организации, в которой она выполнялась. Ответ Local session not found. не имеет временной формы, поскольку у локальных сессий нет состояния подготовки (pending); сравните с разделом Удалённая сессия не найдена, где сессия в статусе pending возвращает 404, пока не запустится. Идентификатор сессии, не являющийся корректно сформированным идентификатором clls_, вместо этого возвращает 400 Bad Request.

Конечные точки локальных сессий, включая конечную точку списка, возвращают другое сообщение 404, Local sessions are not available., пока сами конечные точки недоступны для вашей родительской организации. Этот ответ не зависит от идентификатора сессии; никакой ключ, область действия или настройка на стороне клиента его не меняют, и он может быть временным. Оба ответа имеют тип not_found_error; различить их позволяет текст сообщения.

Решение: Сверьте идентификатор сессии с GET /v1/compliance/apps/sessions/local; см. Сессии на компьютерах пользователей. Если сессия больше не отображается в списке, её содержимое вышло за пределы периода хранения (или сессия по иной причине больше не находится в организации, которую может читать ваш ключ), и её расшифровку получить невозможно; удалите идентификатор из своей очереди. Если каждый вызов, включая список, возвращает Local sessions are not available., сохраните идентификаторы сессий в очереди и повторите попытку при следующем плановом запуске; если ответ сохраняется, свяжитесь со своим представителем Anthropic и укажите заголовок ответа request-id.

Удалённая сессия не найдена

Тип: not_found_error

Remote session not found.

Причина: Идентификатор сессии, переданный в GET /v1/compliance/apps/sessions/remote/{session_id}/messages, не соответствует расшифровке сессии, доступной для чтения через Compliance API. Это происходит, когда идентификатор сессии (cse_...) не существует или сессия была удалена, когда сессия принадлежит организации, которую ваш ключ не может читать, или когда status сессии всё ещё pending: у ожидающей сессии пока нет расшифровки, поэтому конечная точка сообщений возвращает 404, пока сессия не запустится. Идентификатор сессии, не являющийся корректно сформированным идентификатором cse_, вместо этого возвращает 400 Bad Request.

Решение: Сверьте идентификатор сессии и её status с GET /v1/compliance/apps/sessions/remote; см. Сессии в облаке. Если сессия находится в статусе pending, повторите попытку после выхода из этого статуса. Если сессия больше не отображается в списке, она была удалена, и её расшифровку получить невозможно.

Организация, роль или группа не найдена

Тип: not_found_error

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

Конечные точки организаций, ролей и групп возвращают 404 not_found_error в стандартном формате ошибок. В сообщении для организации указывается org_uuid; сообщения для ролей и групп общие (Role not found., Group not found.). Это происходит, когда идентификатор в пути (org_uuid, role_id или group_id) не существует или больше не принадлежит дереву, которое может читать вызывающий ключ.

Причина: Идентификатор в пути не соответствует записи, доступной для чтения через Compliance API. Роли и группы могут быть удалены, а организации могут быть отвязаны от родительского дерева.

Решение: Проверьте идентификатор по соответствующей конечной точке списка и сверьтесь с недавними активностями организаций, ролей или групп в Activity Feed.

Настройки организации недоступны

Тип: not_found_error

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

Причина: GET /v1/compliance/organizations/{organization_id}/settings возвращает эту ошибку 404 в трёх случаях, которые намеренно имеют одинаковое тело, чтобы ответ не раскрывал, существует ли организация: organization_id не является одной из связанных организаций вашей родительской организации, значение не является допустимым UUID или конечная точка настроек ещё не включена для вашей родительской организации.

Решение: Проверьте идентификатор с помощью Получения списка организаций. Если заведомо правильный идентификатор организации по-прежнему возвращает 404, конечная точка настроек ещё не включена для вашей родительской организации; свяжитесь со своим представителем Anthropic.

409 Conflict

Запрос корректно сформирован и авторизован, но конфликтует с текущим состоянием ресурса. Тело имеет тип invalid_request_error, который также используется в ответах 400, поэтому распознавайте конфликт по коду состояния 409, а не по error.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.

Причина: DELETE /v1/compliance/apps/projects/{project_id} был вызван для проекта, к которому всё ещё прикреплены чаты.

Решение: Получите список чатов проекта с помощью GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (фильтр project_ids[] требует хотя бы одного значения user_ids[]; перечислите идентификаторы с помощью Получения списка пользователей организации), удалите каждый из них с помощью DELETE /v1/compliance/apps/chats/{claude_chat_id}, а затем повторите удаление проекта.

429 Too Many Requests

Запросы к Compliance API ограничены 600 запросами в минуту на родительскую организацию. Это ограничение представляет собой единый бюджет, общий для всех ключей родительской организации (Compliance Access Keys и ключей Admin API всех связанных организаций) и для всех конечных точек /v1/compliance/*; конечные точки удалённых сессий дополнительно имеют второй бюджет запросов. Для автономной организации Claude Console, у которой нет родительской организации, тот же бюджет применяется к самой организации и является общим для её ключей Admin API. Свяжитесь с вашим представителем Anthropic, если вашей интеграции требуется более высокое ограничение.

Один вариант ошибки 429 отличается от остальных: для очень большой сессии конечная точка сообщений локальных сессий может вернуть Сервер занят чтением больших расшифровок, что не является ограничением скорости и не является ограничением для вашей организации. Его описание в конце этого раздела объясняет, как его распознать и что делать.

После успешной аутентификации вашего ключа API ответы Compliance API сообщают об общем бюджете через стандартные заголовки ответа об ограничении скорости, чтобы ваш клиент мог заранее снижать частоту запросов, а не ждать ошибки 429:

  • anthropic-ratelimit-requests-limit — бюджет запросов в минуту.
  • anthropic-ratelimit-requests-remaining — оставшийся бюджет в текущем окне.
  • anthropic-ratelimit-requests-reset — временная метка в формате RFC 3339, когда окно сбрасывается и полный бюджет восстанавливается.

Ответ 429 также содержит заголовок retry-after с количеством секунд, которое нужно подождать перед отправкой следующего запроса. Это значение может включать небольшой запас сверх anthropic-ratelimit-requests-reset; соблюдайте 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."
  }
}

Причина: Ваша родительская организация (или автономная организация Claude Console) отправила более 600 запросов к /v1/compliance/* за 1-минутное окно со всех ключей, разделяющих её бюджет, или исчерпала второй бюджет запросов конечных точек удалённых сессий (описан далее в этом разделе).

Решение: Подождите количество секунд, указанное в заголовке retry-after, затем повторите запрос. Если заголовок отсутствует (например, удалён промежуточным узлом), используйте экспоненциальную задержку (начните с 1 секунды, удваивайте до 60 секунд). Не продвигайте курсор пагинации при ошибке 429: неудачный запрос не вернул данных, поэтому курсор с последней успешной страницы по-прежнему корректен.

Запросы, не прошедшие аутентификацию (отсутствующий или нераспознанный ключ либо ключ Claude API вместо Compliance Access Key или ключа Admin API), отклоняются до ограничителя скорости и не расходуют квоту. Действительный ключ, у которого нет требуемой для конечной точки области действия, расходует одну единицу квоты до возврата ошибки 403.

Конечные точки локальных сессий учитываются только в общем ограничении. Конечные точки удалённых сессий дополнительно имеют второй бюджет запросов, привязанный, как и общее ограничение, к вашей родительской организации. Ошибка 429 из этого бюджета содержит заголовок retry-after, значение которого всегда равно 1 (минимальное ожидание, а не фактическое время сброса); любые заголовки anthropic-ratelimit-* в таком ответе описывают общее ограничение, а не этот бюджет, поэтому при повторении ошибки 429 используйте экспоненциальную задержку. Один вариант ошибки 429 не связан ни с каким бюджетом запросов: Сервер занят чтением больших расшифровок, который возвращает только конечная точка сообщений локальных сессий.

Если вы опрашиваете Activity Feed по расписанию, планируйте совокупную частоту запросов (по всем ключам, связанным организациям и параллельным обработчикам) ниже общего ограничения. Отслеживайте anthropic-ratelimit-requests-remaining, чтобы замедлиться до его достижения. См. Проектирование интеграции для обеспечения соответствия требованиям, чтобы выбрать между опросом по окнам и загрузкой на основе курсора.

Сервер занят чтением больших расшифровок

Тип: rate_limit_error

Код ошибки: transcript_read_server_busy, возвращается в 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.

Причина: GET /v1/compliance/apps/sessions/local/{session_id}/messages может вернуть эту ошибку 429 для страницы очень большой сессии. Эту ошибку возвращает только эта конечная точка, и она может возникнуть при любом значении order. Это не ограничение скорости и не ограничение для вашей организации: она не означает, что вы превысили общее ограничение или какой-либо другой бюджет запросов. Эта ошибка имеет тот же код состояния 429 и тот же тип rate_limit_error, что и ответы об ограничении скорости, поэтому распознавайте её по коду ошибки, а не по тексту сообщения, который может быть изменён.

Решение: Подождите количество секунд, указанное в заголовке retry-after, затем отправьте тот же запрос повторно без изменений: сохраните то же значение page или не указывайте его, если в запросе его не было. Если повторный запрос снова возвращает эту ошибку, подождите и повторите таким же образом. Если заголовок retry-after отсутствует, используйте экспоненциальную задержку (начните с 1 секунды, удваивайте до 60 секунд). Если эта ошибка продолжает повторяться от запуска к запуску, свяжитесь с вашим представителем Anthropic и укажите заголовок ответа request-id.

500 Internal Server Error

Ошибка 500 от Compliance API содержит заголовок ответа x-should-retry: false, если сбой детерминирован. Claude SDK учитывает этот заголовок автоматически. Если вы используете универсальную HTTP-библиотеку повторных попыток, которая повторяет запрос при любой ошибке 5xx, отключайте повторы, когда x-should-retry равен false; повтор такого запроса будет завершаться одинаковой ошибкой при каждой попытке.

Ошибка 500 без заголовка x-should-retry: false является временной: повторите запрос с экспоненциальной задержкой (начните с 1 секунды, удваивайте до 60 секунд). То же относится к ответам 502, 503, 504 и 529. Исключение составляет небольшой набор ошибок 503 для локальных сессий, описанных далее, которые зависят от настроек организации или её ключа шифрования, а не от нагрузки. См. Ошибки, чтобы узнать о семантике повторных попыток для всей платформы.

Локальные сеансы временно недоступны

Тип: 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.

Причина: «Endpoints» (конечные точки) локальных сеансов возвращают 503 с одним из этих тел ответа. У всех трёх тип overloaded_error. Поэтому это одна из немногих ошибок на этой странице, где условия различаются по тексту сообщения, а не по error.type:

  • Тело index is temporarily unavailable означает, что списки сеансов кратковременно недоступны из-за нагрузки или состояния серверной части. Это временное состояние.
  • Тело Captured content означает, что содержимое стенограммы сеанса сейчас не может быть возвращено. Обычно это тоже временно. В организациях, использующих «customer-managed encryption keys» (ключи шифрования, управляемые клиентом), конечная точка сообщений также возвращает это тело для каждой страницы с содержимым, которое ваш управляемый клиентом ключ не может расшифровать. Например, вы отключили, отозвали или уничтожили ключ, или ключ недоступен. В этом случае ошибка сохраняется, пока ключ невозможно использовать. Текст сообщения в обоих случаях одинаков. Поэтому единственный признак того, что причина в ключе, — ошибка продолжает повторяться для этой организации. О непригодном для использования ключе никогда не сообщается как о not_captured.
  • Тело retention overrides означает, что пока не удалось оценить параметр хранения или обработки данных, который применяется к одному или нескольким сеансам в запрошенном диапазоне. В конечных точках получения и сообщений оно содержит for this session вместо for this page. Эта ошибка зависит не от нагрузки, а от данных и настроек организации, запустившей сеанс, и может сохраняться длительное время.

Исправление: Обрабатывайте каждое тело следующим образом:

  • Для двух тел Try again shortly. повторяйте запрос с «exponential backoff» (экспоненциальной задержкой) и не продвигайте «cursor» (курсор) page, поскольку неудачный запрос не вернул данных.
  • Если тело Captured content продолжает повторяться в конечной точке сообщений для организации с управляемым клиентом ключом, считайте ошибку постоянной. Прекратите обход стенограмм этой организации и проверьте состояние ключа в вашей «key management service» (службе управления ключами). Стенограммы в других связанных организациях и метаданные сеансов во всех организациях не затрагиваются. При повторной попытке в одном из следующих запусков начинайте обход каждого сеанса заново без page. Курсоры страниц сообщений истекают через 24 часа после получения первой страницы обхода.
  • Для тела Try again later. не держите обход открытым в ожидании устранения ошибки. В конечной точке списка либо повторите попытку позже, начав заново без параметра page (токен страницы списка старше 24 часов по-прежнему принимается, но повторно оценивается относительно текущей границы хранения, поэтому приостановленный обход может пропустить сеансы), либо сужайте окно created_at, пока запрос не выполнится успешно, а пропущенный диапазон экспортируйте отдельно в одном из следующих запусков. В конечных точках получения и сообщений пропустите этот идентификатор сеанса, продолжите остальной экспорт и повторите попытку для этого сеанса в одном из следующих запусков. Курсоры страниц сообщений истекают через 24 часа после первой страницы обхода, поэтому, вернувшись к этому сеансу, начните его обход заново без page.

Если какое-либо из этих условий повторяется от запуска к запуску, свяжитесь с вашим представителем Anthropic и укажите заголовок ответа request-id. Если причина в управляемом клиентом ключе, обращайтесь, только если ошибка сохраняется, когда ключ пригоден для использования.

Сведения об инцидентах, затрагивающих весь сервис, см. на status.anthropic.com.

Дальнейшие шаги

Распространённые вопросы о доступе, областях действия, хранении и интеграции.

Каталог ошибок для всей платформы и семантика повторных попыток.

Was this page helpful?