Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · api

One read of Claude Developer Platformapi-20261021T000725Z

69 pages moved out of 796 read.

Pages moved 69 significant first
Pages read 796 in this capture
Captured 00:07 UTC
Corpus hash 9dff8f1e4a7e corpus-hash

What this read moved

26-50 of 69, page 2 of 3

This capture is too large to show at once. Changes 26-50 of 69 are below, significant first; the rest are on the following screens.

api/beta/user_profiles/list Changed · +18 / -18 lines

from line 57
5757 
5858- `"anthropic-beta": optional array of AnthropicBeta`
5959 
60 This endpoint is in beta: requests must send `user-profiles-2026-03-24`, `user-profiles-2026-08-18`, or `user-profiles-2026-09-04` in this header.
60 Optional header to specify the beta version(s) you want to use.
6161 
6262 - `string`
6363 
from line 193
193193 
194194 Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.
195195 
196 - `name: string or null`
197 
198 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.
199 
196200 - `trust_grants: map[BetaUserProfileTrustGrant]`
197201 
198202 Trust grants for this profile, keyed by grant name. Key omitted when no grant is active or in flight.
from line 213
209213 
210214 - `updated_at: string`
211215 
212 When this user profile was last modified, in RFC 3339 format. Trust-grant status changes also bump this timestamp.
216 When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.
213217 
214218 format: date-time
215219 
216220 - `access_type: optional "application" or "passthrough"`
217221 
218 How the platform uses the API for this entity: `application` (default) or `passthrough`. Present under the `user-profiles-2026-08-18` and later beta headers.
222 How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.
219223 
220224 - `"application"`
221225 
from line 231
227231 
228232 - `external_id: optional string or null`
229233 
230 Platform's own identifier for this user. Not enforced unique. Present under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; under `user-profiles-2026-09-04` the value is `external_user_details.reference_id`.
234 Platform's own identifier for this user. Not enforced unique. Legacy field, present only under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; without one of them, the value is `external_user_details.reference_id`.
231235 
232236 - `external_user_details: optional BetaUserProfileExternalUserDetails`
233237 
234 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Present under the `user-profiles-2026-09-04` beta header, with every field present and `null` until the platform supplies a value; the earlier beta headers serve `reference_id` as the top-level `external_id`, and `user-profiles-2026-08-18` serves `onboarded_at` as `external_user_onboarded_at`.
238 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.
235239 
236240 - `account_status: "active" or "suspended" or "blocked" or null`
237241 
from line 289
285289 
286290 - `external_user_onboarded_at: optional string or null`
287291 
288 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Present under the `user-profiles-2026-08-18` beta header; under `user-profiles-2026-09-04` the value is `external_user_details.onboarded_at`.
292 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Legacy field, present only under the `user-profiles-2026-08-18` beta header; without a legacy header, the value is `external_user_details.onboarded_at`.
289293 
290294 format: date-time
291295 
292 - `name: optional string or null`
293 
294 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name.
295 
296296- `next_page: string or null`
297297 
298298 Cursor for the next page, or `null` when there are no more results.
from line 315
315315 "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
316316 "created_at": "2026-03-15T10:00:00Z",
317317 "metadata": {},
318 "name": "Example User",
318319 "trust_grants": {
319320 "cyber": {
320321 "status": "active"
from line 327
326327 "external_id": "user_12345",
327328 "external_user_details": {
328329 "account_status": "active",
329 "country": "country",
330 "email_hash": "email_hash",
331 "entity_type": "individual",
332 "name_hash": "name_hash",
333 "onboarded_at": "2019-12-27T18:11:19.117Z",
334 "reference_id": "reference_id"
330 "country": "US",
331 "email_hash": null,
332 "entity_type": "business",
333 "name_hash": null,
334 "onboarded_at": "2024-11-02T08:15:00Z",
335 "reference_id": "user_12345"
335336 },
336 "external_user_onboarded_at": "2024-11-02T08:15:00Z",
337 "name": "Example User"
337 "external_user_onboarded_at": "2024-11-02T08:15:00Z"
338338 }
339339 ],
340340 "next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="

api/beta/user_profiles/retrieve Changed · +18 / -18 lines

from line 25
2525 
2626- `"anthropic-beta": optional array of AnthropicBeta`
2727 
28 This endpoint is in beta: requests must send `user-profiles-2026-03-24`, `user-profiles-2026-08-18`, or `user-profiles-2026-09-04` in this header.
28 Optional header to specify the beta version(s) you want to use.
2929 
3030 - `string`
3131 
from line 163
163163 
164164 Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.
165165 
166 - `name: string or null`
167 
168 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.
169 
166170 - `trust_grants: map[BetaUserProfileTrustGrant]`
167171 
168172 Trust grants for this profile, keyed by grant name. Key omitted when no grant is active or in flight.
from line 183
179183 
180184 - `updated_at: string`
181185 
182 When this user profile was last modified, in RFC 3339 format. Trust-grant status changes also bump this timestamp.
186 When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.
183187 
184188 format: date-time
185189 
186190 - `access_type: optional "application" or "passthrough"`
187191 
188 How the platform uses the API for this entity: `application` (default) or `passthrough`. Present under the `user-profiles-2026-08-18` and later beta headers.
192 How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.
189193 
190194 - `"application"`
191195 
from line 201
197201 
198202 - `external_id: optional string or null`
199203 
200 Platform's own identifier for this user. Not enforced unique. Present under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; under `user-profiles-2026-09-04` the value is `external_user_details.reference_id`.
204 Platform's own identifier for this user. Not enforced unique. Legacy field, present only under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; without one of them, the value is `external_user_details.reference_id`.
201205 
202206 - `external_user_details: optional BetaUserProfileExternalUserDetails`
203207 
204 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Present under the `user-profiles-2026-09-04` beta header, with every field present and `null` until the platform supplies a value; the earlier beta headers serve `reference_id` as the top-level `external_id`, and `user-profiles-2026-08-18` serves `onboarded_at` as `external_user_onboarded_at`.
208 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.
205209 
206210 - `account_status: "active" or "suspended" or "blocked" or null`
207211 
from line 259
255259 
256260 - `external_user_onboarded_at: optional string or null`
257261 
258 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Present under the `user-profiles-2026-08-18` beta header; under `user-profiles-2026-09-04` the value is `external_user_details.onboarded_at`.
262 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Legacy field, present only under the `user-profiles-2026-08-18` beta header; without a legacy header, the value is `external_user_details.onboarded_at`.
259263 
260264 format: date-time
261265 
262 - `name: optional string or null`
263 
264 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name.
265 
266266## Example
267267 
268268```bash
from line 279
279279 "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
280280 "created_at": "2026-03-15T10:00:00Z",
281281 "metadata": {},
282 "name": "Example User",
282283 "trust_grants": {
283284 "cyber": {
284285 "status": "active"
from line 291
290291 "external_id": "user_12345",
291292 "external_user_details": {
292293 "account_status": "active",
293 "country": "country",
294 "email_hash": "email_hash",
295 "entity_type": "individual",
296 "name_hash": "name_hash",
297 "onboarded_at": "2019-12-27T18:11:19.117Z",
298 "reference_id": "reference_id"
294 "country": "US",
295 "email_hash": null,
296 "entity_type": "business",
297 "name_hash": null,
298 "onboarded_at": "2024-11-02T08:15:00Z",
299 "reference_id": "user_12345"
299300 },
300 "external_user_onboarded_at": "2024-11-02T08:15:00Z",
301 "name": "Example User"
301 "external_user_onboarded_at": "2024-11-02T08:15:00Z"
302302}
303303```
304304 

api/beta/user_profiles/update Changed · +24 / -22 lines

