Compliance API включается по запросу. Организации Claude Enterprise имеют доступ к полному API; организации Claude Console имеют доступ только к Ленте активности. См. Получение доступа к Compliance API.
Требуемая область доступа: read:compliance_activities для ключа Compliance Access Key или ключа Admin API.
Производственная интеграция с Compliance API предполагает три проектных решения: как она потребляет Activity Feed (ленту активности), как её вывод сопоставляется с вашей системой «security information and event management» (управление информацией о безопасности и событиями), или SIEM, и где хранятся долгосрочные копии активности и контента. Эти решения не зависят от самих конечных точек; данная страница поможет вам оценить компромиссы.
Предполагается, что вы уже прочитали Запрос к Activity Feed, где определены параметры и контракт пагинации, на которые здесь ссылаются, а также Получение и удаление чатов, файлов и проектов, где определены конечные точки контента и семантика deleted_at, упоминаемая в разделе Планирование хранения контента.
Activity Feed поддерживает два шаблона потребления: периодический опрос по временным окнам, ограниченным параметрами created_at.gte и created_at.lt, и инкрементальное чтение на основе курсора, при котором курсор из одного ответа сохраняется и передаётся в следующем запросе. Оба возвращают идентичные объекты Activity; разница лишь в состоянии, которое ваш клиент сохраняет между вызовами.
Оба шаблона имеют следующие общие ограничения:
limit для каждой страницы — 5 000./v1/compliance/*; заголовки ответа и контракт повторных попыток см. в разделе 429 Too Many Requests.| Шаблон | Выбирайте, когда |
|---|---|
| Опрос по окнам | Ваш конвейер запускается по фиксированному расписанию, вы предпочитаете воркеры без состояния и допускаете повторное воспроизведение или перекрытие окон |
| Инкрементальное чтение на основе курсора | Вам нужна минимальная задержка между возникновением активности и её приёмом вашим конвейером, вы хотите избежать повторного чтения уже обработанных страниц и у вас есть надёжное место для сохранения курсора между запусками |
Устанавливайте created_at.lt как минимум на 1 минуту в прошлом, чтобы каждая активность в окне уже была доступна для запроса. Используйте created_at.gte для нижней границы и created_at.lt для верхней, чтобы последовательные окна стыковались без пропусков и перекрытий; используйте значение lt предыдущего окна как gte следующего.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-04-20T07:00:00Z" \
--data-urlencode "created_at.lt=2026-04-20T08:00:00Z" \
--data-urlencode "limit=5000"Если в ответе has_more: true, окно содержит более одной страницы активностей. Либо пролистывайте страницы внутри окна, передавая last_id из ответа как after_id в следующем запросе (останавливаясь, когда has_more станет false), либо выберите меньшее временное окно. Полный контракт см. в разделе Пагинация результатов.
Даже при чистой стыковке активность, проиндексированная после закрытия своего окна, никогда не появится в более позднем окне. Выполняйте дедупликацию по полю id активности и либо расширяйте каждое новое окно так, чтобы оно перекрывало предыдущее на несколько минут, либо периодически запускайте проход сверки, повторно запрашивающий более старое окно.
Граница created_at.lt, слишком близкая к настоящему моменту, незаметно и безвозвратно отбрасывает поздно проиндексированные активности: как только created_at.gte продвинется дальше них, ни одно последующее окно не сможет их восстановить. Рассматривайте 1-минутную задержку доступности для запроса как задокументированную задержку индексации, а не как мягкую рекомендацию.
first_id="activity_01XyDMpzjS89pFZXqSFUBDr6" # first_id from a previous response
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "limit=5000" \
--data-urlencode "before_id=$first_id"Пролистывайте страницы, пока has_more не станет false, затем сохраните first_id из последнего ответа и передайте его без изменений как before_id при следующем запуске, чтобы получить активности новее сохранённого курсора. Чтобы двигаться в обратном направлении для обратного заполнения, сохраняйте last_id и передавайте его как after_id. Полный справочник по курсорам и токенам страниц, а также семантику повторных попыток см. в разделе Пагинация результатов.
Производственный цикл догоняющего чтения получает активности, записанные с момента вашего последнего опроса, управляя итерацией на основе has_more и first_id:
cursor = stored_cursor
loop:
page = GET /v1/compliance/activities?before_id={cursor}&limit=5000
store(page.data)
if page.first_id is not null:
cursor = page.first_id
if not page.has_more: break
persist(cursor)Курсоры переживают ротацию ключей; см. Управление ключами и их ротация.
Каждая страница примыкает к переданному вами курсору: цикл движется вперёд к настоящему моменту, по одной странице за раз. Не считайте один ответ полным догоном, пока has_more равно true. Сохраняйте курсор только после того, как has_more станет false; непрочитанные страницы — это более новые страницы между first_id данного ответа и настоящим моментом, и они останутся непрочитанными, пока вы не завершите цикл или не запустите его снова.
Каждый объект Activity содержит поля, которые можно сопоставить с событиями, уже находящимися в вашей SIEM (Splunk, Datadog, Microsoft Sentinel, Cribl или аналогичной):
| Поле Compliance API | Цель сопоставления |
|---|---|
actor.user_id | Стабильный идентификатор пользователя вашего поставщика идентификации |
actor.email_address | Адрес электронной почты из каталога, когда стабильный идентификатор недоступен |
actor.ip_address | Журналы сети, VPN и конечных устройств |
created_at | Корреляция по временному окну с любым источником |
Поля actor.user_id и actor.email_address присутствуют, когда actor.type равно user_actor; проверяйте дискриминатор перед их чтением. user_id — это стабильный непрозрачный идентификатор учётной записи пользователя: он согласован во всех конечных точках Compliance API и полезных нагрузках активностей и не меняется при изменении адреса электронной почты или отображаемого имени пользователя. Используйте user_id, а не email_address, в качестве основного ключа сопоставления.
Вызовы самого Compliance API порождают активности compliance_api_accessed. Принимайте их наряду с другими типами активностей, чтобы ваша SIEM фиксировала, кто и когда запрашивал данные соответствия требованиям. Передайте activity_types[]=compliance_api_accessed, чтобы ограничить область запроса, затем в вашем клиенте считывайте actor.api_key_id из каждой активности, у которой actor.type равно api_actor, чтобы атрибутировать доступ конкретному ключу Compliance Access Key или ключу Admin API.
Три горизонта хранения определяют, что вы сможете получить позднее:
| Данные | Срок хранения | Контролируется |
|---|---|---|
| Записи Activity Feed | 6 лет | Anthropic |
| Контент чатов, файлов и проектов | Политика хранения claude.ai вашей организации | Вашей организацией |
| Контент, жёстко удалённый через Compliance API | Не хранится; удаление немедленное и безвозвратное | Вызывающей стороной конечной точки DELETE |
О том, как остальная часть Claude Platform обрабатывает хранение, см. API и хранение данных.
Выбирайте между экспортом с архивированием и получением по запросу через API следующим образом:
deleted_at, но удаления через Compliance API — нет.Во всех остальных случаях полагайтесь на прямое получение через API и избегайте поддержания параллельной копии.
Рассматривайте Activity Feed как систему с доставкой at-least-once (как минимум один раз): корректно пагинированный обход возвращает каждую активность как минимум один раз, но повторная попытка после частичного сбоя может повторно доставить активности, которые вы уже сохранили. Выполняйте дедупликацию по полю id активности.
Конечные точки списков не возвращают поле total_count или контрольную сумму. Чтобы подтвердить полноту прогона экспорта, фиксируйте в журнале:
last_id.request-id последней страницы.Конечные точки контента (чаты, файлы, проекты и вложения проектов) обслуживают только данные claude.ai; Activity Feed отображает административные и ресурсные события в масштабе всей организации. Compliance API не включает:
Подробнее о том, что Compliance API фиксирует и не фиксирует, см. в FAQ по Compliance API.
Для обеспечения цепочки хранения доказательств сохраняйте экспортированные записи вместе с метаданными происхождения: исходная конечная точка, параметры запроса, временная метка прогона и хеш содержимого каждой записи.
Параметры фильтрации, пагинация и схема объекта Activity.
Конечные точки контента и жёсткого удаления.
Was this page helpful?