from line 25
2525 
2626- `"anthropic-beta": optional array of AnthropicBeta`
2727 
28 This endpoint is in beta: requests must send `user-profiles-2026-03-24`, `user-profiles-2026-08-18`, or `user-profiles-2026-09-04` in this header.
28 Optional header to specify the beta version(s) you want to use.
2929 
3030 - `string`
3131 
from line 153
153153 
154154- `external_id: optional string or null`
155155 
156 If present, replaces the stored external_id. Omit to leave unchanged. Maximum 255 characters. Accepted under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; under `user-profiles-2026-09-04` send `external_user_details.reference_id` instead.
156 If present, replaces the stored external_id. Omit to leave unchanged. Maximum 255 characters. Legacy field, accepted only under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; without one of them, send `external_user_details.reference_id`.
157157 
158158 minLength: 1, maxLength: 255
159159 
160160- `external_user_details: optional BetaUserProfileExternalUserDetailsParams`
161161 
162 Details about the entity this profile represents, as the platform states them. Each field sent replaces the stored value; omit a field to leave it unchanged. Once set, a value cannot be cleared and `null` is rejected. Accepted under the `user-profiles-2026-09-04` beta header only.
162 Details about the entity this profile represents, as the platform states them. Each field sent replaces the stored value; omit a field to leave it unchanged. Once set, a value cannot be cleared and `null` is rejected. Not accepted under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers.
163163 
164164 - `account_status: optional "active" or "suspended" or "blocked" or null`
165165 
from line 219
219219 
220220- `external_user_onboarded_at: optional string`
221221 
222 If present, replaces the stored account creation time. Omit to leave unchanged; once set, the value cannot be cleared and `null` is rejected. Must be a complete RFC 3339 timestamp no more than 1 minute in the future. Accepted under the `user-profiles-2026-08-18` beta header; under `user-profiles-2026-09-04` send `external_user_details.onboarded_at` instead.
222 If present, replaces the stored account creation time. Omit to leave unchanged; once set, the value cannot be cleared and `null` is rejected. Must be a complete RFC 3339 timestamp no more than 1 minute in the future. Legacy field, accepted only under the `user-profiles-2026-08-18` beta header; without a legacy header, send `external_user_details.onboarded_at`.
223223 
224224 format: date-time
225225 
from line 259
259259 
260260 Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.
261261 
262 - `name: string or null`
263 
264 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.
265 
262266 - `trust_grants: map[BetaUserProfileTrustGrant]`
263267 
264268 Trust grants for this profile, keyed by grant name. Key omitted when no grant is active or in flight.
from line 279
275279 
276280 - `updated_at: string`
277281 
278 When this user profile was last modified, in RFC 3339 format. Trust-grant status changes also bump this timestamp.
282 When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.
279283 
280284 format: date-time
281285 
282286 - `access_type: optional "application" or "passthrough"`
283287 
284 How the platform uses the API for this entity: `application` (default) or `passthrough`. Present under the `user-profiles-2026-08-18` and later beta headers.
288 How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.
285289 
286290 - `"application"`
287291 
from line 297
293297 
294298 - `external_id: optional string or null`
295299 
296 Platform's own identifier for this user. Not enforced unique. Present under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; under `user-profiles-2026-09-04` the value is `external_user_details.reference_id`.
300 Platform's own identifier for this user. Not enforced unique. Legacy field, present only under the `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers; without one of them, the value is `external_user_details.reference_id`.
297301 
298302 - `external_user_details: optional BetaUserProfileExternalUserDetails`
299303 
300 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Present under the `user-profiles-2026-09-04` beta header, with every field present and `null` until the platform supplies a value; the earlier beta headers serve `reference_id` as the top-level `external_id`, and `user-profiles-2026-08-18` serves `onboarded_at` as `external_user_onboarded_at`.
304 Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.
301305 
302306 - `account_status: "active" or "suspended" or "blocked" or null`
303307 
from line 355
351355 
352356 - `external_user_onboarded_at: optional string or null`
353357 
354 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Present under the `user-profiles-2026-08-18` beta header; under `user-profiles-2026-09-04` the value is `external_user_details.onboarded_at`.
358 When the entity this profile represents opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one. Legacy field, present only under the `user-profiles-2026-08-18` beta header; without a legacy header, the value is `external_user_details.onboarded_at`.
355359 
356360 format: date-time
357361 
358 - `name: optional string or null`
359 
360 Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name.
361 
362362## Example
363363 
364364```bash
from line 368
368368 -H 'anthropic-beta: user-profiles-2026-08-18' \
369369 -H "X-Api-Key: $ANTHROPIC_API_KEY" \
370370 -d '{
371 "external_id": "user_12345"
371 "external_user_details": {
372 "account_status": "suspended"
373 }
372374 }'
373375```
374376 
from line 381
379381 "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
380382 "created_at": "2026-03-15T10:00:00Z",
381383 "metadata": {},
384 "name": "Example User",
382385 "trust_grants": {
383386 "cyber": {
384387 "status": "active"
from line 393
390393 "external_id": "user_12345",
391394 "external_user_details": {
392395 "account_status": "active",
393 "country": "country",
394 "email_hash": "email_hash",
395 "entity_type": "individual",
396 "name_hash": "name_hash",
397 "onboarded_at": "2019-12-27T18:11:19.117Z",
398 "reference_id": "reference_id"
396 "country": "US",
397 "email_hash": null,
398 "entity_type": "business",
399 "name_hash": null,
400 "onboarded_at": "2024-11-02T08:15:00Z",
401 "reference_id": "user_12345"
399402 },
400 "external_user_onboarded_at": "2024-11-02T08:15:00Z",
401 "name": "Example User"
403 "external_user_onboarded_at": "2024-11-02T08:15:00Z"
402404}
403405```
404406 

api/compliance Changed · +2868 / -45 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 19
1919 
2020#### Query parameters
2121 
22- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
22- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
2323 
2424 Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`.
2525 
from line 539
539539 
540540 A GitHub integration's configuration was updated.
541541 
542 - `"claude_insights_attribution_setting_updated"`
543 
544 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
545 
546 - `"claude_insights_report_archived"`
547 
548 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
549 
550 - `"claude_insights_report_attribution_viewed"`
551 
552 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
553 
554 - `"claude_insights_report_deleted"`
555 
556 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
557 
558 - `"claude_insights_report_feedback_submitted"`
559 
560 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
561 
562 - `"claude_insights_report_renamed"`
563 
564 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
565 
566 - `"claude_insights_report_sharing_updated"`
567 
568 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
569 
570 - `"claude_insights_report_triggered"`
571 
572 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
573 
574 - `"claude_insights_report_unarchived"`
575 
576 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
577 
578 - `"claude_insights_report_viewed"`
579 
580 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
581 
582 - `"claude_insights_resource_access_updated"`
583 
584 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
585 
542586 - `"claude_organization_settings_updated"`
543587 
544588 Organization settings were updated.
from line 2266
22222266 
22232267 format: date-time
22242268 
2225- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
2269- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
22262270 
22272271 Exclude activities of these types. Cannot be combined with `activity_types[]`.
22282272 
from line 2786
27422786 
27432787 A GitHub integration's configuration was updated.
27442788 
2789 - `"claude_insights_attribution_setting_updated"`
2790 
2791 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
2792 
2793 - `"claude_insights_report_archived"`
2794 
2795 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2796 
2797 - `"claude_insights_report_attribution_viewed"`
2798 
2799 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
2800 
2801 - `"claude_insights_report_deleted"`
2802 
2803 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
2804 
2805 - `"claude_insights_report_feedback_submitted"`
2806 
2807 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
2808 
2809 - `"claude_insights_report_renamed"`
2810 
2811 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2812 
2813 - `"claude_insights_report_sharing_updated"`
2814 
2815 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
2816 
2817 - `"claude_insights_report_triggered"`
2818 
2819 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
2820 
2821 - `"claude_insights_report_unarchived"`
2822 
2823 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2824 
2825 - `"claude_insights_report_viewed"`
2826 
2827 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
2828 
2829 - `"claude_insights_resource_access_updated"`
2830 
2831 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
2832 
27452833 - `"claude_organization_settings_updated"`
27462834 
27472835 Organization settings were updated.
from line 4511
44234511 
44244512#### Returns
44254513 
4426- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 533 more`
4514- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 544 more`
44274515 
44284516 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
44294517 
from line 9205
91179205 
91189206 - `previous_write_user_count: optional number or null`
91199207 
9120 The number of accounts on the explicit write allowlist before the change. Only meaningful when `previous_write_mode` is `users`.
9121 
9122 - `read_agent_ids: optional array of string`
9123 
9124 The Claude agents (`cagt_…` identifiers) whose channel holds view access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9125 
9126 - `read_group_ids: optional array of string`
9127 
9128 The admin-managed groups (`rbac_group_…` identifiers) whose members hold view access to the artifact after the change (including every `write_group_ids` entry). Reflects the standing grants, so it is populated on every sharing update for an artifact shared with groups, not only when a group grant changed. Empty when none.
9129 
9130 - `write_agent_ids: optional array of string`
9131 
9132 The Claude agents (`cagt_…` identifiers) whose channel holds edit access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9133 
9134 - `write_group_ids: optional array of string`
9135 
9136 The admin-managed groups (`rbac_group_…` identifiers) whose members hold edit access to the artifact after the change. Reflects the standing grants, like `read_group_ids`. Empty when none.
9137 
9138 - `ClaudeArtifactViewed object`
9139 
9140 An artifact was viewed.
9141 
9142 - `type: optional "claude_artifact_viewed"`
9143 
9144 default: claude_artifact_viewed
9145 
9146 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
9147 
9148 - `APIActor object`
9149 
9150 - `type: optional "api_actor"`
9151 
9152 default: api_actor
9153 
9154 - `api_key_id: string`
9155 
9156 - `ip_address: string`
9157 
9158 - `user_agent: string`
9159 
9160 - `UserActor object`
9161 
9162 - `type: optional "user_actor"`
9163 
9164 default: user_actor
9165 
9166 - `email_address: string`
9167 
9168 format: email
9169 
9170 - `ip_address: string`
9171 
9172 - `user_agent: string`
9173 
9174 - `user_id: string`
9175 
9176 - `UnauthenticatedUserActor object`
9177 
9178 - `type: optional "unauthenticated_user_actor"`
9179 
9180 default: unauthenticated_user_actor
9181 
9182 - `ip_address: string`
9183 
9184 - `user_agent: string`
9185 
9186 - `unauthenticated_email_address: optional string or null`
9187 
9188 format: email
9189 
9190 - `AnthropicActor object`
9191 
9192 - `type: optional "anthropic_actor"`
9193 
9194 default: anthropic_actor
9195 
9196 - `email_address: optional string or null`
9197 
9198 format: email
9199 
9200 - `SystemActor object`
9201 
9202 Automated background processing performed by Anthropic systems, acting
9203 without a user or customer credential.
9204 
9205 - `type: optional "system_actor"`
9206 
9207 default: system_actor
9208 
9209 - `service: optional string or null`
9210 
9211 Name of the automated process that performed the action, when known.
9212 
9213 - `AdminAPIKeyActor object`
9214 
9215 - `type: optional "admin_api_key_actor"`
9216 
9217 default: admin_api_key_actor
9218 
9219 - `admin_api_key_id: string`
9220 
9221 - `ip_address: string`
9222 
9223 - `user_agent: string`
9224 
9225 - `ServiceAccountActor object`
9226 
9227 - `type: optional "service_account_actor"`
9228 
9229 default: service_account_actor
9230 
9231 - `ip_address: string`
9232 
9233 - `service_account_id: string`
9234 
9235 - `user_agent: string`
9236 
9237 - `ScimDirectorySyncActor object`
9238 
9239 - `type: optional "scim_directory_sync_actor"`
9240 
9241 default: scim_directory_sync_actor
9242 
9243 - `directory_id: string`
9244 
9245 - `workos_event_id: string`
9246 
9247 - `idp_connection_type: optional string or null`
9248 
9249 - `FederatedIdentityActor object`
9250 
9251 A federated external workload authenticated via a verified OIDC token.
9252 
9253 Carries the verified issuer, subject, and audience claims from the
9254 presented JWT.
9255 
9256 - `type: optional "federated_identity_actor"`
9257 
9258 default: federated_identity_actor
9259 
9260 - `issuer: string`
9261 
9262 - `subject: string`
9263 
9264 - `audience: optional array of string`
9265 
9266 - `ip_address: optional string or null`
9267 
9268 - `user_agent: optional string or null`
9269 
9270 - `FederatedActor object`
9271 
9272 An external identity asserted by a trusted provider — a cloud-provider
9273 gateway or a customer-registered federation issuer — acting without an
9274 Anthropic-provisioned account or service account.
9275 
9276 - `type: optional "federated_actor"`
9277 
9278 default: federated_actor
9279 
9280 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
9281 
9282 - `FederatedActorAwsProvider object`
9283 
9284 Asserting party: the AWS account the organization is bound to.
9285 
9286 - `type: optional "aws"`
9287 
9288 default: aws
9289 
9290 - `account_id: string`
9291 
9292 - `signed_principal: string`
9293 
9294 The AWS-signed ARN of the IAM principal that requested the token.
9295 
9296 - `FederatedActorAzureProvider object`
9297 
9298 Asserting party: the Azure subscription the organization is bound to.
9299 
9300 - `type: optional "azure"`
9301 
9302 default: azure
9303 
9304 - `subscription_id: string`
9305 
9306 - `FederatedActorGcpProvider object`
9307 
9308 Asserting party: the GCP project the organization is bound to.
9309 
9310 - `type: optional "gcp"`
9311 
9312 default: gcp
9313 
9314 - `project_number: string`
9315 
9316 - `FederatedActorOidcProvider object`
9317 
9318 Asserting party: a customer-registered OIDC federation issuer.
9319 
9320 - `type: optional "oidc"`
9321 
9322 default: oidc
9323 
9324 - `issuer: optional string or null`
9325 
9326 The federation issuer's URL. Null when the presented credential failed verification.
9327 
9328 - `ip_address: optional string or null`
9329 
9330 - `subject: optional string or null`
9331 
9332 The provider's verified identifier for the caller; its form depends on the provider.
9333 
9334 - `user_agent: optional string or null`
9335 
9336 - `AttestedDeviceActor object`
9337 
9338 An attested mobile device authenticated via Apple App Attest.
9339 
9340 - `type: optional "attested_device_actor"`
9341 
9342 default: attested_device_actor
9343 
9344 - `external_client_id: string`
9345 
9346 - `kid_hash: string`
9347 
9348 - `ip_address: optional string or null`
9349 
9350 - `user_agent: optional string or null`
9351 
9352 - `claude_artifact_id: string`
9353 
9354 The artifact's identifier.
9355 
9356 - `id: optional string`
9357 
9358 Unique identifier for the activity e.g. 'activity_abcd1234'
9359 
9360 - `claude_artifact_version_id: optional string or null`
9361 
9362 The version of the artifact the user was served, when known.
9363 
9364 - `created_at: optional string`
9365 
9366 When this activity occurred.
9367 
9368 format: date-time
9369 
9370 - `organization_id: optional string or null`
9371 
9372 Organization ID this activity is associated with
9373 
9374 - `organization_uuid: optional string or null`
9375 
9376 Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for examp
9208 The number of accounts on

api/compliance/activities Changed · +5528 / -4 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 17
1717 
1818### Query parameters
1919 
20- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
20- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
2121 
2222 Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`.
2323 
from line 537
537537 
538538 A GitHub integration's configuration was updated.
539539 
540 - `"claude_insights_attribution_setting_updated"`
541 
542 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
543 
544 - `"claude_insights_report_archived"`
545 
546 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
547 
548 - `"claude_insights_report_attribution_viewed"`
549 
550 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
551 
552 - `"claude_insights_report_deleted"`
553 
554 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
555 
556 - `"claude_insights_report_feedback_submitted"`
557 
558 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
559 
560 - `"claude_insights_report_renamed"`
561 
562 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
563 
564 - `"claude_insights_report_sharing_updated"`
565 
566 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
567 
568 - `"claude_insights_report_triggered"`
569 
570 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
571 
572 - `"claude_insights_report_unarchived"`
573 
574 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
575 
576 - `"claude_insights_report_viewed"`
577 
578 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
579 
580 - `"claude_insights_resource_access_updated"`
581 
582 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
583 
540584 - `"claude_organization_settings_updated"`
541585 
542586 Organization settings were updated.
from line 2264
22202264 
22212265 format: date-time
22222266 
2223- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
2267- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
22242268 
22252269 Exclude activities of these types. Cannot be combined with `activity_types[]`.
22262270 
from line 2784
27402784 
27412785 A GitHub integration's configuration was updated.
27422786 
2787 - `"claude_insights_attribution_setting_updated"`
2788 
2789 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
2790 
2791 - `"claude_insights_report_archived"`
2792 
2793 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2794 
2795 - `"claude_insights_report_attribution_viewed"`
2796 
2797 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
2798 
2799 - `"claude_insights_report_deleted"`
2800 
2801 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
2802 
2803 - `"claude_insights_report_feedback_submitted"`
2804 
2805 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
2806 
2807 - `"claude_insights_report_renamed"`
2808 
2809 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2810 
2811 - `"claude_insights_report_sharing_updated"`
2812 
2813 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
2814 
2815 - `"claude_insights_report_triggered"`
2816 
2817 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
2818 
2819 - `"claude_insights_report_unarchived"`
2820 
2821 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2822 
2823 - `"claude_insights_report_viewed"`
2824 
2825 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
2826 
2827 - `"claude_insights_resource_access_updated"`
2828 
2829 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
2830 
27432831 - `"claude_organization_settings_updated"`
27442832 
27452833 Organization settings were updated.
from line 4509
44214509 
44224510### Returns
44234511 
4424- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 533 more`
4512- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 544 more`
44254513 
44264514 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
44274515 
from line 9203
91159203 
91169204 - `previous_write_user_count: optional number or null`
91179205 
9118 The number of accounts on the explicit write allowlist before the change. Only meaningful when `previous_write_mode` is `users`.
9119 
9120 - `read_agent_ids: optional array of string`
9121 
9122 The Claude agents (`cagt_…` identifiers) whose channel holds view access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9123 
9124 - `read_group_ids: optional array of string`
9125 
9126 The admin-managed groups (`rbac_group_…` identifiers) whose members hold view access to the artifact after the change (including every `write_group_ids` entry). Reflects the standing grants, so it is populated on every sharing update for an artifact shared with groups, not only when a group grant changed. Empty when none.
9127 
9128 - `write_agent_ids: optional array of string`
9129 
9130 The Claude agents (`cagt_…` identifiers) whose channel holds edit access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9131 
9132 - `write_group_ids: optional array of string`
9133 
9134 The admin-managed groups (`rbac_group_…` identifiers) whose members hold edit access to the artifact after the change. Reflects the standing grants, like `read_group_ids`. Empty when none.
9135 
9136 - `ClaudeArtifactViewed object`
9137 
9138 An artifact was viewed.
9139 
9140 - `type: optional "claude_artifact_viewed"`
9141 
9142 default: claude_artifact_viewed
9143 
9144 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
9145 
9146 - `APIActor object`
9147 
9148 - `type: optional "api_actor"`
9149 
9150 default: api_actor
9151 
9152 - `api_key_id: string`
9153 
9154 - `ip_address: string`
9155 
9156 - `user_agent: string`
9157 
9158 - `UserActor object`
9159 
9160 - `type: optional "user_actor"`
9161 
9162 default: user_actor
9163 
9164 - `email_address: string`
9165 
9166 format: email
9167 
9168 - `ip_address: string`
9169 
9170 - `user_agent: string`
9171 
9172 - `user_id: string`
9173 
9174 - `UnauthenticatedUserActor object`
9175 
9176 - `type: optional "unauthenticated_user_actor"`
9177 
9178 default: unauthenticated_user_actor
9179 
9180 - `ip_address: string`
9181 
9182 - `user_agent: string`
9183 
9184 - `unauthenticated_email_address: optional string or null`
9185 
9186 format: email
9187 
9188 - `AnthropicActor object`
9189 
9190 - `type: optional "anthropic_actor"`
9191 
9192 default: anthropic_actor
9193 
9194 - `email_address: optional string or null`
9195 
9196 format: email
9197 
9198 - `SystemActor object`
9199 
9200 Automated background processing performed by Anthropic systems, acting
9201 without a user or customer credential.
9202 
9203 - `type: optional "system_actor"`
9204 
9205 default: system_actor
9206 
9207 - `service: optional string or null`
9208 
9209 Name of the automated process that performed the action, when known.
9210 
9211 - `AdminAPIKeyActor object`
9212 
9213 - `type: optional "admin_api_key_actor"`
9214 
9215 default: admin_api_key_actor
9216 
9217 - `admin_api_key_id: string`
9218 
9219 - `ip_address: string`
9220 
9221 - `user_agent: string`
9222 
9223 - `ServiceAccountActor object`
9224 
9225 - `type: optional "service_account_actor"`
9226 
9227 default: service_account_actor
9228 
9229 - `ip_address: string`
9230 
9231 - `service_account_id: string`
9232 
9233 - `user_agent: string`
9234 
9235 - `ScimDirectorySyncActor object`
9236 
9237 - `type: optional "scim_directory_sync_actor"`
9238 
9239 default: scim_directory_sync_actor
9240 
9241 - `directory_id: string`
9242 
9243 - `workos_event_id: string`
9244 
9245 - `idp_connection_type: optional string or null`
9246 
9247 - `FederatedIdentityActor object`
9248 
9249 A federated external workload authenticated via a verified OIDC token.
9250 
9251 Carries the verified issuer, subject, and audience claims from the
9252 presented JWT.
9253 
9254 - `type: optional "federated_identity_actor"`
9255 
9256 default: federated_identity_actor
9257 
9258 - `issuer: string`
9259 
9260 - `subject: string`
9261 
9262 - `audience: optional array of string`
9263 
9264 - `ip_address: optional string or null`
9265 
9266 - `user_agent: optional string or null`
9267 
9268 - `FederatedActor object`
9269 
9270 An external identity asserted by a trusted provider — a cloud-provider
9271 gateway or a customer-registered federation issuer — acting without an
9272 Anthropic-provisioned account or service account.
9273 
9274 - `type: optional "federated_actor"`
9275 
9276 default: federated_actor
9277 
9278 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
9279 
9280 - `FederatedActorAwsProvider object`
9281 
9282 Asserting party: the AWS account the organization is bound to.
9283 
9284 - `type: optional "aws"`
9285 
9286 default: aws
9287 
9288 - `account_id: string`
9289 
9290 - `signed_principal: string`
9291 
9292 The AWS-signed ARN of the IAM principal that requested the token.
9293 
9294 - `FederatedActorAzureProvider object`
9295 
9296 Asserting party: the Azure subscription the organization is bound to.
9297 
9298 - `type: optional "azure"`
9299 
9300 default: azure
9301 
9302 - `subscription_id: string`
9303 
9304 - `FederatedActorGcpProvider object`
9305 
9306 Asserting party: the GCP project the organization is bound to.
9307 
9308 - `type: optional "gcp"`
9309 
9310 default: gcp
9311 
9312 - `project_number: string`
9313 
9314 - `FederatedActorOidcProvider object`
9315 
9316 Asserting party: a customer-registered OIDC federation issuer.
9317 
9318 - `type: optional "oidc"`
9319 
9320 default: oidc
9321 
9322 - `issuer: optional string or null`
9323 
9324 The federation issuer's URL. Null when the presented credential failed verification.
9325 
9326 - `ip_address: optional string or null`
9327 
9328 - `subject: optional string or null`
9329 
9330 The provider's verified identifier for the caller; its form depends on the provider.
9331 
9332 - `user_agent: optional string or null`
9333 
9334 - `AttestedDeviceActor object`
9335 
9336 An attested mobile device authenticated via Apple App Attest.
9337 
9338 - `type: optional "attested_device_actor"`
9339 
9340 default: attested_device_actor
9341 
9342 - `external_client_id: string`
9343 
9344 - `kid_hash: string`
9345 
9346 - `ip_address: optional string or null`
9347 
9348 - `user_agent: optional string or null`
9349 
9350 - `claude_artifact_id: string`
9351 
9352 The artifact's identifier.
9353 
9354 - `id: optional string`
9355 
9356 Unique identifier for the activity e.g. 'activity_abcd1234'
9357 
9358 - `claude_artifact_version_id: optional string or null`
9359 
9360 The version of the artifact the user was served, when known.
9361 
9362 - `created_at: optional string`
9363 
9364 When this activity occurred.
9365 
9366 format: date-time
9367 
9368 - `organization_id: optional string or null`
9369 
9370 Organization ID this activity is associated with
9371 
9372 - `organization_uuid: optional string or null`
9373 
9374 Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or call
9206 The number of accounts on the explicit write allowlist befor

api/compliance/activities/list Changed · +2809 / -3 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 15
1515 
1616## Query parameters
1717 
18- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
18- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
1919 
2020 Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`.
2121 
from line 535
535535 
536536 A GitHub integration's configuration was updated.
537537 
538 - `"claude_insights_attribution_setting_updated"`
539 
540 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
541 
542 - `"claude_insights_report_archived"`
543 
544 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
545 
546 - `"claude_insights_report_attribution_viewed"`
547 
548 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
549 
550 - `"claude_insights_report_deleted"`
551 
552 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
553 
554 - `"claude_insights_report_feedback_submitted"`
555 
556 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
557 
558 - `"claude_insights_report_renamed"`
559 
560 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
561 
562 - `"claude_insights_report_sharing_updated"`
563 
564 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
565 
566 - `"claude_insights_report_triggered"`
567 
568 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
569 
570 - `"claude_insights_report_unarchived"`
571 
572 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
573 
574 - `"claude_insights_report_viewed"`
575 
576 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
577 
578 - `"claude_insights_resource_access_updated"`
579 
580 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
581 
538582 - `"claude_organization_settings_updated"`
539583 
540584 Organization settings were updated.
from line 2262
22182262 
22192263 format: date-time
22202264 
2221- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 533 more`
2265- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 544 more`
22222266 
22232267 Exclude activities of these types. Cannot be combined with `activity_types[]`.
22242268 
from line 2782
27382782 
27392783 A GitHub integration's configuration was updated.
27402784 
2785 - `"claude_insights_attribution_setting_updated"`
2786 
2787 An organization admin set the organization's setting that allows Smart Reports to be opened in the rendering that attributes findings to individual, identified members (off: no member can open that rendering). Every write is recorded, so the two values are equal when the setting was written with the value it already had.
2788 
2789 - `"claude_insights_report_archived"`
2790 
2791 A Smart Report was archived, hiding it from the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2792 
2793 - `"claude_insights_report_attribution_viewed"`
2794 
2795 A Smart Report was viewed or downloaded with its usage findings attributed to individual, identified members of the organization (rather than in the default rendering, which identifies no member), one session it lists was inspected from that attributed rendering, or an organization admin was shown which members one of its recommendations suggests.
2796 
2797 - `"claude_insights_report_deleted"`
2798 
2799 An archived Smart Report was permanently deleted, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope): its document was removed; purge_confirmed says whether it was also removed from the organization's report list.
2800 
2801 - `"claude_insights_report_feedback_submitted"`
2802 
2803 Feedback was submitted on a Smart Report by an organization admin, by the delegate who ran it (a member the organization allowed to run reports on a limited scope), or by a member it was shared with. The event records which report was rated, not the ratings themselves or the member's written comment.
2804 
2805 - `"claude_insights_report_renamed"`
2806 
2807 A Smart Report was renamed, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2808 
2809 - `"claude_insights_report_sharing_updated"`
2810 
2811 An organization admin, or the delegate who ran the report (a member the organization allowed to run reports on a limited scope), changed who a Smart Report is shared with: the organization members who may open the report by link, and whether they may open the rendering that attributes findings to individual members.
2812 
2813 - `"claude_insights_report_triggered"`
2814 
2815 A Smart Report was triggered by an organization admin, or by a delegate: a member the organization allowed to run reports on a limited scope. A Smart Report is an aggregate analysis of the organization's usage over a date range, optionally scoped to one or more directory groups, to a directory attribute's values, or to product surfaces.
2816 
2817 - `"claude_insights_report_unarchived"`
2818 
2819 An archived Smart Report was restored to the organization's default report list, by an organization admin or by the delegate who ran it (a member the organization allowed to run reports on a limited scope).
2820 
2821 - `"claude_insights_report_viewed"`
2822 
2823 A Smart Report was viewed or downloaded in its default rendering, which identifies no member of the organization (viewing or downloading the rendering that attributes findings to individual members is recorded as a separate activity).
2824 
2825 - `"claude_insights_resource_access_updated"`
2826 
2827 Which directory groups, or which values of one directory attribute, a member may run Smart Reports on (the member's delegated scope) changed: an organization admin set or revoked it, or Smart Reports itself (a system actor) revoked it when the member left the organization.
2828 
27412829 - `"claude_organization_settings_updated"`
27422830 
27432831 Organization settings were updated.
from line 4507
44194507 
44204508## Returns
44214509 
4422- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 533 more`
4510- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 544 more`
44234511 
44244512 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
44254513 
from line 9201
91139201 
91149202 - `previous_write_user_count: optional number or null`
91159203 
9116 The number of accounts on the explicit write allowlist before the change. Only meaningful when `previous_write_mode` is `users`.
9117 
9118 - `read_agent_ids: optional array of string`
9119 
9120 The Claude agents (`cagt_…` identifiers) whose channel holds view access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9121 
9122 - `read_group_ids: optional array of string`
9123 
9124 The admin-managed groups (`rbac_group_…` identifiers) whose members hold view access to the artifact after the change (including every `write_group_ids` entry). Reflects the standing grants, so it is populated on every sharing update for an artifact shared with groups, not only when a group grant changed. Empty when none.
9125 
9126 - `write_agent_ids: optional array of string`
9127 
9128 The Claude agents (`cagt_…` identifiers) whose channel holds edit access to the artifact after the change. Reflects the standing grants, so it is populated on every sharing update for an artifact shared with agents, not only when an agent grant changed. Empty when none.
9129 
9130 - `write_group_ids: optional array of string`
9131 
9132 The admin-managed groups (`rbac_group_…` identifiers) whose members hold edit access to the artifact after the change. Reflects the standing grants, like `read_group_ids`. Empty when none.
9133 
9134 - `ClaudeArtifactViewed object`
9135 
9136 An artifact was viewed.
9137 
9138 - `type: optional "claude_artifact_viewed"`
9139 
9140 default: claude_artifact_viewed
9141 
9142 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
9143 
9144 - `APIActor object`
9145 
9146 - `type: optional "api_actor"`
9147 
9148 default: api_actor
9149 
9150 - `api_key_id: string`
9151 
9152 - `ip_address: string`
9153 
9154 - `user_agent: string`
9155 
9156 - `UserActor object`
9157 
9158 - `type: optional "user_actor"`
9159 
9160 default: user_actor
9161 
9162 - `email_address: string`
9163 
9164 format: email
9165 
9166 - `ip_address: string`
9167 
9168 - `user_agent: string`
9169 
9170 - `user_id: string`
9171 
9172 - `UnauthenticatedUserActor object`
9173 
9174 - `type: optional "unauthenticated_user_actor"`
9175 
9176 default: unauthenticated_user_actor
9177 
9178 - `ip_address: string`
9179 
9180 - `user_agent: string`
9181 
9182 - `unauthenticated_email_address: optional string or null`
9183 
9184 format: email
9185 
9186 - `AnthropicActor object`
9187 
9188 - `type: optional "anthropic_actor"`
9189 
9190 default: anthropic_actor
9191 
9192 - `email_address: optional string or null`
9193 
9194 format: email
9195 
9196 - `SystemActor object`
9197 
9198 Automated background processing performed by Anthropic systems, acting
9199 without a user or customer credential.
9200 
9201 - `type: optional "system_actor"`
9202 
9203 default: system_actor
9204 
9205 - `service: optional string or null`
9206 
9207 Name of the automated process that performed the action, when known.
9208 
9209 - `AdminAPIKeyActor object`
9210 
9211 - `type: optional "admin_api_key_actor"`
9212 
9213 default: admin_api_key_actor
9214 
9215 - `admin_api_key_id: string`
9216 
9217 - `ip_address: string`
9218 
9219 - `user_agent: string`
9220 
9221 - `ServiceAccountActor object`
9222 
9223 - `type: optional "service_account_actor"`
9224 
9225 default: service_account_actor
9226 
9227 - `ip_address: string`
9228 
9229 - `service_account_id: string`
9230 
9231 - `user_agent: string`
9232 
9233 - `ScimDirectorySyncActor object`
9234 
9235 - `type: optional "scim_directory_sync_actor"`
9236 
9237 default: scim_directory_sync_actor
9238 
9239 - `directory_id: string`
9240 
9241 - `workos_event_id: string`
9242 
9243 - `idp_connection_type: optional string or null`
9244 
9245 - `FederatedIdentityActor object`
9246 
9247 A federated external workload authenticated via a verified OIDC token.
9248 
9249 Carries the verified issuer, subject, and audience claims from the
9250 presented JWT.
9251 
9252 - `type: optional "federated_identity_actor"`
9253 
9254 default: federated_identity_actor
9255 
9256 - `issuer: string`
9257 
9258 - `subject: string`
9259 
9260 - `audience: optional array of string`
9261 
9262 - `ip_address: optional string or null`
9263 
9264 - `user_agent: optional string or null`
9265 
9266 - `FederatedActor object`
9267 
9268 An external identity asserted by a trusted provider — a cloud-provider
9269 gateway or a customer-registered federation issuer — acting without an
9270 Anthropic-provisioned account or service account.
9271 
9272 - `type: optional "federated_actor"`
9273 
9274 default: federated_actor
9275 
9276 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
9277 
9278 - `FederatedActorAwsProvider object`
9279 
9280 Asserting party: the AWS account the organization is bound to.
9281 
9282 - `type: optional "aws"`
9283 
9284 default: aws
9285 
9286 - `account_id: string`
9287 
9288 - `signed_principal: string`
9289 
9290 The AWS-signed ARN of the IAM principal that requested the token.
9291 
9292 - `FederatedActorAzureProvider object`
9293 
9294 Asserting party: the Azure subscription the organization is bound to.
9295 
9296 - `type: optional "azure"`
9297 
9298 default: azure
9299 
9300 - `subscription_id: string`
9301 
9302 - `FederatedActorGcpProvider object`
9303 
9304 Asserting party: the GCP project the organization is bound to.
9305 
9306 - `type: optional "gcp"`
9307 
9308 default: gcp
9309 
9310 - `project_number: string`
9311 
9312 - `FederatedActorOidcProvider object`
9313 
9314 Asserting party: a customer-registered OIDC federation issuer.
9315 
9316 - `type: optional "oidc"`
9317 
9318 default: oidc
9319 
9320 - `issuer: optional string or null`
9321 
9322 The federation issuer's URL. Null when the presented credential failed verification.
9323 
9324 - `ip_address: optional string or null`
9325 
9326 - `subject: optional string or null`
9327 
9328 The provider's verified identifier for the caller; its form depends on the provider.
9329 
9330 - `user_agent: optional string or null`
9331 
9332 - `AttestedDeviceActor object`
9333 
9334 An attested mobile device authenticated via Apple App Attest.
9335 
9336 - `type: optional "attested_device_actor"`
9337 
9338 default: attested_device_actor
9339 
9340 - `external_client_id: string`
9341 
9342 - `kid_hash: string`
9343 
9344 - `ip_address: optional string or null`
9345 
9346 - `user_agent: optional string or null`
9347 
9348 - `claude_artifact_id: string`
9349 
9350 The artifact's identifier.
9351 
9352 - `id: optional string`
9353 
9354 Unique identifier for the activity e.g. 'activity_abcd1234'
9355 
9356 - `claude_artifact_version_id: optional string or null`
9357 
9358 The version of the artifact the user was served, when known.
9359 
9360 - `created_at: optional string`
9361 
9362 When this activity occurred.
9363 
9364 format: date-time
9365 
9366 - `organization_id: optional string or null`
9367 
9368 Organization ID this activity is associated with
9369 
9370 - `organization_uuid: optional string or null`
9371 
9372 Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or
9204 The number of accounts on the explicit write allowlist b

api/compliance/apps Changed · +60 / -43 lines

from line 3516
35163516 
35173517**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
35183518 
3519Streams the content of one version of a Claude Code Artifact as the
3520response body.
3519Streams the content of one version of an Artifact as the response body, in chunks with no `Content-Length`. With `multi_file_format=zip`, a version with more than one file, other than a Claude Doc's (an Artifact whose `artifact_type` is `claude_docs`), comes back as a ZIP archive of its files.
35213520 
3522Returns 404 for Artifacts that don't exist or belong to another parent
3523organization. A listed version id can start returning 404 if subsequent
3524publishes rotated it out of retained history — re-list on 404. Returns
3525503 while the version's content upload is still in flight or was
3526abandoned — retry with backoff. Returns 422 with
3527`error.details.error_code` `multi_file_unavailable` for a version that
3528has more than one file, unless the request sets `multi_file_format=zip`,
3529which returns those files as a ZIP archive. With `multi_file_format=zip`,
3530a version with more than one file, one of them with a name the API cannot
3531export, gets 422 `file_set_unavailable`. Do not retry a 422. A Claude
3532Doc's versions hold only the web page that displays the Doc and never come
3533back as a ZIP. That page usually has more than one file, so a Doc's version
3534usually gets the 422 `multi_file_unavailable`. Download the Doc's text with
3535`GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
3536Oversized encoded content aborts mid-stream: headers and initial bytes arrive
3537but the body terminates early — an aborted chunked transfer is the
3538only truncation signal for encoded content. `Content-MD5` is emitted
3539only for identity-stored content; validate against it when present.
3521Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}-{version_id}.zip` for a ZIP archive, otherwise `{artifact_id}-{version_id}.txt`, whatever the content is. `Content-MD5` is only on a single file stored uncompressed, so it is never on a ZIP archive. Check the body against it when present.
35403522 
3523Errors specific to this download:
3524 
3525- `404`: the Artifact doesn't exist or the API key cannot read it, or the version is no longer kept. Older versions are dropped as new ones are published, so list the Artifact's versions again. You also get this when the organization's customer-managed encryption key can't be used. Retry once the key can be used again.
3526- `503`: the content can't be served right now, for example because its upload is still in progress or was abandoned. Retry with backoff.
3527- `422` with `error.details.error_code` `multi_file_unavailable`: the version has more than one file. Add `multi_file_format=zip`. A Claude Doc's version with more than one file gets this error either way, because it holds only the web page that displays the Doc. Download the Doc's text with `GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
3528- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the version has more than one file, and one of them has a path the API cannot export. Do not retry.
3529 
3530An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
3531 
3532A ZIP archive of a version's files holds one top-level folder, named for the Artifact and version. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
3533 
3534`files.json` has these fields:
3535 
3536- `artifact_id`: the Artifact ID, as in the request.
3537- `version_id`: the version ID, as in the request.
3538- `title`: the title of the version in the archive, or that version's ID when no title is kept.
3539- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
3540- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
3541- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
3542 
3543`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
3544 
35413545#### Path parameters
35423546 
35433547- `artifact_id: string`
from line 3556
35523556 
35533557- `multi_file_format: optional string`
35543558 
3555 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. Files the Artifact copied from its type (the app that displays every Artifact of that type) are listed under `omitted_files` in the index, and left out of the archive, when an organization other than the Artifact's owns that type. Files the version uses from another Artifact are always listed there and left out. A Claude Doc's version never comes back as a ZIP: it is answered as without this parameter, except that a version with more than one file, one of them with a name the API cannot export, gets 422 `file_set_unavailable`. A version with one file is returned as that file, as without this parameter.
3559 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. A version with one file is returned as that file. A Claude Doc's version never comes back as a ZIP.
35563560 
35573561#### Headers
35583562 
from line 3580
35763580 
35773581**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/content`
35783582 
3579Streams an Artifact's current content as the response body. For a
3580Claude Doc, that is the Doc's text as a ZIP archive of Word files, one per
3581text tab, and the request must set `multi_file_format=zip`. For any other
3582Artifact, it is the latest version, as
3583`GET /v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
3584returns it.
3583Streams an Artifact's current content as the response body, in chunks with no `Content-Length`.
35853584 
3586Returns 404 for Artifacts that don't exist or that the API key cannot read.
3587Returns 400 with `error.details.error_code` `cmek_key_disabled` when the
3588organization's customer-managed encryption key can't be used, for example
3589because it is disabled or revoked. Returns 503 when the content can't be
3590produced right now; wait the number of seconds in the `Retry-After`
3591header, or retry with backoff when it is absent. For a Claude Doc, a 422's
3592`error.details.error_code` is `multi_file_unavailable` when the request
3593does not set `multi_file_format=zip`, `document_unavailable` when the Doc
3594has no text to export (for example, it has no text tab or is in the trash),
3595`document_too_large` when the export is over 16 MiB, or
3596`cmek_org_unsupported` when the organization uses customer-managed
3597encryption keys and the export can't be served for it right now. For any
3598other Artifact, the 422s are the version download's.
3585For a Claude Doc (an Artifact whose `artifact_type` is `claude_docs`), the request must set `multi_file_format=zip`, and the content is the Doc's text as a ZIP archive of Word files. That ZIP has no `files.json`. It holds one Word file per text tab, in tab order, named `NN-<tab id>.docx`, where `NN` counts from `01`. A Doc with one text tab gets one file, `01-document.docx`.
35993586 
3587For any other Artifact, the content is the latest version. With `multi_file_format=zip`, when the latest version has more than one file, it comes back as a ZIP archive of its files.
3588 
3589Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}.zip` for a ZIP archive, otherwise `{artifact_id}.txt`, whatever the content is. `Content-MD5` is always on a Claude Doc's ZIP, only on a single file stored uncompressed, and never on a ZIP archive of a version's files. Check the body against it when present.
3590 
3591Errors specific to this download:
3592 
3593- `404`: the Artifact doesn't exist, or the API key cannot read it.
3594- `400` with `error.details.error_code` `cmek_key_disabled`: the organization's customer-managed encryption key can't be used, for example because it is disabled or revoked. Retry once the key can be used again.
3595- `503`: the content can't be produced right now. Wait the number of seconds in the `Retry-After` header, or retry with backoff when it is absent.
3596- `422` with `multi_file_unavailable`: the request does not set `multi_file_format=zip`, and the Artifact is a Claude Doc or its latest version has more than one file. Add the parameter.
3597- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the Artifact is not a Claude Doc, and one of the latest version's files has a path the API cannot export. Do not retry.
3598- `422` with `document_unavailable`: Claude Docs has no document it can export for the Doc, for example because it has no text tab or is in the trash. Retrying will not help unless that changes.
3599- `422` with `document_too_large`: the Doc's export is over 16 MiB. Do not retry.
3600- `422` with `cmek_org_unsupported`: the organization uses customer-managed encryption keys and the export can't be served for it right now. Try again later, and contact Anthropic support if this continues.
3601 
3602An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
3603 
3604A ZIP archive of a version's files holds one top-level folder, named for the Artifact. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
3605 
3606`files.json` has these fields:
3607 
3608- `artifact_id`: the Artifact ID, as in the request.
3609- `version_id`: null.
3610- `title`: the title of the version in the archive, or that version's ID when no title is kept.
3611- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
3612- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
3613- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
3614 
3615`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
3616 
36003617#### Path parameters
36013618 
36023619- `artifact_id: string`
from line 3624
36073624 
36083625- `multi_file_format: optional string`
36093626 
3610 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact it works as on the version download: when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
3627 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact, when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
36113628 
36123629#### Headers
36133630 

api/compliance/apps/code Changed · +60 / -43 lines

from line 223
223223 
224224**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
225225 
226Streams the content of one version of a Claude Code Artifact as the
227response body.
226Streams the content of one version of an Artifact as the response body, in chunks with no `Content-Length`. With `multi_file_format=zip`, a version with more than one file, other than a Claude Doc's (an Artifact whose `artifact_type` is `claude_docs`), comes back as a ZIP archive of its files.
228227 
229Returns 404 for Artifacts that don't exist or belong to another parent
230organization. A listed version id can start returning 404 if subsequent
231publishes rotated it out of retained history — re-list on 404. Returns
232503 while the version's content upload is still in flight or was
233abandoned — retry with backoff. Returns 422 with
234`error.details.error_code` `multi_file_unavailable` for a version that
235has more than one file, unless the request sets `multi_file_format=zip`,
236which returns those files as a ZIP archive. With `multi_file_format=zip`,
237a version with more than one file, one of them with a name the API cannot
238export, gets 422 `file_set_unavailable`. Do not retry a 422. A Claude
239Doc's versions hold only the web page that displays the Doc and never come
240back as a ZIP. That page usually has more than one file, so a Doc's version
241usually gets the 422 `multi_file_unavailable`. Download the Doc's text with
242`GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
243Oversized encoded content aborts mid-stream: headers and initial bytes arrive
244but the body terminates early — an aborted chunked transfer is the
245only truncation signal for encoded content. `Content-MD5` is emitted
246only for identity-stored content; validate against it when present.
228Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}-{version_id}.zip` for a ZIP archive, otherwise `{artifact_id}-{version_id}.txt`, whatever the content is. `Content-MD5` is only on a single file stored uncompressed, so it is never on a ZIP archive. Check the body against it when present.
247229 
230Errors specific to this download:
231 
232- `404`: the Artifact doesn't exist or the API key cannot read it, or the version is no longer kept. Older versions are dropped as new ones are published, so list the Artifact's versions again. You also get this when the organization's customer-managed encryption key can't be used. Retry once the key can be used again.
233- `503`: the content can't be served right now, for example because its upload is still in progress or was abandoned. Retry with backoff.
234- `422` with `error.details.error_code` `multi_file_unavailable`: the version has more than one file. Add `multi_file_format=zip`. A Claude Doc's version with more than one file gets this error either way, because it holds only the web page that displays the Doc. Download the Doc's text with `GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
235- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the version has more than one file, and one of them has a path the API cannot export. Do not retry.
236 
237An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
238 
239A ZIP archive of a version's files holds one top-level folder, named for the Artifact and version. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
240 
241`files.json` has these fields:
242 
243- `artifact_id`: the Artifact ID, as in the request.
244- `version_id`: the version ID, as in the request.
245- `title`: the title of the version in the archive, or that version's ID when no title is kept.
246- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
247- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
248- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
249 
250`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
251 
248252#### Path parameters
249253 
250254- `artifact_id: string`
from line 263
259263 
260264- `multi_file_format: optional string`
261265 
262 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. Files the Artifact copied from its type (the app that displays every Artifact of that type) are listed under `omitted_files` in the index, and left out of the archive, when an organization other than the Artifact's owns that type. Files the version uses from another Artifact are always listed there and left out. A Claude Doc's version never comes back as a ZIP: it is answered as without this parameter, except that a version with more than one file, one of them with a name the API cannot export, gets 422 `file_set_unavailable`. A version with one file is returned as that file, as without this parameter.
266 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. A version with one file is returned as that file. A Claude Doc's version never comes back as a ZIP.
263267 
264268#### Headers
265269 
from line 287
283287 
284288**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/content`
285289 
286Streams an Artifact's current content as the response body. For a
287Claude Doc, that is the Doc's text as a ZIP archive of Word files, one per
288text tab, and the request must set `multi_file_format=zip`. For any other
289Artifact, it is the latest version, as
290`GET /v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
291returns it.
290Streams an Artifact's current content as the response body, in chunks with no `Content-Length`.
292291 
293Returns 404 for Artifacts that don't exist or that the API key cannot read.
294Returns 400 with `error.details.error_code` `cmek_key_disabled` when the
295organization's customer-managed encryption key can't be used, for example
296because it is disabled or revoked. Returns 503 when the content can't be
297produced right now; wait the number of seconds in the `Retry-After`
298header, or retry with backoff when it is absent. For a Claude Doc, a 422's
299`error.details.error_code` is `multi_file_unavailable` when the request
300does not set `multi_file_format=zip`, `document_unavailable` when the Doc
301has no text to export (for example, it has no text tab or is in the trash),
302`document_too_large` when the export is over 16 MiB, or
303`cmek_org_unsupported` when the organization uses customer-managed
304encryption keys and the export can't be served for it right now. For any
305other Artifact, the 422s are the version download's.
292For a Claude Doc (an Artifact whose `artifact_type` is `claude_docs`), the request must set `multi_file_format=zip`, and the content is the Doc's text as a ZIP archive of Word files. That ZIP has no `files.json`. It holds one Word file per text tab, in tab order, named `NN-<tab id>.docx`, where `NN` counts from `01`. A Doc with one text tab gets one file, `01-document.docx`.
306293 
294For any other Artifact, the content is the latest version. With `multi_file_format=zip`, when the latest version has more than one file, it comes back as a ZIP archive of its files.
295 
296Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}.zip` for a ZIP archive, otherwise `{artifact_id}.txt`, whatever the content is. `Content-MD5` is always on a Claude Doc's ZIP, only on a single file stored uncompressed, and never on a ZIP archive of a version's files. Check the body against it when present.
297 
298Errors specific to this download:
299 
300- `404`: the Artifact doesn't exist, or the API key cannot read it.
301- `400` with `error.details.error_code` `cmek_key_disabled`: the organization's customer-managed encryption key can't be used, for example because it is disabled or revoked. Retry once the key can be used again.
302- `503`: the content can't be produced right now. Wait the number of seconds in the `Retry-After` header, or retry with backoff when it is absent.
303- `422` with `multi_file_unavailable`: the request does not set `multi_file_format=zip`, and the Artifact is a Claude Doc or its latest version has more than one file. Add the parameter.
304- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the Artifact is not a Claude Doc, and one of the latest version's files has a path the API cannot export. Do not retry.
305- `422` with `document_unavailable`: Claude Docs has no document it can export for the Doc, for example because it has no text tab or is in the trash. Retrying will not help unless that changes.
306- `422` with `document_too_large`: the Doc's export is over 16 MiB. Do not retry.
307- `422` with `cmek_org_unsupported`: the organization uses customer-managed encryption keys and the export can't be served for it right now. Try again later, and contact Anthropic support if this continues.
308 
309An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
310 
311A ZIP archive of a version's files holds one top-level folder, named for the Artifact. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
312 
313`files.json` has these fields:
314 
315- `artifact_id`: the Artifact ID, as in the request.
316- `version_id`: null.
317- `title`: the title of the version in the archive, or that version's ID when no title is kept.
318- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
319- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
320- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
321 
322`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
323 
307324#### Path parameters
308325 
309326- `artifact_id: string`
from line 331
314331 
315332- `multi_file_format: optional string`
316333 
317 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact it works as on the version download: when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
334 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact, when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
318335 
319336#### Headers
320337 

api/compliance/apps/code/artifacts Changed · +60 / -43 lines

from line 221
221221 
222222**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
223223 
224Streams the content of one version of a Claude Code Artifact as the
225response body.
224Streams the content of one version of an Artifact as the response body, in chunks with no `Content-Length`. With `multi_file_format=zip`, a version with more than one file, other than a Claude Doc's (an Artifact whose `artifact_type` is `claude_docs`), comes back as a ZIP archive of its files.
226225 
227Returns 404 for Artifacts that don't exist or belong to another parent
228organization. A listed version id can start returning 404 if subsequent
229publishes rotated it out of retained history — re-list on 404. Returns
230503 while the version's content upload is still in flight or was
231abandoned — retry with backoff. Returns 422 with
232`error.details.error_code` `multi_file_unavailable` for a version that
233has more than one file, unless the request sets `multi_file_format=zip`,
234which returns those files as a ZIP archive. With `multi_file_format=zip`,
235a version with more than one file, one of them with a name the API cannot
236export, gets 422 `file_set_unavailable`. Do not retry a 422. A Claude
237Doc's versions hold only the web page that displays the Doc and never come
238back as a ZIP. That page usually has more than one file, so a Doc's version
239usually gets the 422 `multi_file_unavailable`. Download the Doc's text with
240`GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
241Oversized encoded content aborts mid-stream: headers and initial bytes arrive
242but the body terminates early — an aborted chunked transfer is the
243only truncation signal for encoded content. `Content-MD5` is emitted
244only for identity-stored content; validate against it when present.
226Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}-{version_id}.zip` for a ZIP archive, otherwise `{artifact_id}-{version_id}.txt`, whatever the content is. `Content-MD5` is only on a single file stored uncompressed, so it is never on a ZIP archive. Check the body against it when present.
245227 
228Errors specific to this download:
229 
230- `404`: the Artifact doesn't exist or the API key cannot read it, or the version is no longer kept. Older versions are dropped as new ones are published, so list the Artifact's versions again. You also get this when the organization's customer-managed encryption key can't be used. Retry once the key can be used again.
231- `503`: the content can't be served right now, for example because its upload is still in progress or was abandoned. Retry with backoff.
232- `422` with `error.details.error_code` `multi_file_unavailable`: the version has more than one file. Add `multi_file_format=zip`. A Claude Doc's version with more than one file gets this error either way, because it holds only the web page that displays the Doc. Download the Doc's text with `GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
233- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the version has more than one file, and one of them has a path the API cannot export. Do not retry.
234 
235An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
236 
237A ZIP archive of a version's files holds one top-level folder, named for the Artifact and version. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
238 
239`files.json` has these fields:
240 
241- `artifact_id`: the Artifact ID, as in the request.
242- `version_id`: the version ID, as in the request.
243- `title`: the title of the version in the archive, or that version's ID when no title is kept.
244- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
245- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
246- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
247 
248`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
249 
246250### Path parameters
247251 
248252- `artifact_id: string`
from line 261
257261 
258262- `multi_file_format: optional string`
259263 
260 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. Files the Artifact copied from its type (the app that displays every Artifact of that type) are listed under `omitted_files` in the index, and left out of the archive, when an organization other than the Artifact's owns that type. Files the version uses from another Artifact are always listed there and left out. A Claude Doc's version never comes back as a ZIP: it is answered as without this parameter, except that a version with more than one file, one of them with a name the API cannot export, gets 422 `file_set_unavailable`. A version with one file is returned as that file, as without this parameter.
264 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. A version with one file is returned as that file. A Claude Doc's version never comes back as a ZIP.
261265 
262266### Headers
263267 
from line 285
281285 
282286**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/content`
283287 
284Streams an Artifact's current content as the response body. For a
285Claude Doc, that is the Doc's text as a ZIP archive of Word files, one per
286text tab, and the request must set `multi_file_format=zip`. For any other
287Artifact, it is the latest version, as
288`GET /v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
289returns it.
288Streams an Artifact's current content as the response body, in chunks with no `Content-Length`.
290289 
291Returns 404 for Artifacts that don't exist or that the API key cannot read.
292Returns 400 with `error.details.error_code` `cmek_key_disabled` when the
293organization's customer-managed encryption key can't be used, for example
294because it is disabled or revoked. Returns 503 when the content can't be
295produced right now; wait the number of seconds in the `Retry-After`
296header, or retry with backoff when it is absent. For a Claude Doc, a 422's
297`error.details.error_code` is `multi_file_unavailable` when the request
298does not set `multi_file_format=zip`, `document_unavailable` when the Doc
299has no text to export (for example, it has no text tab or is in the trash),
300`document_too_large` when the export is over 16 MiB, or
301`cmek_org_unsupported` when the organization uses customer-managed
302encryption keys and the export can't be served for it right now. For any
303other Artifact, the 422s are the version download's.
290For a Claude Doc (an Artifact whose `artifact_type` is `claude_docs`), the request must set `multi_file_format=zip`, and the content is the Doc's text as a ZIP archive of Word files. That ZIP has no `files.json`. It holds one Word file per text tab, in tab order, named `NN-<tab id>.docx`, where `NN` counts from `01`. A Doc with one text tab gets one file, `01-document.docx`.
304291 
292For any other Artifact, the content is the latest version. With `multi_file_format=zip`, when the latest version has more than one file, it comes back as a ZIP archive of its files.
293 
294Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}.zip` for a ZIP archive, otherwise `{artifact_id}.txt`, whatever the content is. `Content-MD5` is always on a Claude Doc's ZIP, only on a single file stored uncompressed, and never on a ZIP archive of a version's files. Check the body against it when present.
295 
296Errors specific to this download:
297 
298- `404`: the Artifact doesn't exist, or the API key cannot read it.
299- `400` with `error.details.error_code` `cmek_key_disabled`: the organization's customer-managed encryption key can't be used, for example because it is disabled or revoked. Retry once the key can be used again.
300- `503`: the content can't be produced right now. Wait the number of seconds in the `Retry-After` header, or retry with backoff when it is absent.
301- `422` with `multi_file_unavailable`: the request does not set `multi_file_format=zip`, and the Artifact is a Claude Doc or its latest version has more than one file. Add the parameter.
302- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the Artifact is not a Claude Doc, and one of the latest version's files has a path the API cannot export. Do not retry.
303- `422` with `document_unavailable`: Claude Docs has no document it can export for the Doc, for example because it has no text tab or is in the trash. Retrying will not help unless that changes.
304- `422` with `document_too_large`: the Doc's export is over 16 MiB. Do not retry.
305- `422` with `cmek_org_unsupported`: the organization uses customer-managed encryption keys and the export can't be served for it right now. Try again later, and contact Anthropic support if this continues.
306 
307An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
308 
309A ZIP archive of a version's files holds one top-level folder, named for the Artifact. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
310 
311`files.json` has these fields:
312 
313- `artifact_id`: the Artifact ID, as in the request.
314- `version_id`: null.
315- `title`: the title of the version in the archive, or that version's ID when no title is kept.
316- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
317- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
318- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
319 
320`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
321 
305322### Path parameters
306323 
307324- `artifact_id: string`
from line 329
312329 
313330- `multi_file_format: optional string`
314331 
315 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact it works as on the version download: when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
332 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact, when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
316333 
317334### Headers
318335 

api/compliance/apps/code/artifacts/download Changed · +33 / -20 lines

from line 7
77 
88**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/content`
99 
10Streams an Artifact's current content as the response body. For a
11Claude Doc, that is the Doc's text as a ZIP archive of Word files, one per
12text tab, and the request must set `multi_file_format=zip`. For any other
13Artifact, it is the latest version, as
14`GET /v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
15returns it.
10Streams an Artifact's current content as the response body, in chunks with no `Content-Length`.
1611 
17Returns 404 for Artifacts that don't exist or that the API key cannot read.
18Returns 400 with `error.details.error_code` `cmek_key_disabled` when the
19organization's customer-managed encryption key can't be used, for example
20because it is disabled or revoked. Returns 503 when the content can't be
21produced right now; wait the number of seconds in the `Retry-After`
22header, or retry with backoff when it is absent. For a Claude Doc, a 422's
23`error.details.error_code` is `multi_file_unavailable` when the request
24does not set `multi_file_format=zip`, `document_unavailable` when the Doc
25has no text to export (for example, it has no text tab or is in the trash),
26`document_too_large` when the export is over 16 MiB, or
27`cmek_org_unsupported` when the organization uses customer-managed
28encryption keys and the export can't be served for it right now. For any
29other Artifact, the 422s are the version download's.
12For a Claude Doc (an Artifact whose `artifact_type` is `claude_docs`), the request must set `multi_file_format=zip`, and the content is the Doc's text as a ZIP archive of Word files. That ZIP has no `files.json`. It holds one Word file per text tab, in tab order, named `NN-<tab id>.docx`, where `NN` counts from `01`. A Doc with one text tab gets one file, `01-document.docx`.
3013 
14For any other Artifact, the content is the latest version. With `multi_file_format=zip`, when the latest version has more than one file, it comes back as a ZIP archive of its files.
15 
16Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}.zip` for a ZIP archive, otherwise `{artifact_id}.txt`, whatever the content is. `Content-MD5` is always on a Claude Doc's ZIP, only on a single file stored uncompressed, and never on a ZIP archive of a version's files. Check the body against it when present.
17 
18Errors specific to this download:
19 
20- `404`: the Artifact doesn't exist, or the API key cannot read it.
21- `400` with `error.details.error_code` `cmek_key_disabled`: the organization's customer-managed encryption key can't be used, for example because it is disabled or revoked. Retry once the key can be used again.
22- `503`: the content can't be produced right now. Wait the number of seconds in the `Retry-After` header, or retry with backoff when it is absent.
23- `422` with `multi_file_unavailable`: the request does not set `multi_file_format=zip`, and the Artifact is a Claude Doc or its latest version has more than one file. Add the parameter.
24- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the Artifact is not a Claude Doc, and one of the latest version's files has a path the API cannot export. Do not retry.
25- `422` with `document_unavailable`: Claude Docs has no document it can export for the Doc, for example because it has no text tab or is in the trash. Retrying will not help unless that changes.
26- `422` with `document_too_large`: the Doc's export is over 16 MiB. Do not retry.
27- `422` with `cmek_org_unsupported`: the organization uses customer-managed encryption keys and the export can't be served for it right now. Try again later, and contact Anthropic support if this continues.
28 
29An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
30 
31A ZIP archive of a version's files holds one top-level folder, named for the Artifact. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
32 
33`files.json` has these fields:
34 
35- `artifact_id`: the Artifact ID, as in the request.
36- `version_id`: null.
37- `title`: the title of the version in the archive, or that version's ID when no title is kept.
38- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
39- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
40- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
41 
42`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
43 
3144## Path parameters
3245 
3346- `artifact_id: string`
from line 51
3851 
3952- `multi_file_format: optional string`
4053 
41 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact it works as on the version download: when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
54 Set to `zip`, its only value. A Claude Doc downloads only this way, as a ZIP archive of Word files, one per text tab. For any other Artifact, when the latest version has more than one file, it comes back as a ZIP archive of its files with an index, `files.json`.
4255 
4356## Headers
4457 

api/compliance/apps/code/artifacts/retrieve_version Changed · +25 / -21 lines

from line 7
77 
88**GET** `/v1/compliance/apps/code/artifacts/{artifact_id}/versions/{version_id}`
99 
10Streams the content of one version of a Claude Code Artifact as the
11response body.
10Streams the content of one version of an Artifact as the response body, in chunks with no `Content-Length`. With `multi_file_format=zip`, a version with more than one file, other than a Claude Doc's (an Artifact whose `artifact_type` is `claude_docs`), comes back as a ZIP archive of its files.
1211 
13Returns 404 for Artifacts that don't exist or belong to another parent
14organization. A listed version id can start returning 404 if subsequent
15publishes rotated it out of retained history — re-list on 404. Returns
16503 while the version's content upload is still in flight or was
17abandoned — retry with backoff. Returns 422 with
18`error.details.error_code` `multi_file_unavailable` for a version that
19has more than one file, unless the request sets `multi_file_format=zip`,
20which returns those files as a ZIP archive. With `multi_file_format=zip`,
21a version with more than one file, one of them with a name the API cannot
22export, gets 422 `file_set_unavailable`. Do not retry a 422. A Claude
23Doc's versions hold only the web page that displays the Doc and never come
24back as a ZIP. That page usually has more than one file, so a Doc's version
25usually gets the 422 `multi_file_unavailable`. Download the Doc's text with
26`GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
27Oversized encoded content aborts mid-stream: headers and initial bytes arrive
28but the body terminates early — an aborted chunked transfer is the
29only truncation signal for encoded content. `Content-MD5` is emitted
30only for identity-stored content; validate against it when present.
12Headers: `Content-Type` (`application/zip` for a ZIP archive, otherwise the stored MIME type), `Content-Disposition: attachment; filename*=utf-8''<name>` (RFC 5987), `Cache-Control: no-store, private` and, when available, `Content-MD5` (base64). `<name>` is `{artifact_id}-{version_id}.zip` for a ZIP archive, otherwise `{artifact_id}-{version_id}.txt`, whatever the content is. `Content-MD5` is only on a single file stored uncompressed, so it is never on a ZIP archive. Check the body against it when present.
3113 
14Errors specific to this download:
15 
16- `404`: the Artifact doesn't exist or the API key cannot read it, or the version is no longer kept. Older versions are dropped as new ones are published, so list the Artifact's versions again. You also get this when the organization's customer-managed encryption key can't be used. Retry once the key can be used again.
17- `503`: the content can't be served right now, for example because its upload is still in progress or was abandoned. Retry with backoff.
18- `422` with `error.details.error_code` `multi_file_unavailable`: the version has more than one file. Add `multi_file_format=zip`. A Claude Doc's version with more than one file gets this error either way, because it holds only the web page that displays the Doc. Download the Doc's text with `GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip`.
19- `422` with `file_set_unavailable`: the request sets `multi_file_format=zip`, the version has more than one file, and one of them has a path the API cannot export. Do not retry.
20 
21An error after the download has started stops the body early, with the `200` status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no `Content-MD5`, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
22 
23A ZIP archive of a version's files holds one top-level folder, named for the Artifact and version. That folder holds a `files/` folder and an index, `files.json`. The index is written last, so treat an archive as incomplete if it cannot be opened or has no `files.json` in its top-level folder.
24 
25`files.json` has these fields:
26 
27- `artifact_id`: the Artifact ID, as in the request.
28- `version_id`: the version ID, as in the request.
29- `title`: the title of the version in the archive, or that version's ID when no title is kept.
30- `created_at`: when the version was published (RFC 3339, UTC), or null when that is not known.
31- `files`: one entry for each file under `files/`, with `original_path` (the file's path in the version), `exported_as` (its path in the archive), `sha256` (lowercase hex), `size_bytes` (before compression) and `mime_type`. `exported_as` is the top-level folder, then `files/`, then `original_path`. A name that could not be saved or opened safely on every operating system is changed. Use `exported_as`, not `original_path`, to find a file in the archive.
32- `omitted_files`: the files left out of the archive, each with `original_path`, `sha256`, `size_bytes` and `mime_type`. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
33 
34`files` and `omitted_files` together list at most 4,096 files, their `size_bytes` add up to at most 1 GiB, and no file is over 20 MiB.
35 
3236## Path parameters
3337 
3438- `artifact_id: string`
from line 47
4347 
4448- `multi_file_format: optional string`
4549 
46 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. Files the Artifact copied from its type (the app that displays every Artifact of that type) are listed under `omitted_files` in the index, and left out of the archive, when an organization other than the Artifact's owns that type. Files the version uses from another Artifact are always listed there and left out. A Claude Doc's version never comes back as a ZIP: it is answered as without this parameter, except that a version with more than one file, one of them with a name the API cannot export, gets 422 `file_set_unavailable`. A version with one file is returned as that file, as without this parameter.
50 Set to `zip`, its only value, to receive a version that has more than one file as a ZIP archive of its files with an index, `files.json`. A version with one file is returned as that file. A Claude Doc's version never comes back as a ZIP.
4751 
4852## Headers
4953 

api/messages Changed · +3 / -3 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 25
2525 
2626- `"anthropic-user-profile-id": optional string`
2727 
28 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization. Requires the `user-profiles` beta header.
28 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization.
2929 
3030- `"anthropic-workspace-id": optional string`
3131 
from line 4553
45534553 
45544554- `"anthropic-user-profile-id": optional string`
45554555 
4556 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization. Requires the `user-profiles` beta header.
4556 The user profile ID to attribute this request to. Use when acting on behalf of a party other than your organization.
45574557 
45584558- `"anthropic-workspace-id": optional string`
45594559 
from line 8559
85598559 
85608560 default: tool_use
85618561 
8562 - `i
8562 - `id: string`
8563 
8564 pattern: ^[a-zA-Z0-9_-]+$
8565 
8566 - `caller: ToolUseCaller`
8567 
8568 Which pa

api/opentelemetry/spans Changed · +5 / -4 lines

from line 135
135135| `anthropic.message.stop_reason` | `string` | The response's [`stop_reason`](https://platform.claude.com/docs/en/api/messages#stop_reason), for example `end_turn`. |
136136| `anthropic.response.service_tier` | `string` | The service tier that served the request: the response's [`usage.service_tier`](https://platform.claude.com/docs/en/api/messages#usage). See [how requests get assigned tiers](https://platform.claude.com/docs/en/api/service-tiers#how-requests-get-assigned-tiers). |
137137| `error.type` | `string` | A failed request's [error type](https://platform.claude.com/docs/en/api/errors#http-errors), for example `rate_limit_error`.<br />**SDK:** Also the other values in [SDK spans for requests](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-resources-method).<br />**API:** `api_error` when the API ends the request without an error response. |
138| `gen_ai.response.time_to_first_chunk` | `double` | Only on a streaming response's SDK span. The seconds from when the SDK first sent the request to the stream's first `content_block_delta` event, if it has one. |
138| `gen_ai.response.time_to_first_chunk` | `double` | Only on a streaming response's spans. The seconds to the stream's first `content_block_delta` event, if it has one. |
139139| `gen_ai.usage.reasoning.output_tokens` | `int` | The response's thinking tokens. They are part of the output tokens. Absent when the response's usage doesn't have details for the output tokens. |
140140| `anthropic.usage.compaction.input_tokens` | `int` | Input tokens of the request's [compactions](https://platform.claude.com/docs/en/build-with-claude/compaction), including cache reads and writes. Not part of `gen_ai.usage.input_tokens`. Absent when the response has no compaction. |
141141| `anthropic.usage.compaction.output_tokens` | `int` | Output tokens of the request's compactions. Not part of `gen_ai.usage.output_tokens`. Absent when the response has no compaction. |
from line 209
209209 * The [`anthropic.sessions.events.send`](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-sessions-events-send) span for the request in which the event was sent, for a turn that started because of an event, for example a [`user.message`](https://platform.claude.com/docs/en/api/beta/sessions/events#beta_managed_agents_user_message_event) event.
210210 * The [`anthropic.sessions.update`](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-sessions-update) span, for a turn that resumes because the session budget was raised or removed through the request.
211211 * The `anthropic.session.turn` span for the turn of [the agent that the session runs](https://platform.claude.com/docs/en/managed-agents/multiagent-orchestration) during which that agent started this turn, for a turn on another thread.
212 * None, for a turn that starts because an agent on another thread replied or finished its turn, such as an agent that the primary agent called.
212 * The `anthropic.session.turn` span for the turn that produced the reply, for a turn that starts because an agent on another thread replied, such as an agent that the primary agent called.
213 * None, for any other turn, such as a turn that starts because a [workflow run](https://platform.claude.com/docs/en/managed-agents/workflow-runs) ended.
213214 
214215* **Children:**
215216 
216217 * An [`anthropic.model_request`](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-model-request) span for each model request in the turn.
217218 * A tool span each time the API runs a tool in the turn, except in the [cases listed in the tool span section](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-tool-use-anthropic-mcp-tool-use-and-anthropic-custom-tool-use).
218 * An `anthropic.session.turn` span for each turn that the agent that the session runs started on another thread during this turn.
219 * An `anthropic.session.turn` span for each turn on another thread that was started during this turn by the agent that the session runs, or by this turn's reply.
219220 * An [`anthropic.session.outcome_evaluation`](https://platform.claude.com/docs/en/api/opentelemetry/spans#anthropic-session-outcome-evaluation) span for each iteration of an outcome evaluation that this turn starts.
220221 
221222A turn starts when its thread enters the `running` state and ends when the thread leaves it.
from line 305
304305| `gen_ai.tool.description` | `string` | Only on SDK spans. The description in the tool definition. Absent when the description is empty. |
305306| `gen_ai.tool.type` | `string` | Only on SDK spans. `function` |
306307| `gen_ai.tool.call.arguments` | `string` | <Badge>Content</Badge> A JSON string that follows the OpenTelemetry [`ToolCallArguments`](https://github.com/open-telemetry/semantic-conventions-genai/blob/e57c543b4889619eb2a05702471937db5119165d/model/gen-ai/gen-ai-tool-call-arguments.json) schema. The tool use's [`input`](https://platform.claude.com/docs/en/api/messages#tool_use_block). |
307| `anthropic.tool_result.content` | `string` | <Badge>Content</Badge> A JSON string with an array of content blocks or with one object. The `content` of the tool result that goes back to the model. Also for an error result, except on Managed Agents when the connection to the MCP server failed.<br />**API:** On the Messages API, a string `content` becomes an array with one [`text`](https://platform.claude.com/docs/en/api/messages#text_block) block. |
308| `anthropic.tool_result.content` | `string` | <Badge>Content</Badge> A JSON string with an array of content blocks. The `content` of the tool result that goes back to the model. Also for an error result, except on Managed Agents when the connection to the MCP server failed. A string `content` becomes an array with one [`text`](https://platform.claude.com/docs/en/api/messages#text_block) block.<br />**API:** On the Messages API, when a server tool's result `content` is one object, such as a `code_execution_result`, it becomes an array with that object. |
308309 
309310### `anthropic.compaction`
310311 

api/user_profiles New page · 1983 lines, new page

# User Profiles ## Create User Profile ### Headers ### Body parameters ### Returns ### Example #### Response (200) ## List User Profiles ### Query parameters ### Headers ### Returns ### Example #### Response (200) ## Get User Profile ### Path parameters ### Headers ### Returns ### Example #### Response (200) ## Update User Profile ### Path parameters ### Headers ### Body parameters ### Returns ### Example #### Response (200) ## Delete User Profile ### Path parameters ### Headers ### Returns ### Example #### Response (200) ## Domain types ### Deleted User Profile ### User Profile ### User Profile Access Type ### User Profile Cyber Program ### User Profile Cyber Requirements ### User Profile Cyber Tier ### User Profile Efs Feature ### User Profile Efs Program ### User Profile External User Account Status ### User Profile External User Details ### User Profile External User Details Params ### User Profile External User Entity Type ### User Profile List Order ### User Profile List Order By ### User Profile Program Status ### User Profile Programs ## User Profiles › Action URLs ### Create Action URL #### Path parameters #### Headers #### Body parameters #### Returns #### Example ##### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: User Profiles
url: https://platform.claude.com/docs/en/api/user_profiles
---

# User Profiles

## Create User Profile

**POST** `/v1/user_profiles`

Create User Profile

### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

### Body parameters

- `access_type: optional UserProfileAccessType`

  How the platform uses the API for this entity. `application` (default): the profile represents an individual end-user of the platform's product. `passthrough`: the profile identifies a company the platform resells Claude access to.

  - `"application"`

    The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

  - `"passthrough"`

    The user profile represents a company that the platform resells Claude access to.

- `external_user_details: optional UserProfileExternalUserDetailsParams`

  Details about the entity this profile represents, as the platform states them. Every field is optional. Not accepted under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which take the top-level `external_id` (and, under `user-profiles-2026-08-18`, `external_user_onboarded_at`) instead.

  - `account_status: optional UserProfileExternalUserAccountStatus or null`

    The status of the entity's account on the platform: `active`, `suspended` or `blocked`.

    - `"active"`

      The platform has neither restricted nor barred the account of the entity that the user profile represents.

    - `"suspended"`

      The platform has restricted the account of the entity that the user profile represents and may restore it.

    - `"blocked"`

      The platform has barred the account of the entity that the user profile represents.

  - `country: optional string or null`

    The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.

  - `email_hash: optional string or null`

    A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `entity_type: optional UserProfileExternalUserEntityType or null`

    What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`.

    - `"individual"`

    - `"business"`

    - `"non_profit"`

    - `"government"`

  - `name_hash: optional string or null`

    A hash of the entity's name, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `onboarded_at: optional string`

    When the entity opened its account with the platform, in RFC 3339 format: for an `application` profile, when the end-user signed up; for a `passthrough` profile, when the company became the platform's customer. Must be a complete timestamp no more than 1 minute in the future.

    format: date-time

  - `reference_id: optional string or null`

    The platform's own reference for the entity, for example the key of the end-user's row in the platform's database. Not interpreted by Anthropic and not enforced unique. 1 to 255 characters.

    minLength: 1, maxLength: 255

- `metadata: optional map[string]`

  Free-form key-value data to attach to this user profile. Maximum 16 keys, with keys up to 64 characters and values up to 512 characters. Values must be non-empty strings.

- `name: optional string or null`

  Optional for all profiles. Real-world name of the entity this profile represents (company or individual); for a company the platform resells Claude access to (`access_type` `passthrough`), that company's name where known. Maximum 255 characters.

  minLength: 1, maxLength: 255

### Returns

- `UserProfile object`

  A record of an entity that the platform serves through the API, such as an end-user of the platform's product or a company that the platform resells Claude access to.

  A Messages, Message Batches or token counting request can send a profile's `id` in the `anthropic-user-profile-id` header to attribute the request to that entity.

  - `type: "user_profile"`

    Object type. Always `user_profile`.

  - `id: string`

    Unique identifier for this user profile, prefixed `uprof_`.

  - `access_type: UserProfileAccessType`

    How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.

    - `"application"`

      The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

    - `"passthrough"`

      The user profile represents a company that the platform resells Claude access to.

  - `created_at: string`

    When this user profile was created, in RFC 3339 format.

    format: date-time

  - `external_user_details: UserProfileExternalUserDetails`

    Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.

    - `account_status: UserProfileExternalUserAccountStatus or null`

      The status of the entity's account on the platform: `active`, `suspended` or `blocked`. `null` until the platform supplies one.

      - `"active"`

        The platform has neither restricted nor barred the account of the entity that the user profile represents.

      - `"suspended"`

        The platform has restricted the account of the entity that the user profile represents and may restore it.

      - `"blocked"`

        The platform has barred the account of the entity that the user profile represents.

    - `country: string or null`

      The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. `null` until the platform supplies one.

    - `email_hash: string or null`

      The platform-computed hash of the entity's email address. `null` until the platform supplies one.

    - `entity_type: UserProfileExternalUserEntityType or null`

      What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`. `null` until the platform supplies one.

      - `"individual"`

      - `"business"`

      - `"non_profit"`

      - `"government"`

    - `name_hash: string or null`

      The platform-computed hash of the entity's name. `null` until the platform supplies one.

    - `onboarded_at: string or null`

      When the entity opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one.

      format: date-time

    - `reference_id: string or null`

      The platform's own reference for the entity. `null` until the platform supplies one.

  - `metadata: map[string]`

    Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

  - `name: string or null`

    Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.

  - `programs: UserProfilePrograms`

    The profile's standing in each Anthropic program, such as the Cyber Verification Program. Present when the request sends no user-profiles beta header; absent under the `user-profiles-2026-09-04` and earlier beta headers, which serve `trust_grants` instead.

    - `cyber: UserProfileCyberProgram or null`

      The profile's standing in the Cyber Verification Program. `null` when the profile has no status in it. Only retrieving the profile gives the full answer: a list or update response can show `null`, or a status other than `active`, for a profile that reads `active` when retrieved.

      - `requirements: UserProfileCyberRequirements or null`

        What a request that names the profile must allow to get the relaxed safeguards of every `active` tier. `null` when no tier is `active`, and wherever `tiers` is `{}`.

        - `data_retention: boolean`

          Whether Anthropic must be able to retain the request's inference data.

        - `human_review: boolean`

          Whether Anthropic personnel must be allowed to review the data retained from the request.

      - `status: UserProfileProgramStatus`

        `active` when at least one tier is `active`, or when the profile has the program's access to earlier models. That access is not a tier: a profile that has it alone reads `active` with every tier `inactive`, or with `tiers` `{}` on a response that does not report tiers. When nothing is `active`, `pending` means that an application or enrollment is under review, or that what Anthropic approved does not yet apply to this profile, and `rejected` means that the application or enrollment was declined.

        - `"active"`

          The profile is in the program.

        - `"pending"`

          The profile is not in the program yet, and something is still awaited.

        - `"rejected"`

          The profile is not in the program and nothing is awaited: Anthropic has declined, or has withdrawn an earlier approval.

      - `tiers: map[UserProfileCyberTier]`

        The program's tiers, keyed by tier: `a` (Specialized Access), `b` (Red Team Access) and `c` (Defense Access). A response reports either every tier or none. When it reports them, as retrieving the profile normally does, every tier has a key, whether or not it applies to the profile. When it does not, as in the list of user profiles, `tiers` is `{}`, which does not mean that the tiers are inactive. No tier implies another, so read the tier you need. Anthropic may add tiers; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when the tier applies to the profile, otherwise `inactive`. The response does not say why a tier is `inactive`: it can be in review, declined, withdrawn, never applied for, or approved but not applied to this profile.

          - `"active"`

          - `"inactive"`

    - `efs: UserProfileEfsProgram or null`

      The profile's standing in Enterprise Frontier Safeguards. `null` unless the platform's attestation for the program is in place on this profile, or the entity it represents has applied to the program. A list of user profiles does not report this program: there it reads `null` for every profile, so retrieve the profile to read it.

      - `features: map[UserProfileEfsFeature]`

        The program's features, keyed by feature: `data_retention_exemption` (use of models that normally require data retention, without the data being retained), `cmek` (customer-managed encryption keys) and `storage` (customer-owned storage). Every feature that the caller's organization may read has a key, whether or not it is approved; a missing key does not mean that the feature is inactive. Anthropic may add features; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when Anthropic has approved the entity the profile represents to use the feature, otherwise `inactive`. `active` does not mean that the feature is set up or switched on, which is a separate step.

          - `"active"`

          - `"inactive"`

      - `status: UserProfileProgramStatus`

        Anthropic's decision on the entity the profile represents: `pending` while it is awaited, `active` once Anthropic has approved the entity for the program, or `rejected` once Anthropic has declined or has removed the entity from the program. `active` does not mean that any one feature is approved: read the feature you need in `features`.

  - `updated_at: string`

    When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.

    format: date-time

### Example

```bash
curl https://api.anthropic.com/v1/user_profiles \
    -H 'Content-Type: application/json' \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY" \
    -d '{
          "external_user_details": {
            "account_status": "active",
            "country": "US",
            "entity_type": "business",
            "onboarded_at": "2024-11-02T08:15:00Z",
            "reference_id": "user_12345"
          },
          "metadata": {},
          "name": "Example User"
        }'
```

Cut at 300 lines. The page has the rest.

api/user_profiles/action_urls New page · 130 lines, new page

# Action URLs ## Create Action URL ### Path parameters ### Headers ### Body parameters ### Returns ### Example #### Response (200) ## Domain types ### User Profile Action ### User Profile Action URL ### User Profile Enroll End User Action

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Action URLs
url: https://platform.claude.com/docs/en/api/user_profiles/action_urls
---

# Action URLs

## Create Action URL

**POST** `/v1/user_profiles/{user_profile_id}/action_urls`

Create Action URL

### Path parameters

- `user_profile_id: string`

  The ID of the user profile the action is for (`uprof_...`).

### Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

### Body parameters

- `action: UserProfileAction`

  The action that the person who opens the URL takes.

  - `UserProfileEnrollEndUserAction object`

    The end-user that the profile represents enrolls in a program.

    - `type: "enroll_end_user"`

### Returns

- `UserProfileActionURL object`

  A URL to give to the person who takes the requested action.

  - `type: "user_profile_action_url"`

    Object type. Always `user_profile_action_url`.

  - `expires_at: string`

    When the URL stops working, in RFC 3339 format.

    format: date-time

  - `url: string`

    The URL to give to the person who takes the action. Anyone who holds it can open it until `expires_at`.

### Example

```bash
curl https://api.anthropic.com/v1/user_profiles/$USER_PROFILE_ID/action_urls \
    -H 'Content-Type: application/json' \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY" \
    -d '{
          "action": {
            "type": "enroll_end_user"
          }
        }'
```

#### Response (200)

```json
{
  "expires_at": "2026-03-15T10:15:00Z",
  "type": "user_profile_action_url",
  "url": "https://platform.claude.com/user-profiles/enrollment/M3J0bGJxZ2ppMnptbnB1"
}
```

## Domain types

### User Profile Action

- `UserProfileAction = UserProfileEnrollEndUserAction`

  The action that the person who opens the URL takes, discriminated by `type`.

  - `UserProfileEnrollEndUserAction object`

    The end-user that the profile represents enrolls in a program.

    - `type: "enroll_end_user"`

### User Profile Action URL

- `UserProfileActionURL object`

  A URL to give to the person who takes the requested action.

  - `type: "user_profile_action_url"`

    Object type. Always `user_profile_action_url`.

  - `expires_at: string`

    When the URL stops working, in RFC 3339 format.

    format: date-time

  - `url: string`

    The URL to give to the person who takes the action. Anyone who holds it can open it until `expires_at`.

### User Profile Enroll End User Action

- `UserProfileEnrollEndUserAction object`

  The end-user that the profile represents enrolls in a program.

  - `type: "enroll_end_user"`

api/user_profiles/action_urls/create New page · 86 lines, new page

# Create Action URL ## Path parameters ## Headers ## Body parameters ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Create Action URL
url: https://platform.claude.com/docs/en/api/user_profiles/action_urls/create
---

# Create Action URL

**POST** `/v1/user_profiles/{user_profile_id}/action_urls`

Create Action URL

## Path parameters

- `user_profile_id: string`

  The ID of the user profile the action is for (`uprof_...`).

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Body parameters

- `action: UserProfileAction`

  The action that the person who opens the URL takes.

  - `UserProfileEnrollEndUserAction object`

    The end-user that the profile represents enrolls in a program.

    - `type: "enroll_end_user"`

## Returns

- `UserProfileActionURL object`

  A URL to give to the person who takes the requested action.

  - `type: "user_profile_action_url"`

    Object type. Always `user_profile_action_url`.

  - `expires_at: string`

    When the URL stops working, in RFC 3339 format.

    format: date-time

  - `url: string`

    The URL to give to the person who takes the action. Anyone who holds it can open it until `expires_at`.

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles/$USER_PROFILE_ID/action_urls \
    -H 'Content-Type: application/json' \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY" \
    -d '{
          "action": {
            "type": "enroll_end_user"
          }
        }'
```

### Response (200)

```json
{
  "expires_at": "2026-03-15T10:15:00Z",
  "type": "user_profile_action_url",
  "url": "https://platform.claude.com/user-profiles/enrollment/M3J0bGJxZ2ppMnptbnB1"
}
```

api/user_profiles/create New page · 355 lines, new page

# Create User Profile ## Headers ## Body parameters ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Create User Profile
url: https://platform.claude.com/docs/en/api/user_profiles/create
---

# Create User Profile

**POST** `/v1/user_profiles`

Create User Profile

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Body parameters

- `access_type: optional UserProfileAccessType`

  How the platform uses the API for this entity. `application` (default): the profile represents an individual end-user of the platform's product. `passthrough`: the profile identifies a company the platform resells Claude access to.

  - `"application"`

    The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

  - `"passthrough"`

    The user profile represents a company that the platform resells Claude access to.

- `external_user_details: optional UserProfileExternalUserDetailsParams`

  Details about the entity this profile represents, as the platform states them. Every field is optional. Not accepted under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which take the top-level `external_id` (and, under `user-profiles-2026-08-18`, `external_user_onboarded_at`) instead.

  - `account_status: optional UserProfileExternalUserAccountStatus or null`

    The status of the entity's account on the platform: `active`, `suspended` or `blocked`.

    - `"active"`

      The platform has neither restricted nor barred the account of the entity that the user profile represents.

    - `"suspended"`

      The platform has restricted the account of the entity that the user profile represents and may restore it.

    - `"blocked"`

      The platform has barred the account of the entity that the user profile represents.

  - `country: optional string or null`

    The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.

  - `email_hash: optional string or null`

    A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `entity_type: optional UserProfileExternalUserEntityType or null`

    What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`.

    - `"individual"`

    - `"business"`

    - `"non_profit"`

    - `"government"`

  - `name_hash: optional string or null`

    A hash of the entity's name, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `onboarded_at: optional string`

    When the entity opened its account with the platform, in RFC 3339 format: for an `application` profile, when the end-user signed up; for a `passthrough` profile, when the company became the platform's customer. Must be a complete timestamp no more than 1 minute in the future.

    format: date-time

  - `reference_id: optional string or null`

    The platform's own reference for the entity, for example the key of the end-user's row in the platform's database. Not interpreted by Anthropic and not enforced unique. 1 to 255 characters.

    minLength: 1, maxLength: 255

- `metadata: optional map[string]`

  Free-form key-value data to attach to this user profile. Maximum 16 keys, with keys up to 64 characters and values up to 512 characters. Values must be non-empty strings.

- `name: optional string or null`

  Optional for all profiles. Real-world name of the entity this profile represents (company or individual); for a company the platform resells Claude access to (`access_type` `passthrough`), that company's name where known. Maximum 255 characters.

  minLength: 1, maxLength: 255

## Returns

- `UserProfile object`

  A record of an entity that the platform serves through the API, such as an end-user of the platform's product or a company that the platform resells Claude access to.

  A Messages, Message Batches or token counting request can send a profile's `id` in the `anthropic-user-profile-id` header to attribute the request to that entity.

  - `type: "user_profile"`

    Object type. Always `user_profile`.

  - `id: string`

    Unique identifier for this user profile, prefixed `uprof_`.

  - `access_type: UserProfileAccessType`

    How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.

    - `"application"`

      The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

    - `"passthrough"`

      The user profile represents a company that the platform resells Claude access to.

  - `created_at: string`

    When this user profile was created, in RFC 3339 format.

    format: date-time

  - `external_user_details: UserProfileExternalUserDetails`

    Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.

    - `account_status: UserProfileExternalUserAccountStatus or null`

      The status of the entity's account on the platform: `active`, `suspended` or `blocked`. `null` until the platform supplies one.

      - `"active"`

        The platform has neither restricted nor barred the account of the entity that the user profile represents.

      - `"suspended"`

        The platform has restricted the account of the entity that the user profile represents and may restore it.

      - `"blocked"`

        The platform has barred the account of the entity that the user profile represents.

    - `country: string or null`

      The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. `null` until the platform supplies one.

    - `email_hash: string or null`

      The platform-computed hash of the entity's email address. `null` until the platform supplies one.

    - `entity_type: UserProfileExternalUserEntityType or null`

      What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`. `null` until the platform supplies one.

      - `"individual"`

      - `"business"`

      - `"non_profit"`

      - `"government"`

    - `name_hash: string or null`

      The platform-computed hash of the entity's name. `null` until the platform supplies one.

    - `onboarded_at: string or null`

      When the entity opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one.

      format: date-time

    - `reference_id: string or null`

      The platform's own reference for the entity. `null` until the platform supplies one.

  - `metadata: map[string]`

    Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

  - `name: string or null`

    Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.

  - `programs: UserProfilePrograms`

    The profile's standing in each Anthropic program, such as the Cyber Verification Program. Present when the request sends no user-profiles beta header; absent under the `user-profiles-2026-09-04` and earlier beta headers, which serve `trust_grants` instead.

    - `cyber: UserProfileCyberProgram or null`

      The profile's standing in the Cyber Verification Program. `null` when the profile has no status in it. Only retrieving the profile gives the full answer: a list or update response can show `null`, or a status other than `active`, for a profile that reads `active` when retrieved.

      - `requirements: UserProfileCyberRequirements or null`

        What a request that names the profile must allow to get the relaxed safeguards of every `active` tier. `null` when no tier is `active`, and wherever `tiers` is `{}`.

        - `data_retention: boolean`

          Whether Anthropic must be able to retain the request's inference data.

        - `human_review: boolean`

          Whether Anthropic personnel must be allowed to review the data retained from the request.

      - `status: UserProfileProgramStatus`

        `active` when at least one tier is `active`, or when the profile has the program's access to earlier models. That access is not a tier: a profile that has it alone reads `active` with every tier `inactive`, or with `tiers` `{}` on a response that does not report tiers. When nothing is `active`, `pending` means that an application or enrollment is under review, or that what Anthropic approved does not yet apply to this profile, and `rejected` means that the application or enrollment was declined.

        - `"active"`

          The profile is in the program.

        - `"pending"`

          The profile is not in the program yet, and something is still awaited.

        - `"rejected"`

          The profile is not in the program and nothing is awaited: Anthropic has declined, or has withdrawn an earlier approval.

      - `tiers: map[UserProfileCyberTier]`

        The program's tiers, keyed by tier: `a` (Specialized Access), `b` (Red Team Access) and `c` (Defense Access). A response reports either every tier or none. When it reports them, as retrieving the profile normally does, every tier has a key, whether or not it applies to the profile. When it does not, as in the list of user profiles, `tiers` is `{}`, which does not mean that the tiers are inactive. No tier implies another, so read the tier you need. Anthropic may add tiers; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when the tier applies to the profile, otherwise `inactive`. The response does not say why a tier is `inactive`: it can be in review, declined, withdrawn, never applied for, or approved but not applied to this profile.

          - `"active"`

          - `"inactive"`

    - `efs: UserProfileEfsProgram or null`

      The profile's standing in Enterprise Frontier Safeguards. `null` unless the platform's attestation for the program is in place on this profile, or the entity it represents has applied to the program. A list of user profiles does not report this program: there it reads `null` for every profile, so retrieve the profile to read it.

      - `features: map[UserProfileEfsFeature]`

        The program's features, keyed by feature: `data_retention_exemption` (use of models that normally require data retention, without the data being retained), `cmek` (customer-managed encryption keys) and `storage` (customer-owned storage). Every feature that the caller's organization may read has a key, whether or not it is approved; a missing key does not mean that the feature is inactive. Anthropic may add features; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when Anthropic has approved the entity the profile represents to use the feature, otherwise `inactive`. `active` does not mean that the feature is set up or switched on, which is a separate step.

          - `"active"`

          - `"inactive"`

      - `status: UserProfileProgramStatus`

        Anthropic's decision on the entity the profile represents: `pending` while it is awaited, `active` once Anthropic has approved the entity for the program, or `rejected` once Anthropic has declined or has removed the entity from the program. `active` does not mean that any one feature is approved: read the feature you need in `features`.

  - `updated_at: string`

    When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.

    format: date-time

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles \
    -H 'Content-Type: application/json' \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY" \
    -d '{
          "external_user_details": {
            "account_status": "active",
            "country": "US",
            "entity_type": "business",
            "onboarded_at": "2024-11-02T08:15:00Z",
            "reference_id": "user_12345"
          },
          "metadata": {},
          "name": "Example User"
        }'
```

### Response (200)

Cut at 300 lines. The page has the rest.

api/user_profiles/delete New page · 60 lines, new page

# Delete User Profile ## Path parameters ## Headers ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Delete User Profile
url: https://platform.claude.com/docs/en/api/user_profiles/delete
---

# Delete User Profile

**DELETE** `/v1/user_profiles/{user_profile_id}`

Delete User Profile

## Path parameters

- `user_profile_id: string`

  The ID of the user profile to delete (`uprof_...`).

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Returns

- `DeletedUserProfile object`

  - `type: "user_profile_deleted"`

    Object type. Always `user_profile_deleted`.

  - `id: string`

    Identifier of the deleted user profile, prefixed `uprof_`.

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles/$USER_PROFILE_ID \
    -X DELETE \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
  "type": "user_profile_deleted"
}
```

api/user_profiles/list New page · 294 lines, new page

# List User Profiles ## Query parameters ## Headers ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: List User Profiles
url: https://platform.claude.com/docs/en/api/user_profiles/list
---

# List User Profiles

**GET** `/v1/user_profiles`

List User Profiles

## Query parameters

- `limit: optional number`

  The maximum number of user profiles to return, from 1 to 100. Defaults to 20.

  format: int32

- `order: optional UserProfileListOrder`

  The sort direction, applied to the field that `order_by` selects. Defaults to `desc`.

  - `"asc"`

    Oldest first when `order_by` is `created_at`, or names in ascending order when `order_by` is `name`.

  - `"desc"`

    Newest first when `order_by` is `created_at`, or names in descending order when `order_by` is `name`. This is the default.

- `order_by: optional UserProfileListOrderBy`

  The field to sort user profiles by, in the direction that `order` sets. Defaults to `created_at`.

  - `"created_at"`

    Sort by when each user profile was created. This is the default.

  - `"name"`

    Sort by `name`, ignoring the case of ASCII letters. Profiles without a name come last in either direction.

- `page: optional string`

  The cursor for the page to return, taken from `next_page` in a previous response.

  Leave it out to get the first page.

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Returns

- `data: array of UserProfile`

  User profiles on this page.

  - `type: "user_profile"`

    Object type. Always `user_profile`.

  - `id: string`

    Unique identifier for this user profile, prefixed `uprof_`.

  - `access_type: UserProfileAccessType`

    How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.

    - `"application"`

      The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

    - `"passthrough"`

      The user profile represents a company that the platform resells Claude access to.

  - `created_at: string`

    When this user profile was created, in RFC 3339 format.

    format: date-time

  - `external_user_details: UserProfileExternalUserDetails`

    Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.

    - `account_status: UserProfileExternalUserAccountStatus or null`

      The status of the entity's account on the platform: `active`, `suspended` or `blocked`. `null` until the platform supplies one.

      - `"active"`

        The platform has neither restricted nor barred the account of the entity that the user profile represents.

      - `"suspended"`

        The platform has restricted the account of the entity that the user profile represents and may restore it.

      - `"blocked"`

        The platform has barred the account of the entity that the user profile represents.

    - `country: string or null`

      The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. `null` until the platform supplies one.

    - `email_hash: string or null`

      The platform-computed hash of the entity's email address. `null` until the platform supplies one.

    - `entity_type: UserProfileExternalUserEntityType or null`

      What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`. `null` until the platform supplies one.

      - `"individual"`

      - `"business"`

      - `"non_profit"`

      - `"government"`

    - `name_hash: string or null`

      The platform-computed hash of the entity's name. `null` until the platform supplies one.

    - `onboarded_at: string or null`

      When the entity opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one.

      format: date-time

    - `reference_id: string or null`

      The platform's own reference for the entity. `null` until the platform supplies one.

  - `metadata: map[string]`

    Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

  - `name: string or null`

    Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.

  - `programs: UserProfilePrograms`

    The profile's standing in each Anthropic program, such as the Cyber Verification Program. Present when the request sends no user-profiles beta header; absent under the `user-profiles-2026-09-04` and earlier beta headers, which serve `trust_grants` instead.

    - `cyber: UserProfileCyberProgram or null`

      The profile's standing in the Cyber Verification Program. `null` when the profile has no status in it. Only retrieving the profile gives the full answer: a list or update response can show `null`, or a status other than `active`, for a profile that reads `active` when retrieved.

      - `requirements: UserProfileCyberRequirements or null`

        What a request that names the profile must allow to get the relaxed safeguards of every `active` tier. `null` when no tier is `active`, and wherever `tiers` is `{}`.

        - `data_retention: boolean`

          Whether Anthropic must be able to retain the request's inference data.

        - `human_review: boolean`

          Whether Anthropic personnel must be allowed to review the data retained from the request.

      - `status: UserProfileProgramStatus`

        `active` when at least one tier is `active`, or when the profile has the program's access to earlier models. That access is not a tier: a profile that has it alone reads `active` with every tier `inactive`, or with `tiers` `{}` on a response that does not report tiers. When nothing is `active`, `pending` means that an application or enrollment is under review, or that what Anthropic approved does not yet apply to this profile, and `rejected` means that the application or enrollment was declined.

        - `"active"`

          The profile is in the program.

        - `"pending"`

          The profile is not in the program yet, and something is still awaited.

        - `"rejected"`

          The profile is not in the program and nothing is awaited: Anthropic has declined, or has withdrawn an earlier approval.

      - `tiers: map[UserProfileCyberTier]`

        The program's tiers, keyed by tier: `a` (Specialized Access), `b` (Red Team Access) and `c` (Defense Access). A response reports either every tier or none. When it reports them, as retrieving the profile normally does, every tier has a key, whether or not it applies to the profile. When it does not, as in the list of user profiles, `tiers` is `{}`, which does not mean that the tiers are inactive. No tier implies another, so read the tier you need. Anthropic may add tiers; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when the tier applies to the profile, otherwise `inactive`. The response does not say why a tier is `inactive`: it can be in review, declined, withdrawn, never applied for, or approved but not applied to this profile.

          - `"active"`

          - `"inactive"`

    - `efs: UserProfileEfsProgram or null`

      The profile's standing in Enterprise Frontier Safeguards. `null` unless the platform's attestation for the program is in place on this profile, or the entity it represents has applied to the program. A list of user profiles does not report this program: there it reads `null` for every profile, so retrieve the profile to read it.

      - `features: map[UserProfileEfsFeature]`

        The program's features, keyed by feature: `data_retention_exemption` (use of models that normally require data retention, without the data being retained), `cmek` (customer-managed encryption keys) and `storage` (customer-owned storage). Every feature that the caller's organization may read has a key, whether or not it is approved; a missing key does not mean that the feature is inactive. Anthropic may add features; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when Anthropic has approved the entity the profile represents to use the feature, otherwise `inactive`. `active` does not mean that the feature is set up or switched on, which is a separate step.

          - `"active"`

          - `"inactive"`

      - `status: UserProfileProgramStatus`

        Anthropic's decision on the entity the profile represents: `pending` while it is awaited, `active` once Anthropic has approved the entity for the program, or `rejected` once Anthropic has declined or has removed the entity from the program. `active` does not mean that any one feature is approved: read the feature you need in `features`.

  - `updated_at: string`

    When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.

    format: date-time

- `next_page: string or null`

  Cursor for the next page, or `null` when there are no more results.

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "data": [
    {
      "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
      "access_type": "application",
      "created_at": "2026-03-15T10:00:00Z",
      "external_user_details": {
        "account_status": "active",
        "country": "US",
        "email_hash": null,
        "entity_type": "business",
        "name_hash": null,
        "onboarded_at": "2024-11-02T08:15:00Z",
        "reference_id": "user_12345"
      },
      "metadata": {},
      "name": "Example User",
      "programs": {
        "cyber": {
          "requirements": {
            "data_retention": true,
            "human_review": true
          },
          "status": "active",
          "tiers": {}
        },
        "efs": {
          "features": {
            "data_retention_exemption": {
              "status": "inactive"
            },
            "cmek": {
              "status": "active"
            },
            "storage": {
              "status": "inactive"
            }
          },
          "status": "active"
        }
      },
      "type": "user_profile",
      "updated_at": "2026-03-15T10:00:00Z"
    }
  ],
  "next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}
```

api/user_profiles/retrieve New page · 265 lines, new page

# Get User Profile ## Path parameters ## Headers ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Get User Profile
url: https://platform.claude.com/docs/en/api/user_profiles/retrieve
---

# Get User Profile

**GET** `/v1/user_profiles/{user_profile_id}`

Get User Profile

## Path parameters

- `user_profile_id: string`

  The ID of the user profile to get (`uprof_...`).

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Returns

- `UserProfile object`

  A record of an entity that the platform serves through the API, such as an end-user of the platform's product or a company that the platform resells Claude access to.

  A Messages, Message Batches or token counting request can send a profile's `id` in the `anthropic-user-profile-id` header to attribute the request to that entity.

  - `type: "user_profile"`

    Object type. Always `user_profile`.

  - `id: string`

    Unique identifier for this user profile, prefixed `uprof_`.

  - `access_type: UserProfileAccessType`

    How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.

    - `"application"`

      The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

    - `"passthrough"`

      The user profile represents a company that the platform resells Claude access to.

  - `created_at: string`

    When this user profile was created, in RFC 3339 format.

    format: date-time

  - `external_user_details: UserProfileExternalUserDetails`

    Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.

    - `account_status: UserProfileExternalUserAccountStatus or null`

      The status of the entity's account on the platform: `active`, `suspended` or `blocked`. `null` until the platform supplies one.

      - `"active"`

        The platform has neither restricted nor barred the account of the entity that the user profile represents.

      - `"suspended"`

        The platform has restricted the account of the entity that the user profile represents and may restore it.

      - `"blocked"`

        The platform has barred the account of the entity that the user profile represents.

    - `country: string or null`

      The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. `null` until the platform supplies one.

    - `email_hash: string or null`

      The platform-computed hash of the entity's email address. `null` until the platform supplies one.

    - `entity_type: UserProfileExternalUserEntityType or null`

      What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`. `null` until the platform supplies one.

      - `"individual"`

      - `"business"`

      - `"non_profit"`

      - `"government"`

    - `name_hash: string or null`

      The platform-computed hash of the entity's name. `null` until the platform supplies one.

    - `onboarded_at: string or null`

      When the entity opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one.

      format: date-time

    - `reference_id: string or null`

      The platform's own reference for the entity. `null` until the platform supplies one.

  - `metadata: map[string]`

    Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

  - `name: string or null`

    Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.

  - `programs: UserProfilePrograms`

    The profile's standing in each Anthropic program, such as the Cyber Verification Program. Present when the request sends no user-profiles beta header; absent under the `user-profiles-2026-09-04` and earlier beta headers, which serve `trust_grants` instead.

    - `cyber: UserProfileCyberProgram or null`

      The profile's standing in the Cyber Verification Program. `null` when the profile has no status in it. Only retrieving the profile gives the full answer: a list or update response can show `null`, or a status other than `active`, for a profile that reads `active` when retrieved.

      - `requirements: UserProfileCyberRequirements or null`

        What a request that names the profile must allow to get the relaxed safeguards of every `active` tier. `null` when no tier is `active`, and wherever `tiers` is `{}`.

        - `data_retention: boolean`

          Whether Anthropic must be able to retain the request's inference data.

        - `human_review: boolean`

          Whether Anthropic personnel must be allowed to review the data retained from the request.

      - `status: UserProfileProgramStatus`

        `active` when at least one tier is `active`, or when the profile has the program's access to earlier models. That access is not a tier: a profile that has it alone reads `active` with every tier `inactive`, or with `tiers` `{}` on a response that does not report tiers. When nothing is `active`, `pending` means that an application or enrollment is under review, or that what Anthropic approved does not yet apply to this profile, and `rejected` means that the application or enrollment was declined.

        - `"active"`

          The profile is in the program.

        - `"pending"`

          The profile is not in the program yet, and something is still awaited.

        - `"rejected"`

          The profile is not in the program and nothing is awaited: Anthropic has declined, or has withdrawn an earlier approval.

      - `tiers: map[UserProfileCyberTier]`

        The program's tiers, keyed by tier: `a` (Specialized Access), `b` (Red Team Access) and `c` (Defense Access). A response reports either every tier or none. When it reports them, as retrieving the profile normally does, every tier has a key, whether or not it applies to the profile. When it does not, as in the list of user profiles, `tiers` is `{}`, which does not mean that the tiers are inactive. No tier implies another, so read the tier you need. Anthropic may add tiers; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when the tier applies to the profile, otherwise `inactive`. The response does not say why a tier is `inactive`: it can be in review, declined, withdrawn, never applied for, or approved but not applied to this profile.

          - `"active"`

          - `"inactive"`

    - `efs: UserProfileEfsProgram or null`

      The profile's standing in Enterprise Frontier Safeguards. `null` unless the platform's attestation for the program is in place on this profile, or the entity it represents has applied to the program. A list of user profiles does not report this program: there it reads `null` for every profile, so retrieve the profile to read it.

      - `features: map[UserProfileEfsFeature]`

        The program's features, keyed by feature: `data_retention_exemption` (use of models that normally require data retention, without the data being retained), `cmek` (customer-managed encryption keys) and `storage` (customer-owned storage). Every feature that the caller's organization may read has a key, whether or not it is approved; a missing key does not mean that the feature is inactive. Anthropic may add features; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when Anthropic has approved the entity the profile represents to use the feature, otherwise `inactive`. `active` does not mean that the feature is set up or switched on, which is a separate step.

          - `"active"`

          - `"inactive"`

      - `status: UserProfileProgramStatus`

        Anthropic's decision on the entity the profile represents: `pending` while it is awaited, `active` once Anthropic has approved the entity for the program, or `rejected` once Anthropic has declined or has removed the entity from the program. `active` does not mean that any one feature is approved: read the feature you need in `features`.

  - `updated_at: string`

    When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.

    format: date-time

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles/$USER_PROFILE_ID \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY"
```

### Response (200)

```json
{
  "id": "uprof_011CZkZCu8hGbp5mYRQgUmz9",
  "access_type": "application",
  "created_at": "2026-03-15T10:00:00Z",
  "external_user_details": {
    "account_status": "active",
    "country": "US",
    "email_hash": null,
    "entity_type": "business",
    "name_hash": null,
    "onboarded_at": "2024-11-02T08:15:00Z",
    "reference_id": "user_12345"
  },
  "metadata": {},
  "name": "Example User",
  "programs": {
    "cyber": {
      "requirements": {
        "data_retention": true,
        "human_review": true
      },
      "status": "active",
      "tiers": {
        "a": {
          "status": "inactive"
        },
        "b": {
          "status": "inactive"
        },
        "c": {
          "status": "inactive"
        }
      }
    },
    "efs": {
      "features": {
        "data_retention_exemption": {
          "status": "inactive"
        },
        "cmek": {
          "status": "active"
        },
        "storage": {
          "status": "inactive"
        }
      },
      "status": "active"
    }
  },
  "type": "user_profile",
  "updated_at": "2026-03-15T10:00:00Z"
}
```

api/user_profiles/update New page · 355 lines, new page

# Update User Profile ## Path parameters ## Headers ## Body parameters ## Returns ## Example ### Response (200)

A whole new page. There's nothing to diff it against, so here is what it says.

---
title: Update User Profile
url: https://platform.claude.com/docs/en/api/user_profiles/update
---

# Update User Profile

**POST** `/v1/user_profiles/{user_profile_id}`

Update User Profile

## Path parameters

- `user_profile_id: string`

  The ID of the user profile to update (`uprof_...`).

## Headers

- `"anthropic-version": optional string`

  The version of the Claude API you want to use.

  Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning?sdk_languages=http).

- `"anthropic-workspace-id": optional string`

  Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

  Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

## Body parameters

- `access_type: optional UserProfileAccessType or null`

  If present, replaces the stored access type. Omit to leave unchanged.

  - `"application"`

    The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

  - `"passthrough"`

    The user profile represents a company that the platform resells Claude access to.

- `external_user_details: optional UserProfileExternalUserDetailsParams`

  Details about the entity this profile represents, as the platform states them. Each field sent replaces the stored value; omit a field to leave it unchanged. Once set, a value cannot be cleared and `null` is rejected. Not accepted under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers.

  - `account_status: optional UserProfileExternalUserAccountStatus or null`

    The status of the entity's account on the platform: `active`, `suspended` or `blocked`.

    - `"active"`

      The platform has neither restricted nor barred the account of the entity that the user profile represents.

    - `"suspended"`

      The platform has restricted the account of the entity that the user profile represents and may restore it.

    - `"blocked"`

      The platform has barred the account of the entity that the user profile represents.

  - `country: optional string or null`

    The country of the entity (not of the platform), as the platform determines it: an ISO 3166-1 alpha-2 code in upper case, for example `US`. Only the form, two uppercase ASCII letters, is checked.

  - `email_hash: optional string or null`

    A hash of the entity's email address, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `entity_type: optional UserProfileExternalUserEntityType or null`

    What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`.

    - `"individual"`

    - `"business"`

    - `"non_profit"`

    - `"government"`

  - `name_hash: optional string or null`

    A hash of the entity's name, computed by the platform. Anthropic treats it as an opaque string and does not prescribe the hash function. 1 to 255 characters.

    minLength: 1, maxLength: 255

  - `onboarded_at: optional string`

    When the entity opened its account with the platform, in RFC 3339 format: for an `application` profile, when the end-user signed up; for a `passthrough` profile, when the company became the platform's customer. Must be a complete timestamp no more than 1 minute in the future.

    format: date-time

  - `reference_id: optional string or null`

    The platform's own reference for the entity, for example the key of the end-user's row in the platform's database. Not interpreted by Anthropic and not enforced unique. 1 to 255 characters.

    minLength: 1, maxLength: 255

- `metadata: optional map[string]`

  Key-value pairs to merge into the stored metadata. Keys provided overwrite existing values. To remove a key, set its value to an empty string. Keys not provided are left unchanged. Maximum 16 keys, with keys up to 64 characters and values up to 512 characters.

- `name: optional string or null`

  If present, replaces the stored name. Omit to leave unchanged. Maximum 255 characters.

  minLength: 1, maxLength: 255

## Returns

- `UserProfile object`

  A record of an entity that the platform serves through the API, such as an end-user of the platform's product or a company that the platform resells Claude access to.

  A Messages, Message Batches or token counting request can send a profile's `id` in the `anthropic-user-profile-id` header to attribute the request to that entity.

  - `type: "user_profile"`

    Object type. Always `user_profile`.

  - `id: string`

    Unique identifier for this user profile, prefixed `uprof_`.

  - `access_type: UserProfileAccessType`

    How the platform uses the API for this entity: `application` (default) or `passthrough`. Absent under the legacy `user-profiles-2026-03-24` beta header.

    - `"application"`

      The user profile represents an individual end-user of a product that the platform builds on the API. New profiles get this value by default.

    - `"passthrough"`

      The user profile represents a company that the platform resells Claude access to.

  - `created_at: string`

    When this user profile was created, in RFC 3339 format.

    format: date-time

  - `external_user_details: UserProfileExternalUserDetails`

    Details about the entity this profile represents, as the platform states them; not verified by Anthropic. Every field is present, `null` until the platform supplies a value. Absent under the legacy `user-profiles-2026-03-24` and `user-profiles-2026-08-18` beta headers, which serve `reference_id` as the top-level `external_id` and, under `user-profiles-2026-08-18`, `onboarded_at` as `external_user_onboarded_at`.

    - `account_status: UserProfileExternalUserAccountStatus or null`

      The status of the entity's account on the platform: `active`, `suspended` or `blocked`. `null` until the platform supplies one.

      - `"active"`

        The platform has neither restricted nor barred the account of the entity that the user profile represents.

      - `"suspended"`

        The platform has restricted the account of the entity that the user profile represents and may restore it.

      - `"blocked"`

        The platform has barred the account of the entity that the user profile represents.

    - `country: string or null`

      The country the platform associates with the entity, as an ISO 3166-1 alpha-2 code. `null` until the platform supplies one.

    - `email_hash: string or null`

      The platform-computed hash of the entity's email address. `null` until the platform supplies one.

    - `entity_type: UserProfileExternalUserEntityType or null`

      What kind of entity the profile represents: `individual`, `business`, `non_profit` or `government`. `null` until the platform supplies one.

      - `"individual"`

      - `"business"`

      - `"non_profit"`

      - `"government"`

    - `name_hash: string or null`

      The platform-computed hash of the entity's name. `null` until the platform supplies one.

    - `onboarded_at: string or null`

      When the entity opened its account with the platform, as stated by the platform, in RFC 3339 format (UTC). `null` until the platform supplies one.

      format: date-time

    - `reference_id: string or null`

      The platform's own reference for the entity. `null` until the platform supplies one.

  - `metadata: map[string]`

    Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.

  - `name: string or null`

    Real-world name of the entity this profile represents (company or individual). For a company the platform resells Claude access to (`access_type` `passthrough`) this is that company's name. `null` until the platform supplies one.

  - `programs: UserProfilePrograms`

    The profile's standing in each Anthropic program, such as the Cyber Verification Program. Present when the request sends no user-profiles beta header; absent under the `user-profiles-2026-09-04` and earlier beta headers, which serve `trust_grants` instead.

    - `cyber: UserProfileCyberProgram or null`

      The profile's standing in the Cyber Verification Program. `null` when the profile has no status in it. Only retrieving the profile gives the full answer: a list or update response can show `null`, or a status other than `active`, for a profile that reads `active` when retrieved.

      - `requirements: UserProfileCyberRequirements or null`

        What a request that names the profile must allow to get the relaxed safeguards of every `active` tier. `null` when no tier is `active`, and wherever `tiers` is `{}`.

        - `data_retention: boolean`

          Whether Anthropic must be able to retain the request's inference data.

        - `human_review: boolean`

          Whether Anthropic personnel must be allowed to review the data retained from the request.

      - `status: UserProfileProgramStatus`

        `active` when at least one tier is `active`, or when the profile has the program's access to earlier models. That access is not a tier: a profile that has it alone reads `active` with every tier `inactive`, or with `tiers` `{}` on a response that does not report tiers. When nothing is `active`, `pending` means that an application or enrollment is under review, or that what Anthropic approved does not yet apply to this profile, and `rejected` means that the application or enrollment was declined.

        - `"active"`

          The profile is in the program.

        - `"pending"`

          The profile is not in the program yet, and something is still awaited.

        - `"rejected"`

          The profile is not in the program and nothing is awaited: Anthropic has declined, or has withdrawn an earlier approval.

      - `tiers: map[UserProfileCyberTier]`

        The program's tiers, keyed by tier: `a` (Specialized Access), `b` (Red Team Access) and `c` (Defense Access). A response reports either every tier or none. When it reports them, as retrieving the profile normally does, every tier has a key, whether or not it applies to the profile. When it does not, as in the list of user profiles, `tiers` is `{}`, which does not mean that the tiers are inactive. No tier implies another, so read the tier you need. Anthropic may add tiers; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when the tier applies to the profile, otherwise `inactive`. The response does not say why a tier is `inactive`: it can be in review, declined, withdrawn, never applied for, or approved but not applied to this profile.

          - `"active"`

          - `"inactive"`

    - `efs: UserProfileEfsProgram or null`

      The profile's standing in Enterprise Frontier Safeguards. `null` unless the platform's attestation for the program is in place on this profile, or the entity it represents has applied to the program. A list of user profiles does not report this program: there it reads `null` for every profile, so retrieve the profile to read it.

      - `features: map[UserProfileEfsFeature]`

        The program's features, keyed by feature: `data_retention_exemption` (use of models that normally require data retention, without the data being retained), `cmek` (customer-managed encryption keys) and `storage` (customer-owned storage). Every feature that the caller's organization may read has a key, whether or not it is approved; a missing key does not mean that the feature is inactive. Anthropic may add features; ignore a key you do not recognize.

        - `status: "active" or "inactive"`

          `active` when Anthropic has approved the entity the profile represents to use the feature, otherwise `inactive`. `active` does not mean that the feature is set up or switched on, which is a separate step.

          - `"active"`

          - `"inactive"`

      - `status: UserProfileProgramStatus`

        Anthropic's decision on the entity the profile represents: `pending` while it is awaited, `active` once Anthropic has approved the entity for the program, or `rejected` once Anthropic has declined or has removed the entity from the program. `active` does not mean that any one feature is approved: read the feature you need in `features`.

  - `updated_at: string`

    When this user profile was last modified, in RFC 3339 format. It normally also updates shortly after Anthropic gives the profile an approval or withdraws one. Other changes to the statuses that Anthropic reports do not always update it, so read the status itself rather than watching this timestamp.

    format: date-time

## Example

```bash
curl https://api.anthropic.com/v1/user_profiles/$USER_PROFILE_ID \
    -H 'Content-Type: application/json' \
    -H 'anthropic-version: 2023-06-01' \
    -H "X-Api-Key: $ANTHROPIC_API_KEY" \
    -d '{
          "external_user_details": {
            "account_status": "suspended"
          }
        }'
```

### Response (200)

Cut at 300 lines. The page has the rest.

build-with-claude/claude-in-amazon-bedrock Changed · +4 / -4 lines

from line 102
102102 <Tabs>
103103 <Tab title="Gradle">
104104 ```kotlin
105 implementation("com.anthropic:anthropic-java:2.74.0")
106 implementation("com.anthropic:anthropic-java-bedrock:2.74.0")
105 implementation("com.anthropic:anthropic-java:2.75.0")
106 implementation("com.anthropic:anthropic-java-bedrock:2.75.0")
107107 ```
108108 </Tab>
109109 
from line 112
112112 <dependency>
113113 <groupId>com.anthropic</groupId>
114114 <artifactId>anthropic-java</artifactId>
115 <version>2.74.0</version>
115 <version>2.75.0</version>
116116 </dependency>
117117 <dependency>
118118 <groupId>com.anthropic</groupId>
119119 <artifactId>anthropic-java-bedrock</artifactId>
120 <version>2.74.0</version>
120 <version>2.75.0</version>
121121 </dependency>
122122 ```
123123 </Tab>

build-with-claude/claude-in-microsoft-foundry Changed · +4 / -4 lines

from line 80
8080 <Tabs>
8181 <Tab title="Gradle">
8282 ```kotlin
83 implementation("com.anthropic:anthropic-java:2.74.0")
84 implementation("com.anthropic:anthropic-java-foundry:2.74.0")
83 implementation("com.anthropic:anthropic-java:2.75.0")
84 implementation("com.anthropic:anthropic-java-foundry:2.75.0")
8585 
8686 // For Entra ID authentication, also add the Azure Identity library
8787 implementation("com.azure:azure-identity:1.18.3")
from line 93
9393 <dependency>
9494 <groupId>com.anthropic</groupId>
9595 <artifactId>anthropic-java</artifactId>
96 <version>2.74.0</version>
96 <version>2.75.0</version>
9797 </dependency>
9898 <dependency>
9999 <groupId>com.anthropic</groupId>
100100 <artifactId>anthropic-java-foundry</artifactId>
101 <version>2.74.0</version>
101 <version>2.75.0</version>
102102 </dependency>
103103 <!-- For Entra ID authentication, also add the Azure Identity library -->
104104 <dependency>

build-with-claude/claude-on-amazon-bedrock-legacy Changed · +4 / -4 lines

from line 54
5454 <Tab title="Java">
5555 <CodeGroup>
5656 ```groovy Gradle
57 implementation("com.anthropic:anthropic-java:2.74.0")
58 implementation("com.anthropic:anthropic-java-bedrock:2.74.0")
57 implementation("com.anthropic:anthropic-java:2.75.0")
58 implementation("com.anthropic:anthropic-java-bedrock:2.75.0")
5959 ```
6060 
6161 ```xml Maven
from line 62
6262 <dependency>
6363 <groupId>com.anthropic</groupId>
6464 <artifactId>anthropic-java</artifactId>
65 <version>2.74.0</version>
65 <version>2.75.0</version>
6666 </dependency>
6767 <dependency>
6868 <groupId>com.anthropic</groupId>
6969 <artifactId>anthropic-java-bedrock</artifactId>
70 <version>2.74.0</version>
70 <version>2.75.0</version>
7171 </dependency>
7272 ```
7373 

build-with-claude/claude-on-vertex-ai Changed · +4 / -4 lines

from line 45
4545 <Tab title="Java">
4646 <CodeGroup exclude="shell, python, typescript, csharp, go, php, ruby">
4747 ```groovy Gradle
48 implementation("com.anthropic:anthropic-java:2.74.0")
49 implementation("com.anthropic:anthropic-java-vertex:2.74.0")
48 implementation("com.anthropic:anthropic-java:2.75.0")
49 implementation("com.anthropic:anthropic-java-vertex:2.75.0")
5050 ```
5151 
5252 ```xml Maven
from line 53
5353 <dependency>
5454 <groupId>com.anthropic</groupId>
5555 <artifactId>anthropic-java</artifactId>
56 <version>2.74.0</version>
56 <version>2.75.0</version>
5757 </dependency>
5858 <dependency>
5959 <groupId>com.anthropic</groupId>
6060 <artifactId>anthropic-java-vertex</artifactId>
61 <version>2.74.0</version>
61 <version>2.75.0</version>
6262 </dependency>
6363 ```
6464 
Feedback