Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
One capture · api

One read of Claude Developer Platform

45 pages moved out of 628 read.

api-20260914T173733Z

Pages moved 45 significant first
Pages read 628 in this capture
Captured 17:37 UTC
Corpus hash c571ba619481 corpus-hash

What this read moved

1–25 of 45

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

api/beta Changed · +14 / -14 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.

Nothing in the body moved in this read. What changed is above.

api/beta/organization Changed · +14 / -14 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.

Nothing in the body moved in this read. What changed is above.

api/beta/organization/spend_limits Changed · +14 / -14 lines

from line 83
8383 
8484 - `"weekly"`
8585 
86 - `scope: object or object or object or 2 more`
86 - `scope: User or SeatTier or RBACGroup or 2 more`
8787 
8888 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
8989 
from line 224
224224 
225225 - `"weekly"`
226226 
227 - `scope: object or object or object or 2 more`
227 - `scope: User or SeatTier or RBACGroup or 2 more`
228228 
229229 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
230230 
from line 456
456456 
457457 Tagged ID of the member the spend limit applies to.
458458 
459 - `source: object or object or object or 2 more`
459 - `source: User or SeatTier or RBACGroup or 2 more`
460460 
461461 - `User object`
462462 
from line 588
588588 
589589 - `"weekly"`
590590 
591 - `scope: object or object or object or 2 more`
591 - `scope: User or SeatTier or RBACGroup or 2 more`
592592 
593593 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
594594 
from line 714
714714 
715715 Tagged ID of the member the spend limit applies to.
716716 
717 - `source: object or object or object or 2 more`
717 - `source: User or SeatTier or RBACGroup or 2 more`
718718 
719719 - `User object`
720720 
from line 863
863863 
864864 format: date-time
865865 
866 - `resolved_by: object or object or null`
866 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
867867 
868868 - `UserActor object`
869869 
from line 975
975975 
976976 Tagged ID of the member the spend limit applies to.
977977 
978 - `source: object or object or object or 2 more`
978 - `source: User or SeatTier or RBACGroup or 2 more`
979979 
980980 - `User object`
981981 
from line 1166
11661166 
11671167 format: date-time
11681168 
1169 - `resolved_by: object or object or null`
1169 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
11701170 
11711171 - `UserActor object`
11721172 
from line 1278
12781278 
12791279 Tagged ID of the member the spend limit applies to.
12801280 
1281 - `source: object or object or object or 2 more`
1281 - `source: User or SeatTier or RBACGroup or 2 more`
12821282 
12831283 - `User object`
12841284 
from line 1478
14781478 
14791479 format: date-time
14801480 
1481- `resolved_by: object or object or null`
1481- `resolved_by: UserActor or ScopedAPIKeyActor or null`
14821482 
14831483 - `UserActor object`
14841484 
from line 1558
15581558 
15591559 - `"weekly"`
15601560 
1561 - `scope: object or object or object or 2 more`
1561 - `scope: User or SeatTier or RBACGroup or 2 more`
15621562 
15631563 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
15641564 
from line 1682
16821682 
16831683 Tagged ID of the member the spend limit applies to.
16841684 
1685 - `source: object or object or object or 2 more`
1685 - `source: User or SeatTier or RBACGroup or 2 more`
16861686 
16871687 - `User object`
16881688 
from line 1888
18881888 
18891889 format: date-time
18901890 
1891 - `resolved_by: object or object or null`
1891 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
18921892 
18931893 - `UserActor object`
18941894 
from line 2000
20002000 
20012001 Tagged ID of the member the spend limit applies to.
20022002 
2003 - `source: object or object or object or 2 more`
2003 - `source: User or SeatTier or RBACGroup or 2 more`
20042004 
20052005 - `User object`
20062006 

api/beta/organization/spend_limits/increase_requests Changed · +14 / -14 lines

from line 94
9494 
9595 format: date-time
9696 
97 - `resolved_by: object or object or null`
97 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
9898 
9999 - `UserActor object`
100100 
from line 206
206206 
207207 Tagged ID of the member the spend limit applies to.
208208 
209 - `source: object or object or object or 2 more`
209 - `source: User or SeatTier or RBACGroup or 2 more`
210210 
211211 - `User object`
212212 
from line 397
397397 
398398 format: date-time
399399 
400 - `resolved_by: object or object or null`
400 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
401401 
402402 - `UserActor object`
403403 
from line 509
509509 
510510 Tagged ID of the member the spend limit applies to.
511511 
512 - `source: object or object or object or 2 more`
512 - `source: User or SeatTier or RBACGroup or 2 more`
513513 
514514 - `User object`
515515 
from line 709
709709 
710710 format: date-time
711711 
712- `resolved_by: object or object or null`
712- `resolved_by: UserActor or ScopedAPIKeyActor or null`
713713 
714714 - `UserActor object`
715715 
from line 789
789789 
790790 - `"weekly"`
791791 
792 - `scope: object or object or object or 2 more`
792 - `scope: User or SeatTier or RBACGroup or 2 more`
793793 
794794 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
795795 
from line 913
913913 
914914 Tagged ID of the member the spend limit applies to.
915915 
916 - `source: object or object or object or 2 more`
916 - `source: User or SeatTier or RBACGroup or 2 more`
917917 
918918 - `User object`
919919 
from line 1119
11191119 
11201120 format: date-time
11211121 
1122 - `resolved_by: object or object or null`
1122 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
11231123 
11241124 - `UserActor object`
11251125 
from line 1231
12311231 
12321232 Tagged ID of the member the spend limit applies to.
12331233 
1234 - `source: object or object or object or 2 more`
1234 - `source: User or SeatTier or RBACGroup or 2 more`
12351235 
12361236 - `User object`
12371237 
from line 1404
14041404 
14051405 format: date-time
14061406 
1407 - `resolved_by: object or object or null`
1407 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
14081408 
14091409 - `UserActor object`
14101410 
from line 1516
15161516 
15171517 Tagged ID of the member the spend limit applies to.
15181518 
1519 - `source: object or object or object or 2 more`
1519 - `source: User or SeatTier or RBACGroup or 2 more`
15201520 
15211521 - `User object`
15221522 
from line 1628
16281628 
16291629 format: date-time
16301630 
1631 - `resolved_by: object or object or null`
1631 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
16321632 
16331633 - `UserActor object`
16341634 
from line 1708
17081708 
17091709 - `"weekly"`
17101710 
1711 - `scope: object or object or object or 2 more`
1711 - `scope: User or SeatTier or RBACGroup or 2 more`
17121712 
17131713 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
17141714 
from line 1832
18321832 
18331833 Tagged ID of the member the spend limit applies to.
18341834 
1835 - `source: object or object or object or 2 more`
1835 - `source: User or SeatTier or RBACGroup or 2 more`
18361836 
18371837 - `User object`
18381838 

api/beta/organization/spend_limits/increase_requests/approve Changed · +3 / -3 lines

from line 90
9090 
9191 format: date-time
9292 
93- `resolved_by: object or object or null`
93- `resolved_by: UserActor or ScopedAPIKeyActor or null`
9494 
9595 - `UserActor object`
9696 
from line 170
170170 
171171 - `"weekly"`
172172 
173 - `scope: object or object or object or 2 more`
173 - `scope: User or SeatTier or RBACGroup or 2 more`
174174 
175175 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
176176 
from line 294
294294 
295295 Tagged ID of the member the spend limit applies to.
296296 
297 - `source: object or object or object or 2 more`
297 - `source: User or SeatTier or RBACGroup or 2 more`
298298 
299299 - `User object`
300300 

api/compliance Changed · +1000 / -1000 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 4079
40794079 
40804080#### Returns
40814081 
4082- `data: optional array of object or object or object or 490 more`
4082- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 490 more`
40834083 
40844084 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
40854085 
from line 4091
40914091 
40924092 default: abuse_decision_received
40934093 
4094 - `actor: object or object or object or 8 more`
4094 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
40954095 
40964096 - `APIActor object`
40974097 
from line 4225
42254225 
42264226 default: federated_actor
42274227 
4228 - `provider: object or object or object or object`
4228 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
42294229 
42304230 - `FederatedActorAwsProvider object`
42314231 
from line 4335
43354335 
43364336 default: account_deleted
43374337 
4338 - `actor: object or object or object or 8 more`
4338 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
43394339 
43404340 - `APIActor object`
43414341 
from line 4469
44694469 
44704470 default: federated_actor
44714471 
4472 - `provider: object or object or object or object`
4472 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
44734473 
44744474 - `FederatedActorAwsProvider object`
44754475 
from line 4567
45674567 
45684568 default: admin_api_key_created
45694569 
4570 - `actor: object or object or object or 8 more`
4570 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
45714571 
45724572 - `APIActor object`
45734573 
from line 4701
47014701 
47024702 default: federated_actor
47034703 
4704 - `provider: object or object or object or object`
4704 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
47054705 
47064706 - `FederatedActorAwsProvider object`
47074707 
from line 4807
48074807 
48084808 default: admin_api_key_deleted
48094809 
4810 - `actor: object or object or object or 8 more`
4810 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
48114811 
48124812 - `APIActor object`
48134813 
from line 4941
49414941 
49424942 default: federated_actor
49434943 
4944 - `provider: object or object or object or object`
4944 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
49454945 
49464946 - `FederatedActorAwsProvider object`
49474947 
from line 5043
50435043 
50445044 default: admin_api_key_updated
50455045 
5046 - `actor: object or object or object or 8 more`
5046 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
50475047 
50485048 - `APIActor object`
50495049 
from line 5177
51775177 
51785178 default: federated_actor
51795179 
5180 - `provider: object or object or object or object`
5180 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
51815181 
51825182 - `FederatedActorAwsProvider object`
51835183 
from line 5301
53015301 
53025302 default: admin_connector_request_resolved
53035303 
5304 - `actor: object or object or object or 8 more`
5304 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
53055305 
53065306 - `APIActor object`
53075307 
from line 5435
54355435 
54365436 default: federated_actor
54375437 
5438 - `provider: object or object or object or object`
5438 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
54395439 
54405440 - `FederatedActorAwsProvider object`
54415441 
from line 5545
55455545 
55465546 default: admin_request_created
55475547 
5548 - `actor: object or object or object or 8 more`
5548 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
55495549 
55505550 - `APIActor object`
55515551 
from line 5679
56795679 
56805680 default: federated_actor
56815681 
5682 - `provider: object or object or object or object`
5682 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
56835683 
56845684 - `FederatedActorAwsProvider object`
56855685 
from line 5779
57795779 
57805780 default: admin_setup_checklist_step_delegated
57815781 
5782 - `actor: object or object or object or 8 more`
5782 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
57835783 
57845784 - `APIActor object`
57855785 
from line 5913
59135913 
59145914 default: federated_actor
59155915 
5916 - `provider: object or object or object or object`
5916 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
59175917 
59185918 - `FederatedActorAwsProvider object`
59195919 
from line 6023
60236023 
60246024 default: admin_setup_checklist_step_delegation_cancelled
60256025 
6026 - `actor: object or object or object or 8 more`
6026 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
60276027 
60286028 - `APIActor object`
60296029 
from line 6157
61576157 
61586158 default: federated_actor
61596159 
6160 - `provider: object or object or object or object`
6160 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
61616161 
61626162 - `FederatedActorAwsProvider object`
61636163 
from line 6259
62596259 
62606260 default: age_verified
62616261 
6262 - `actor: object or object or object or 8 more`
6262 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
62636263 
62646264 - `APIActor object`
62656265 
from line 6393
63936393 
63946394 default: federated_actor
63956395 
6396 - `provider: object or object or object or object`
6396 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
63976397 
63986398 - `FederatedActorAwsProvider object`
63996399 
from line 6491
64916491 
64926492 default: anonymous_mobile_login_attempted
64936493 
6494 - `actor: object or object or object or 8 more`
6494 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
64956495 
64966496 - `APIActor object`
64976497 
from line 6625
66256625 
66266626 default: federated_actor
66276627 
6628 - `provider: object or object or object or object`
6628 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
66296629 
66306630 - `FederatedActorAwsProvider object`
66316631 
from line 6723
67236723 
67246724 default: api_key_created
67256725 
6726 - `actor: object or object or object or 8 more`
6726 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
67276727 
67286728 - `APIActor object`
67296729 
from line 6857
68576857 
68586858 default: federated_actor
68596859 
6860 - `provider: object or object or object or object`
6860 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
68616861 
68626862 - `FederatedActorAwsProvider object`
68636863 
from line 6967
69676967 
69686968 default: claude_artifact_access_failed
69696969 
6970 - `actor: object or object or object or 8 more`
6970 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
69716971 
69726972 - `APIActor object`
69736973 
from line 7101
71017101 
71027102 default: federated_actor
71037103 
7104 - `provider: object or object or object or object`
7104 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
71057105 
71067106 - `FederatedActorAwsProvider object`
71077107 
from line 7211
72117211 
72127212 default: claude_artifact_commented
72137213 
7214 - `actor: object or object or object or 8 more`
7214 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
72157215 
72167216 - `APIActor object`
72177217 
from line 7345
73457345 
73467346 default: federated_actor
73477347 
7348 - `provider: object or object or object or object`
7348 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
73497349 
73507350 - `FederatedActorAwsProvider object`
73517351 
from line 7487
74877487 
74887488 default: claude_artifact_comments_viewed
74897489 
7490 - `actor: object or object or object or 8 more`
7490 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
74917491 
74927492 - `APIActor object`
74937493 
from line 7621
76217621 
76227622 default: federated_actor
76237623 
7624 - `provider: object or object or object or object`
7624 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
76257625 
76267626 - `FederatedActorAwsProvider object`
76277627 
from line 7727
77277727 
77287728 default: claude_artifact_created
77297729 
7730 - `actor: object or object or object or 8 more`
7730 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
77317731 
77327732 - `APIActor object`
77337733 
from line 7861
78617861 
78627862 default: federated_actor
78637863 
7864 - `provider: object or object or object or object`
7864 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
78657865 
78667866 - `FederatedActorAwsProvider object`
78677867 
from line 7963
79637963 
79647964 default: claude_published_artifact_deleted
79657965 
7966 - `actor: object or object or object or 8 more`
7966 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
79677967 
79687968 - `APIActor object`
79697969 
from line 8097
80978097 
80988098 default: federated_actor
80998099 
8100 - `provider: object or object or object or object`
8100 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
81018101 
81028102 - `FederatedActorAwsProvider object`
81038103 
from line 8199
81998199 
82008200 default: claude_artifact_published
82018201 
8202 - `actor: object or object or object or 8 more`
8202 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
82038203 
82048204 - `APIActor object`
82058205 
from line 8333
83338333 
83348334 default: federated_actor
83358335 
8336 - `provider: object or object or object or object`
8336 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
83378337 
83388338 - `FederatedActorAwsProvider object`
83398339 
from line 8455
84558455 
84568456 default: claude_artifact_sharing_updated
84578457 
8458 - `actor: object or object or object or 8 more`
8458 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
84598459 
84608460 - `APIActor object`
84618461 
from line 8589
85898589 
85908590 default: federated_actor
85918591 
8592 - `provider: object or object or object or object`
8592 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
85938593 
85948594 - `FederatedActorAwsProvider object`
85958595 
from line 8661
86618661 
86628662 - `user_agent: optional string or null`
86638663 
8664 - `audience: array of object or object or object`
8664 - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink`
86658665 
86668666 The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner.
86678667 
from line 8756
87568756 
87578757 default: claude_artifact_viewed
87588758 
8759 - `actor: object or object or object or 8 more`
8759 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
87608760 
87618761 - `APIActor object`
87628762 
from line 8890
88908890 
88918891 default: federated_actor
88928892 
8893 - `provider: object or object or object or object`
8893 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
88948894 
88958895 - `FederatedActorAwsProvider object`
88968896 
from line 8996
89968996 
89978997 default: audit_log_export_accessed
89988998 
8999 - `actor: object or object or object or 8 more`
8999 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
90009000 
90019001 - `APIActor object`
90029002 
from line 9130
91309130 
91319131 default: federated_actor
91329132 
9133 - `provider: object or object or object or object`
9133 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
91349134 
91359135 - `FederatedActorAwsProvider object`
91369136 
from line 9228
92289228 
92299229 default: audit_log_export_started
92309230 
9231 - `actor: object or object or object or 8 more`
9231 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
92329232 
92339233 - `APIActor object`
92349234 
from line 9362
93629362 
93639363 default: federated_actor
93649364 
9365 - `provider: object or object or object or object`
9365 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
93669366 
93679367 - `FederatedActorAwsProvider object`
93689368 
from line 9468
94689468 
94699469 default: billing_emails_updated
94709470 
9471 - `actor: object or object or object or 8 more`
9471 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
94729472 
94739473 - `APIActor object`
94749474 
from line 9602
96029602 
96039603 default: federated_actor
96049604 
9605 - `provider: object or object or object or object`
9605 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
96069606 
96079607 - `FederatedActorAwsProvider object`
96089608 
from line 9712
97129712 
97139713 default: ccr_agent_created
97149714 
9715 - `actor: object or object or object or 8 more`
9715 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
97169716 
97179717 - `APIActor object`
97189718 
from line 9846
98469846 
98479847 default: federated_actor
98489848 
9849 - `provider: object or object or object or object`
9849 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
98509850 
98519851 - `FederatedActorAwsProvider object`
98529852 
from line 9976
99769976 
99779977 default: ccr_agent_deleted
99789978 
9979 - `actor: object or object or object or 8 more`
9979 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
99809980 
99819981 - `APIActor object`
99829982 
9983 - `type: optional "api_actor"`
9984 
9985 default: api_actor
9986 
9987 - `api_key_id: string`
9988 
9989 - `ip_address: string`
9990 
9991 - `user_agent: string`
9992 
9993 - `UserActor object`
9994 
9995 - `type: optional "user_actor"`
9996 
9997 default: user_actor
9998 
9999 - `email_address: string`
10000 
10001 format: email
10002 
10003 - `ip_address: string`
10004 
10005 - `user_agent: string`
10006 
10007 - `user_id: string`
10008 
10009 - `UnauthenticatedUserActor object`
10010 
10011 - `type: optional "unauthenticated_user_actor"`
10012 
10013 default: unauthenticated_user_actor
10014 
10015 - `ip_address: string`
10016 
10017 - `user_agent: string`
10018 
10019 - `unauthenticated_email_address: optional string or null`
10020 
10021 format: email
10022 
10023 - `AnthropicActor object`
10024 
10025 - `type: optional "anthropic_actor"`
10026 
10027 default: anthropic_actor
10028 
10029 - `email_address: optional string or null`
10030 
10031 format: email
10032 
10033 - `SystemActor object`
10034 
10035 Automated background processing performed by Anthropic systems, acting
10036 without a user or customer credential.
10037 
10038 - `type: optional "system_actor"`
10039 
10040 default: system_actor
10041 
10042 - `service: optional string or null`
10043 
10044 Name of the automated process that performed the action, when known.
10045 
10046 - `AdminAPIKeyActor object`
10047 
10048 - `type: optional "admin_api_key_actor"`
10049 
10050 default: admin_api_key_actor
10051 
10052 - `admin_api_key_id: string`
10053 
10054 - `ip_address: string`
10055 
10056 - `user_agent: string`
10057 
10058 - `ServiceAccountActor object`
10059 
10060 - `type: optional "service_account_actor"`
10061 
10062 default: service_account_actor
10063 
10064 - `ip_address: string`
10065 
10066 - `service_account_id: string`
10067 
10068 - `user_agent: string`
10069 
10070 - `ScimDirectorySyncActor object`
10071 
10072 - `type: optional "scim_directory_sync_actor"`
10073 
10074 default: scim_directory_sync_actor
10075 
10076 - `directory_id: string`
10077 
10078 - `workos_event_id: string`
10079 
10080 - `idp_connection_type: optional string or null`
10081 
10082 - `FederatedIdentityActor object`
10083 
10084 A federated external workload authenticated via a verified OIDC token.
10085 
10086 Carries the verified issuer, subject, and audience claims from the
10087 presented JWT.
10088 
10089 - `type: optional "federated_identity_actor"`
10090 
10091 default: federated_identity_actor
10092 
10093 - `issuer: string`
10094 
10095 - `subject: string`
10096 
10097 - `audience: optional array of string`
10098 
10099 - `ip_address: optional string or null`
10100 
10101 - `user_agent: optional string or null`
10102 
10103 - `FederatedActor object`
10104 
10105 An external identi
9983

api/compliance/activities Changed · +1984 / -1984 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 4077
40774077 
40784078### Returns
40794079 
4080- `data: optional array of object or object or object or 490 more`
4080- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 490 more`
40814081 
40824082 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
40834083 
from line 4089
40894089 
40904090 default: abuse_decision_received
40914091 
4092 - `actor: object or object or object or 8 more`
4092 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
40934093 
40944094 - `APIActor object`
40954095 
from line 4223
42234223 
42244224 default: federated_actor
42254225 
4226 - `provider: object or object or object or object`
4226 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
42274227 
42284228 - `FederatedActorAwsProvider object`
42294229 
from line 4333
43334333 
43344334 default: account_deleted
43354335 
4336 - `actor: object or object or object or 8 more`
4336 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
43374337 
43384338 - `APIActor object`
43394339 
from line 4467
44674467 
44684468 default: federated_actor
44694469 
4470 - `provider: object or object or object or object`
4470 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
44714471 
44724472 - `FederatedActorAwsProvider object`
44734473 
from line 4565
45654565 
45664566 default: admin_api_key_created
45674567 
4568 - `actor: object or object or object or 8 more`
4568 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
45694569 
45704570 - `APIActor object`
45714571 
from line 4699
46994699 
47004700 default: federated_actor
47014701 
4702 - `provider: object or object or object or object`
4702 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
47034703 
47044704 - `FederatedActorAwsProvider object`
47054705 
from line 4805
48054805 
48064806 default: admin_api_key_deleted
48074807 
4808 - `actor: object or object or object or 8 more`
4808 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
48094809 
48104810 - `APIActor object`
48114811 
from line 4939
49394939 
49404940 default: federated_actor
49414941 
4942 - `provider: object or object or object or object`
4942 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
49434943 
49444944 - `FederatedActorAwsProvider object`
49454945 
from line 5041
50415041 
50425042 default: admin_api_key_updated
50435043 
5044 - `actor: object or object or object or 8 more`
5044 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
50455045 
50465046 - `APIActor object`
50475047 
from line 5175
51755175 
51765176 default: federated_actor
51775177 
5178 - `provider: object or object or object or object`
5178 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
51795179 
51805180 - `FederatedActorAwsProvider object`
51815181 
from line 5299
52995299 
53005300 default: admin_connector_request_resolved
53015301 
5302 - `actor: object or object or object or 8 more`
5302 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
53035303 
53045304 - `APIActor object`
53055305 
from line 5433
54335433 
54345434 default: federated_actor
54355435 
5436 - `provider: object or object or object or object`
5436 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
54375437 
54385438 - `FederatedActorAwsProvider object`
54395439 
from line 5543
55435543 
55445544 default: admin_request_created
55455545 
5546 - `actor: object or object or object or 8 more`
5546 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
55475547 
55485548 - `APIActor object`
55495549 
from line 5677
56775677 
56785678 default: federated_actor
56795679 
5680 - `provider: object or object or object or object`
5680 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
56815681 
56825682 - `FederatedActorAwsProvider object`
56835683 
from line 5777
57775777 
57785778 default: admin_setup_checklist_step_delegated
57795779 
5780 - `actor: object or object or object or 8 more`
5780 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
57815781 
57825782 - `APIActor object`
57835783 
from line 5911
59115911 
59125912 default: federated_actor
59135913 
5914 - `provider: object or object or object or object`
5914 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
59155915 
59165916 - `FederatedActorAwsProvider object`
59175917 
from line 6021
60216021 
60226022 default: admin_setup_checklist_step_delegation_cancelled
60236023 
6024 - `actor: object or object or object or 8 more`
6024 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
60256025 
60266026 - `APIActor object`
60276027 
from line 6155
61556155 
61566156 default: federated_actor
61576157 
6158 - `provider: object or object or object or object`
6158 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
61596159 
61606160 - `FederatedActorAwsProvider object`
61616161 
from line 6257
62576257 
62586258 default: age_verified
62596259 
6260 - `actor: object or object or object or 8 more`
6260 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
62616261 
62626262 - `APIActor object`
62636263 
from line 6391
63916391 
63926392 default: federated_actor
63936393 
6394 - `provider: object or object or object or object`
6394 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
63956395 
63966396 - `FederatedActorAwsProvider object`
63976397 
from line 6489
64896489 
64906490 default: anonymous_mobile_login_attempted
64916491 
6492 - `actor: object or object or object or 8 more`
6492 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
64936493 
64946494 - `APIActor object`
64956495 
from line 6623
66236623 
66246624 default: federated_actor
66256625 
6626 - `provider: object or object or object or object`
6626 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
66276627 
66286628 - `FederatedActorAwsProvider object`
66296629 
from line 6721
67216721 
67226722 default: api_key_created
67236723 
6724 - `actor: object or object or object or 8 more`
6724 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
67256725 
67266726 - `APIActor object`
67276727 
from line 6855
68556855 
68566856 default: federated_actor
68576857 
6858 - `provider: object or object or object or object`
6858 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
68596859 
68606860 - `FederatedActorAwsProvider object`
68616861 
from line 6965
69656965 
69666966 default: claude_artifact_access_failed
69676967 
6968 - `actor: object or object or object or 8 more`
6968 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
69696969 
69706970 - `APIActor object`
69716971 
from line 7099
70997099 
71007100 default: federated_actor
71017101 
7102 - `provider: object or object or object or object`
7102 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
71037103 
71047104 - `FederatedActorAwsProvider object`
71057105 
from line 7209
72097209 
72107210 default: claude_artifact_commented
72117211 
7212 - `actor: object or object or object or 8 more`
7212 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
72137213 
72147214 - `APIActor object`
72157215 
from line 7343
73437343 
73447344 default: federated_actor
73457345 
7346 - `provider: object or object or object or object`
7346 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
73477347 
73487348 - `FederatedActorAwsProvider object`
73497349 
from line 7485
74857485 
74867486 default: claude_artifact_comments_viewed
74877487 
7488 - `actor: object or object or object or 8 more`
7488 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
74897489 
74907490 - `APIActor object`
74917491 
from line 7619
76197619 
76207620 default: federated_actor
76217621 
7622 - `provider: object or object or object or object`
7622 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
76237623 
76247624 - `FederatedActorAwsProvider object`
76257625 
from line 7725
77257725 
77267726 default: claude_artifact_created
77277727 
7728 - `actor: object or object or object or 8 more`
7728 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
77297729 
77307730 - `APIActor object`
77317731 
from line 7859
78597859 
78607860 default: federated_actor
78617861 
7862 - `provider: object or object or object or object`
7862 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
78637863 
78647864 - `FederatedActorAwsProvider object`
78657865 
from line 7961
79617961 
79627962 default: claude_published_artifact_deleted
79637963 
7964 - `actor: object or object or object or 8 more`
7964 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
79657965 
79667966 - `APIActor object`
79677967 
from line 8095
80958095 
80968096 default: federated_actor
80978097 
8098 - `provider: object or object or object or object`
8098 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
80998099 
81008100 - `FederatedActorAwsProvider object`
81018101 
from line 8197
81978197 
81988198 default: claude_artifact_published
81998199 
8200 - `actor: object or object or object or 8 more`
8200 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
82018201 
82028202 - `APIActor object`
82038203 
from line 8331
83318331 
83328332 default: federated_actor
83338333 
8334 - `provider: object or object or object or object`
8334 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
83358335 
83368336 - `FederatedActorAwsProvider object`
83378337 
from line 8453
84538453 
84548454 default: claude_artifact_sharing_updated
84558455 
8456 - `actor: object or object or object or 8 more`
8456 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
84578457 
84588458 - `APIActor object`
84598459 
from line 8587
85878587 
85888588 default: federated_actor
85898589 
8590 - `provider: object or object or object or object`
8590 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
85918591 
85928592 - `FederatedActorAwsProvider object`
85938593 
from line 8659
86598659 
86608660 - `user_agent: optional string or null`
86618661 
8662 - `audience: array of object or object or object`
8662 - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink`
86638663 
86648664 The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner.
86658665 
from line 8754
87548754 
87558755 default: claude_artifact_viewed
87568756 
8757 - `actor: object or object or object or 8 more`
8757 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
87588758 
87598759 - `APIActor object`
87608760 
from line 8888
88888888 
88898889 default: federated_actor
88908890 
8891 - `provider: object or object or object or object`
8891 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
88928892 
88938893 - `FederatedActorAwsProvider object`
88948894 
from line 8994
89948994 
89958995 default: audit_log_export_accessed
89968996 
8997 - `actor: object or object or object or 8 more`
8997 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
89988998 
89998999 - `APIActor object`
90009000 
from line 9128
91289128 
91299129 default: federated_actor
91309130 
9131 - `provider: object or object or object or object`
9131 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
91329132 
91339133 - `FederatedActorAwsProvider object`
91349134 
from line 9226
92269226 
92279227 default: audit_log_export_started
92289228 
9229 - `actor: object or object or object or 8 more`
9229 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
92309230 
92319231 - `APIActor object`
92329232 
from line 9360
93609360 
93619361 default: federated_actor
93629362 
9363 - `provider: object or object or object or object`
9363 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
93649364 
93659365 - `FederatedActorAwsProvider object`
93669366 
from line 9466
94669466 
94679467 default: billing_emails_updated
94689468 
9469 - `actor: object or object or object or 8 more`
9469 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
94709470 
94719471 - `APIActor object`
94729472 
from line 9600
96009600 
96019601 default: federated_actor
96029602 
9603 - `provider: object or object or object or object`
9603 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
96049604 
96059605 - `FederatedActorAwsProvider object`
96069606 
from line 9710
97109710 
97119711 default: ccr_agent_created
97129712 
9713 - `actor: object or object or object or 8 more`
9713 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
97149714 
97159715 - `APIActor object`
97169716 
from line 9844
98449844 
98459845 default: federated_actor
98469846 
9847 - `provider: object or object or object or object`
9847 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
98489848 
98499849 - `FederatedActorAwsProvider object`
98509850 
from line 9974
99749974 
99759975 default: ccr_agent_deleted
99769976 
9977 - `actor: object or object or object or 8 more`
9977 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
99789978 
99799979 - `APIActor object`
99809980 
99819981 - `type: optional "api_actor"`
9982 
9983 default: api_actor
9984 
9985 - `api_key_id: string`
9986 
9987 - `ip_address: string`
9988 
9989 - `user_agent: string`
9990 
9991 - `UserActor object`
9992 
9993 - `type: optional "user_actor"`
9994 
9995 default: user_actor
9996 
9997 - `email_address: string`
9998 
9999 format: email
10000 
10001 - `ip_address: string`
10002 
10003 - `user_agent: string`
10004 
10005 - `user_id: string`
10006 
10007 - `UnauthenticatedUserActor object`
10008 
10009 - `type: optional "unauthenticated_user_actor"`
10010 
10011 default: unauthenticated_user_actor
10012 
10013 - `ip_address: string`
10014 
10015 - `user_agent: string`
10016 
10017 - `unauthenticated_email_address: optional string or null`
10018 
10019 format: email
10020 
10021 - `AnthropicActor object`
10022 
10023 - `type: optional "anthropic_actor"`
10024 
10025 default: anthropic_actor
10026 
10027 - `email_address: optional string or null`
10028 
10029 format: email
10030 
10031 - `SystemActor object`
10032 
10033 Automated background processing performed by Anthropic systems, acting
10034 without a user or customer credential.
10035 
10036 - `type: optional "system_actor"`
10037 
10038 default: system_actor
10039 
10040 - `service: optional string or null`
10041 
10042 Name of the automated process that performed the action, when known.
10043 
10044 - `AdminAPIKeyActor object`
10045 
10046 - `type: optional "admin_api_key_actor"`
10047 
10048 default: admin_api_key_actor
10049 
10050 - `admin_api_key_id: string`
10051 
10052 - `ip_address: string`
10053 
10054 - `user_agent: string`
10055 
10056 - `ServiceAccountActor object`
10057 
10058 - `type: optional "service_account_actor"`
10059 
10060 default: service_account_actor
10061 
10062 - `ip_address: string`
10063 
10064 - `service_account_id: string`
10065 
10066 - `user_agent: string`
10067 
10068 - `ScimDirectorySyncActor object`
10069 
10070 - `type: optional "scim_directory_sync_actor"`
10071 
10072 default: scim_directory_sync_actor
10073 
10074 - `directory_id: string`
10075 
10076 - `workos_event_id: string`
10077 
10078 - `idp_connection_type: optional string or null`
10079 
10080 - `FederatedIdentityActor object`
10081 
10082 A federated external workload authenticated via a verified OIDC token.
10083 
10084 Carries the verified issuer, subject, and audience claims from the
10085 presented JWT.
10086 
10087 - `type: optional "federated_identity_actor"`
10088 
10089 default: federated_identity_actor
10090 
10091 - `issuer: string`
10092 
10093 - `subject: string`
10094 
10095 - `audience: optional array of string`
10096 
10097 - `ip_address: optional string or null`
10098 
10099 - `user_agent: optional string or null`
10100 
10101 - `FederatedActor object`
10102 
10103 An external identity asserted by a trusted provider

api/compliance/activities/list Changed · +992 / -992 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 4075
40754075 
40764076## Returns
40774077 
4078- `data: optional array of object or object or object or 490 more`
4078- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 490 more`
40794079 
40804080 List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present.
40814081 
from line 4087
40874087 
40884088 default: abuse_decision_received
40894089 
4090 - `actor: object or object or object or 8 more`
4090 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
40914091 
40924092 - `APIActor object`
40934093 
from line 4221
42214221 
42224222 default: federated_actor
42234223 
4224 - `provider: object or object or object or object`
4224 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
42254225 
42264226 - `FederatedActorAwsProvider object`
42274227 
from line 4331
43314331 
43324332 default: account_deleted
43334333 
4334 - `actor: object or object or object or 8 more`
4334 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
43354335 
43364336 - `APIActor object`
43374337 
from line 4465
44654465 
44664466 default: federated_actor
44674467 
4468 - `provider: object or object or object or object`
4468 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
44694469 
44704470 - `FederatedActorAwsProvider object`
44714471 
from line 4563
45634563 
45644564 default: admin_api_key_created
45654565 
4566 - `actor: object or object or object or 8 more`
4566 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
45674567 
45684568 - `APIActor object`
45694569 
from line 4697
46974697 
46984698 default: federated_actor
46994699 
4700 - `provider: object or object or object or object`
4700 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
47014701 
47024702 - `FederatedActorAwsProvider object`
47034703 
from line 4803
48034803 
48044804 default: admin_api_key_deleted
48054805 
4806 - `actor: object or object or object or 8 more`
4806 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
48074807 
48084808 - `APIActor object`
48094809 
from line 4937
49374937 
49384938 default: federated_actor
49394939 
4940 - `provider: object or object or object or object`
4940 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
49414941 
49424942 - `FederatedActorAwsProvider object`
49434943 
from line 5039
50395039 
50405040 default: admin_api_key_updated
50415041 
5042 - `actor: object or object or object or 8 more`
5042 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
50435043 
50445044 - `APIActor object`
50455045 
from line 5173
51735173 
51745174 default: federated_actor
51755175 
5176 - `provider: object or object or object or object`
5176 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
51775177 
51785178 - `FederatedActorAwsProvider object`
51795179 
from line 5297
52975297 
52985298 default: admin_connector_request_resolved
52995299 
5300 - `actor: object or object or object or 8 more`
5300 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
53015301 
53025302 - `APIActor object`
53035303 
from line 5431
54315431 
54325432 default: federated_actor
54335433 
5434 - `provider: object or object or object or object`
5434 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
54355435 
54365436 - `FederatedActorAwsProvider object`
54375437 
from line 5541
55415541 
55425542 default: admin_request_created
55435543 
5544 - `actor: object or object or object or 8 more`
5544 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
55455545 
55465546 - `APIActor object`
55475547 
from line 5675
56755675 
56765676 default: federated_actor
56775677 
5678 - `provider: object or object or object or object`
5678 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
56795679 
56805680 - `FederatedActorAwsProvider object`
56815681 
from line 5775
57755775 
57765776 default: admin_setup_checklist_step_delegated
57775777 
5778 - `actor: object or object or object or 8 more`
5778 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
57795779 
57805780 - `APIActor object`
57815781 
from line 5909
59095909 
59105910 default: federated_actor
59115911 
5912 - `provider: object or object or object or object`
5912 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
59135913 
59145914 - `FederatedActorAwsProvider object`
59155915 
from line 6019
60196019 
60206020 default: admin_setup_checklist_step_delegation_cancelled
60216021 
6022 - `actor: object or object or object or 8 more`
6022 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
60236023 
60246024 - `APIActor object`
60256025 
from line 6153
61536153 
61546154 default: federated_actor
61556155 
6156 - `provider: object or object or object or object`
6156 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
61576157 
61586158 - `FederatedActorAwsProvider object`
61596159 
from line 6255
62556255 
62566256 default: age_verified
62576257 
6258 - `actor: object or object or object or 8 more`
6258 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
62596259 
62606260 - `APIActor object`
62616261 
from line 6389
63896389 
63906390 default: federated_actor
63916391 
6392 - `provider: object or object or object or object`
6392 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
63936393 
63946394 - `FederatedActorAwsProvider object`
63956395 
from line 6487
64876487 
64886488 default: anonymous_mobile_login_attempted
64896489 
6490 - `actor: object or object or object or 8 more`
6490 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
64916491 
64926492 - `APIActor object`
64936493 
from line 6621
66216621 
66226622 default: federated_actor
66236623 
6624 - `provider: object or object or object or object`
6624 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
66256625 
66266626 - `FederatedActorAwsProvider object`
66276627 
from line 6719
67196719 
67206720 default: api_key_created
67216721 
6722 - `actor: object or object or object or 8 more`
6722 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
67236723 
67246724 - `APIActor object`
67256725 
from line 6853
68536853 
68546854 default: federated_actor
68556855 
6856 - `provider: object or object or object or object`
6856 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
68576857 
68586858 - `FederatedActorAwsProvider object`
68596859 
from line 6963
69636963 
69646964 default: claude_artifact_access_failed
69656965 
6966 - `actor: object or object or object or 8 more`
6966 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
69676967 
69686968 - `APIActor object`
69696969 
from line 7097
70977097 
70987098 default: federated_actor
70997099 
7100 - `provider: object or object or object or object`
7100 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
71017101 
71027102 - `FederatedActorAwsProvider object`
71037103 
from line 7207
72077207 
72087208 default: claude_artifact_commented
72097209 
7210 - `actor: object or object or object or 8 more`
7210 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
72117211 
72127212 - `APIActor object`
72137213 
from line 7341
73417341 
73427342 default: federated_actor
73437343 
7344 - `provider: object or object or object or object`
7344 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
73457345 
73467346 - `FederatedActorAwsProvider object`
73477347 
from line 7483
74837483 
74847484 default: claude_artifact_comments_viewed
74857485 
7486 - `actor: object or object or object or 8 more`
7486 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
74877487 
74887488 - `APIActor object`
74897489 
from line 7617
76177617 
76187618 default: federated_actor
76197619 
7620 - `provider: object or object or object or object`
7620 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
76217621 
76227622 - `FederatedActorAwsProvider object`
76237623 
from line 7723
77237723 
77247724 default: claude_artifact_created
77257725 
7726 - `actor: object or object or object or 8 more`
7726 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
77277727 
77287728 - `APIActor object`
77297729 
from line 7857
78577857 
78587858 default: federated_actor
78597859 
7860 - `provider: object or object or object or object`
7860 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
78617861 
78627862 - `FederatedActorAwsProvider object`
78637863 
from line 7959
79597959 
79607960 default: claude_published_artifact_deleted
79617961 
7962 - `actor: object or object or object or 8 more`
7962 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
79637963 
79647964 - `APIActor object`
79657965 
from line 8093
80938093 
80948094 default: federated_actor
80958095 
8096 - `provider: object or object or object or object`
8096 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
80978097 
80988098 - `FederatedActorAwsProvider object`
80998099 
from line 8195
81958195 
81968196 default: claude_artifact_published
81978197 
8198 - `actor: object or object or object or 8 more`
8198 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
81998199 
82008200 - `APIActor object`
82018201 
from line 8329
83298329 
83308330 default: federated_actor
83318331 
8332 - `provider: object or object or object or object`
8332 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
83338333 
83348334 - `FederatedActorAwsProvider object`
83358335 
from line 8451
84518451 
84528452 default: claude_artifact_sharing_updated
84538453 
8454 - `actor: object or object or object or 8 more`
8454 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
84558455 
84568456 - `APIActor object`
84578457 
from line 8585
85858585 
85868586 default: federated_actor
85878587 
8588 - `provider: object or object or object or object`
8588 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
85898589 
85908590 - `FederatedActorAwsProvider object`
85918591 
from line 8657
86578657 
86588658 - `user_agent: optional string or null`
86598659 
8660 - `audience: array of object or object or object`
8660 - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink`
86618661 
86628662 The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner.
86638663 
from line 8752
87528752 
87538753 default: claude_artifact_viewed
87548754 
8755 - `actor: object or object or object or 8 more`
8755 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
87568756 
87578757 - `APIActor object`
87588758 
from line 8886
88868886 
88878887 default: federated_actor
88888888 
8889 - `provider: object or object or object or object`
8889 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
88908890 
88918891 - `FederatedActorAwsProvider object`
88928892 
from line 8992
89928992 
89938993 default: audit_log_export_accessed
89948994 
8995 - `actor: object or object or object or 8 more`
8995 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
89968996 
89978997 - `APIActor object`
89988998 
from line 9126
91269126 
91279127 default: federated_actor
91289128 
9129 - `provider: object or object or object or object`
9129 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
91309130 
91319131 - `FederatedActorAwsProvider object`
91329132 
from line 9224
92249224 
92259225 default: audit_log_export_started
92269226 
9227 - `actor: object or object or object or 8 more`
9227 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
92289228 
92299229 - `APIActor object`
92309230 
from line 9358
93589358 
93599359 default: federated_actor
93609360 
9361 - `provider: object or object or object or object`
9361 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
93629362 
93639363 - `FederatedActorAwsProvider object`
93649364 
from line 9464
94649464 
94659465 default: billing_emails_updated
94669466 
9467 - `actor: object or object or object or 8 more`
9467 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
94689468 
94699469 - `APIActor object`
94709470 
from line 9598
95989598 
95999599 default: federated_actor
96009600 
9601 - `provider: object or object or object or object`
9601 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
96029602 
96039603 - `FederatedActorAwsProvider object`
96049604 
from line 9708
97089708 
97099709 default: ccr_agent_created
97109710 
9711 - `actor: object or object or object or 8 more`
9711 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
97129712 
97139713 - `APIActor object`
97149714 
from line 9842
98429842 
98439843 default: federated_actor
98449844 
9845 - `provider: object or object or object or object`
9845 - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider`
98469846 
98479847 - `FederatedActorAwsProvider object`
98489848 
from line 9972
99729972 
99739973 default: ccr_agent_deleted
99749974 
9975 - `actor: object or object or object or 8 more`
9975 - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more`
99769976 
99779977 - `APIActor object`
99789978 
9979 - `type: optional "api_actor"`
9980 
9981 default: api_actor
9982 
9983 - `api_key_id: string`
9984 
9985 - `ip_address: string`
9986 
9987 - `user_agent: string`
9988 
9989 - `UserActor object`
9990 
9991 - `type: optional "user_actor"`
9992 
9993 default: user_actor
9994 
9995 - `email_address: string`
9996 
9997 format: email
9998 
9999 - `ip_address: string`
10000 
10001 - `user_agent: string`
10002 
10003 - `user_id: string`
10004 
10005 - `UnauthenticatedUserActor object`
10006 
10007 - `type: optional "unauthenticated_user_actor"`
10008 
10009 default: unauthenticated_user_actor
10010 
10011 - `ip_address: string`
10012 
10013 - `user_agent: string`
10014 
10015 - `unauthenticated_email_address: optional string or null`
10016 
10017 format: email
10018 
10019 - `AnthropicActor object`
10020 
10021 - `type: optional "anthropic_actor"`
10022 
10023 default: anthropic_actor
10024 
10025 - `email_address: optional string or null`
10026 
10027 format: email
10028 
10029 - `SystemActor object`
10030 
10031 Automated background processing performed by Anthropic systems, acting
10032 without a user or customer credential.
10033 
10034 - `type: optional "system_actor"`
10035 
10036 default: system_actor
10037 
10038 - `service: optional string or null`
10039 
10040 Name of the automated process that performed the action, when known.
10041 
10042 - `AdminAPIKeyActor object`
10043 
10044 - `type: optional "admin_api_key_actor"`
10045 
10046 default: admin_api_key_actor
10047 
10048 - `admin_api_key_id: string`
10049 
10050 - `ip_address: string`
10051 
10052 - `user_agent: string`
10053 
10054 - `ServiceAccountActor object`
10055 
10056 - `type: optional "service_account_actor"`
10057 
10058 default: service_account_actor
10059 
10060 - `ip_address: string`
10061 
10062 - `service_account_id: string`
10063 
10064 - `user_agent: string`
10065 
10066 - `ScimDirectorySyncActor object`
10067 
10068 - `type: optional "scim_directory_sync_actor"`
10069 
10070 default: scim_directory_sync_actor
10071 
10072 - `directory_id: string`
10073 
10074 - `workos_event_id: string`
10075 
10076 - `idp_connection_type: optional string or null`
10077 
10078 - `FederatedIdentityActor object`
10079 
10080 A federated external workload authenticated via a verified OIDC token.
10081 
10082 Carries the verified issuer, subject, and audience claims from the
10083 presented JWT.
10084 
10085 - `type: optional "federated_identity_actor"`
10086 
10087 default: federated_identity_actor
10088 
10089 - `issuer: string`
10090 
10091 - `subject: string`
10092 
10093 - `audience: optional array of string`
10094 
10095 - `ip_address: optional string or null`
10096 
10097 - `user_agent: optional string or null`
10098 
10099 - `FederatedActor object`
10100 
10101 An external identity asserted by a trusted provid
9979 - `type: optional "api_act

api/compliance/apps Changed · +6 / -6 lines

from line 452
452452 
453453 Artifact version ID e.g. 'claude_artifact_version_abc123'
454454 
455 - `content: array of object or object or object`
455 - `content: array of Text or ToolUse or ToolResult`
456456 
457457 Content blocks within the message
458458 
from line 1486
14861486 
14871487#### Returns
14881488 
1489- `data: array of object or object`
1489- `data: array of ComplianceProjectFileReference or ComplianceProjectDocReference`
14901490 
14911491 List of attachments sorted chronologically by created_at, tie break by id
14921492 
from line 1640
16401640 
16411641#### Returns
16421642 
1643- `data: array of object or object or object or object`
1643- `data: array of ComplianceProjectUserCollaborator or ComplianceProjectGroupCollaborator or ComplianceProjectOrganizationCollaborator or ComplianceProjectOrganizationRoleCollaborator`
16441644 
16451645 List of collaborators sorted chronologically by granted_at, tie break by the underlying role-assignment UUID
16461646 
from line 2483
24832483 
24842484 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
24852485 
2486 - `content: array of object or object or object`
2486 - `content: array of Text or ToolUse or ToolResult`
24872487 
24882488 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
24892489 
from line 2579
25792579 
25802580 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
25812581 
2582 - `provenance: object or object or object or null`
2582 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
25832583 
25842584 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
25852585 
from line 3007
30073007 
30083008 Unique identifier for the message, e.g. `csev_abc123`
30093009 
3010 - `content: array of object or object or object`
3010 - `content: array of Text or ToolUse or ToolResult`
30113011 
30123012 Content blocks within the message
30133013 

api/compliance/apps/sessions Changed · +3 / -3 lines

from line 329
329329 
330330 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
331331 
332 - `content: array of object or object or object`
332 - `content: array of Text or ToolUse or ToolResult`
333333 
334334 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
335335 
from line 425
425425 
426426 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
427427 
428 - `provenance: object or object or object or null`
428 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
429429 
430430 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
431431 
from line 853
853853 
854854 Unique identifier for the message, e.g. `csev_abc123`
855855 
856 - `content: array of object or object or object`
856 - `content: array of Text or ToolUse or ToolResult`
857857 
858858 Content blocks within the message
859859 

api/compliance/apps/sessions/local/messages Changed · +4 / -4 lines

from line 81
8181 
8282 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
8383 
84 - `content: array of object or object or object`
84 - `content: array of Text or ToolUse or ToolResult`
8585 
8686 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
8787 
from line 177
177177 
178178 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
179179 
180 - `provenance: object or object or object or null`
180 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
181181 
182182 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
183183 
from line 352
352352 
353353 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.
354354 
355 - `content: array of object or object or object`
355 - `content: array of Text or ToolUse or ToolResult`
356356 
357357 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.
358358 
from line 448
448448 
449449 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.
450450 
451 - `provenance: object or object or object or null`
451 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`
452452 
453453 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.
454454 

api/compliance/organizations/settings Changed · +4 / -4 lines

from line 84
8484 
8585- `organization_id: string`
8686 
87- `settings: array of object or object or object or 3 more`
87- `settings: array of Boolean or Integer or String or 3 more`
8888 
8989 - `Boolean object`
9090 
from line 303
303303 
304304 default: data_retention
305305 
306 - `value: map[object or object]`
306 - `value: map[Fixed or Indefinite]`
307307 
308308 - `Fixed object`
309309 
from line 429
429429 
430430 - `organization_id: string`
431431 
432 - `settings: array of object or object or object or 3 more`
432 - `settings: array of Boolean or Integer or String or 3 more`
433433 
434434 - `Boolean object`
435435 
from line 648
648648 
649649 default: data_retention
650650 
651 - `value: map[object or object]`
651 - `value: map[Fixed or Indefinite]`
652652 
653653 - `Fixed object`
654654 

build-with-claude/preserved-thinking Changed · +215 / -73 lines

## Who needs to change anything #### Handle the error in code ### Put changing context in the newest turn ### Libraries, proxies, and gateways

from line 11
1111 
1212The model check applies to every account. The API enforces the prefix check by default for accounts created on or after August 31, 2026, 00:00 UTC. On older accounts, it enforces the prefix check only on requests that set `thinking.block_binding.prefix_mismatch_behavior`. **Later models will enforce the prefix check for all accounts**, so make your integration append-only now.
1313 
14## Who needs to change anything
15 
16Nothing changes for you if Claude Code, claude.ai, Claude Managed Agents, or the Claude Agent SDK builds your requests, or if your code keeps `system` and `tools` fixed for a session and only ever appends to `messages`. Claude Mythos 5.1 and models before Claude Fable 5.1 don't run the prefix check. If you never send thinking blocks back, the prefix check has nothing to reject, and the model gets none of its earlier reasoning.
17 
18Check your integration if, between two requests in one conversation, it does any of the following. Each item links to what to do instead:
19 
20* [Rebuilds the `system` prompt](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions): the date, a mode flag, re-read project instructions, or a plugin or MCP server that connects after the first turn
21* [Re-renders the context in the first user message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#changing-context)
22* [Clears or shortens old tool results, or re-encodes old images](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming)
23* [Summarizes or drops old turns on the client](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#custom-compaction-on-the-client) and keeps recent turns with their thinking
24* [Adds, removes, or edits entries in `tools`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#tool-changes)
25* [Adds a reminder to a user turn](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) and removes or rewrites it later
26* [Drops some `thinking` blocks and keeps later ones](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned), or removes them and [later puts them back](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#prefix-check)
27* [Rebuilds a saved session from templates](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#faq) instead of replaying what it sent
28 
29On an older account, none of these produces an error unless the request sets `prefix_mismatch_behavior`, so a run with no errors on your own key doesn't show whether your code is affected. If people run your tool with their own API keys, those on newer accounts get the 400 error before you do. [Set `prefix_mismatch_behavior` in your tests](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#how-to-tell-whether-your-integration-is-impacted) to see what they see.
30 
1431## Switching models mid-conversation
1532 
1633Claude Fable 5.1 and Claude Mythos 5.1 read thinking blocks produced by each other and by earlier Claude models. No earlier model reads thinking blocks from Claude Fable 5.1 or Claude Mythos 5.1.
from line 67
5067 
5168Request parameters outside those three fields, such as `effort`, `max_tokens`, `output_config`, `tool_choice`, and `metadata`, aren't part of the prefix check, and neither are `cache_control` markers. [What counts as an edit](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#what-counts-as-an-edit) has the full list.
5269 
53Earlier thinking blocks aren't in the prefix, but each thinking block records which thinking block came before it, across turns. You can remove thinking blocks from the front of the history, oldest first. Removing one from the middle invalidates thinking blocks after it.
70Earlier thinking blocks aren't in the prefix, but each thinking block records which thinking block came before it, across turns. You can remove thinking blocks from the start of the history (oldest first), from the end, or all of them. What fails is a gap: the thinking blocks you keep must be an unbroken run of the original sequence, so removing one from the middle invalidates the thinking blocks after it. Once you remove a block, leave it out. Putting it back invalidates the thinking blocks produced while it was gone.
5471 
5572Keep `system` and `tools` fixed for the session and treat `messages` as append-only. The same discipline keeps the prefix stable for [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching): the edits that invalidate thinking are the edits that restart the cache.
5673 
from line 78
6178* **`"error"` (the default):** the API rejects the request with a 400 `invalid_request_error` that names the first failing block.
6279* **`"drop_block"`:** the API drops each failing block and every thinking block after it, and the request succeeds. Dropped blocks aren't billed. The model answers that turn without using reasoning from dropped blocks, and the prompt cache restarts at the edit. The response lists each dropped block in `input_transformations` (on the `message_start` event when streaming) with `reason: "prefix_binding_mismatch"`.
6380 
81`"drop_block"` keeps requests succeeding but doesn't fix the edit. Count the responses in each session whose `input_transformations` has a `prefix_binding_mismatch` entry, and alert on them. In the Message Batches API, an item that leaves the field unset drops failing blocks instead of erroring, so set `"error"` explicitly there if you want batch items to fail.
82 
6483Both the field and the `input_transformations` array require the `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers). [Set the mismatch behavior and read `input_transformations`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#preserved-thinking-controls) shows the request in each SDK.
6584 
6685The 400 message begins:
from line 94
7594That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.
7695```
7796 
78It usually ends with a sentence naming what changed, for example that the `system` prompt or the `tools` list differs from when the block was created. See [Troubleshooting thinking](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#error-thinking-block-signature) for every variant of this error.
97It usually ends with a sentence naming what changed, for example that the `system` prompt or the `tools` list differs from when the block was created. [Troubleshooting thinking](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#error-thinking-block-signature) describes what that sentence can name.
7998 
80If you hit this 400 in production, retrying the same body fails the same way. Retry with the beta header and `prefix_mismatch_behavior: "drop_block"` and keep sending it for the rest of the session, or strip every `thinking` and `redacted_thinking` block from the history yourself and retry once. Then fix the edit that caused the mismatch. In the Message Batches API, an item that leaves the field unset drops failing blocks instead of erroring, so set `"error"` explicitly there if you want batch items to fail.
81 
8299A tampered or undecryptable signature is a different failure. It always returns a 400 (``Invalid `signature` in `thinking` block`` with no sentence about the conversation), and `prefix_mismatch_behavior` doesn't apply to it.
83100 
101#### Handle the error in code
102 
103This is the 400 `invalid_request_error` shown earlier in this section. Don't resend the same body: it fails the same way every time. Retry once with the beta header and `prefix_mismatch_behavior: "drop_block"`, and store that choice with the session so every later request sends it too, including after a restart. If you can't send the beta header, remove every `thinking` and `redacted_thinking` block from the history once, leave them out, and continue. Then fix the edit that caused the mismatch.
104 
84105### Set the mismatch behavior and read `input_transformations`
85106 
86107The `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers) adds:
from line 109
88109* A top-level `input_transformations` array on every response
89110* A `block_binding` object on the `thinking` configuration, whose one field is `prefix_mismatch_behavior`
90111 
91`block_binding` is accepted alongside `thinking.type: "adaptive"` and `thinking.type: "enabled"`. Sending it without the beta header returns a 400 error. Models that don't run the prefix check accept the object and report only model-check drops, so one request body works across models.
112`block_binding` is accepted alongside `thinking.type: "adaptive"` and `thinking.type: "enabled"`. Sending it without the beta header returns a 400 error whose message ends `block_binding: Extra inputs are not permitted`. Models that don't run the prefix check accept the object and report only model-check drops, so one request body works across models. The API reference calls the prefix check the conversation check.
92113 
93114The following request opts into dropping rather than rejecting. On a first turn there's nothing to replay, so `input_transformations` comes back empty:
94115 
from line 380
359380 
360381To find out which group your account is in, take a Claude Fable 5.1 conversation that contains a thinking block, change something before that block, and send it to Claude Fable 5.1 without the beta header or the `block_binding` field. A 400 response that names the header means your account is enforced by default.
361382 
362<Note>
363 If you maintain a tool or framework that people run with their own API key, your users on new accounts hit the check before you do, because your own key is likely on an older account. Test with `prefix_mismatch_behavior` set so you see what they see.
364</Note>
365 
366383### What counts as an edit
367384 
368385Each row compares two consecutive requests:
369386 
370| Change between requests | Later thinking blocks |
371| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
372| Append messages at the end | Valid |
373| Add a tool with `defer_loading: true` that nothing has referenced yet | Valid |
374| Remove `thinking` blocks from the start of the history | Valid |
375| Change any request parameter outside `system`, `tools`, and `messages` (`effort`, `max_tokens`, `output_config`, `tool_choice`, `metadata`, and so on) | Valid |
376| Add, move, or remove `cache_control` markers | Valid |
377| A rotating signed URL that returns the same bytes | Valid |
378| Server-side compaction or context editing removes or replaces content | Valid (the check compares what you sent, not the server's edited copy) |
379| A cleared [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) left in place | Valid |
380| Edit, reorder, or delete any earlier `user`, `assistant`, or `system` message | Invalid |
381| Add a text block to an earlier user turn, or remove one you added last time | Invalid |
382| Change the top-level `system` string or blocks | Invalid |
383| Add, remove, rename, or edit a tool in `tools` | Invalid |
384| Remove a `thinking` block from the middle of the history and keep later ones | Invalid for every later thinking block |
385| An image or document URL that returns different bytes on the next request | Invalid |
386| The same turn-scoped message deleted or reworded on a later request | Invalid |
387| Change between requests | Later thinking blocks |
388| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
389| Append messages at the end | Valid |
390| Add a tool with `defer_loading: true` that nothing has referenced yet | Valid |
391| Remove `thinking` blocks from the start of the history, from the end, or all of them | Valid (the model loses that reasoning) |
392| Change any request parameter outside `system`, `tools`, and `messages` (`effort`, `max_tokens`, `output_config`, `tool_choice`, `metadata`, `thinking.display`, and so on) | Valid |
393| Add, move, or remove `cache_control` markers | Valid |
394| A rotating signed URL that returns the same bytes | Valid |
395| Server-side compaction or context editing removes or replaces content | Valid (the check compares what you sent, not the server's edited copy) |
396| A cleared [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) left in place | Valid |
397| Edit, reorder, or delete any earlier `user`, `assistant`, or `system` message | Invalid |
398| Re-render the context you put in the first user message with a changed value | Invalid for every thinking block |
399| Clear or shorten an earlier `tool_result`, re-encode an earlier image, or change an earlier `tool_use` input | Invalid for every later thinking block |
400| Add a text block to an earlier user turn, or remove one you added last time | Invalid |
401| Change the top-level `system` string or blocks | Invalid |
402| Add, remove, rename, or edit a tool in `tools` | Invalid |
403| Remove a `thinking` block from the middle of the history and keep later ones | Invalid for every later thinking block |
404| Put back a `thinking` block you removed on an earlier request | Invalid for thinking blocks produced while it was gone |
405| An image or document URL that returns different bytes on the next request | Invalid |
406| The same turn-scoped message deleted or reworded on a later request | Invalid |
387407 
388408### Check whether your code edits the prefix
389409 
390410First, diff what you send. Capture the request bodies your integration sends over a few normal turns, including a compaction or a tool change. For each pair of consecutive requests, compare `system`, `tools`, and the `messages` they share. They should be identical up to the newly appended turns.
391411 
392Then confirm against the API. Add the `thinking-binding-controls-2026-08-01` beta header, set `prefix_mismatch_behavior` to `"drop_block"`, and run a normal multi-turn session through your integration on claude-fable-5-1. The following example runs two turns the way your integration should: `messages` only grows, each assistant turn goes back exactly as the API returned it, `thinking` blocks included, and `block_binding` is set on every request. It prints the number of dropped blocks after each turn:
412Then confirm against the API. Add the `thinking-binding-controls-2026-08-01` beta header, set `prefix_mismatch_behavior` to `"drop_block"`, and run a normal multi-turn session through your integration on claude-fable-5-1. The following example runs two turns the way your integration should: `messages` only grows, each assistant turn goes back exactly as the API returned it, `thinking` blocks included, and `block_binding` is set on every request. After each turn it prints the number of `thinking` blocks in the response and the number of dropped blocks:
393413 
394414<CodeGroup>
395415 ```bash cURL
416 # Counts the thinking blocks in a response and the blocks the API dropped
417 COUNTS='"thinking blocks: \([.content[] | select(.type == "thinking")] | length), " +
418 "dropped: \(.input_transformations | length)"'
419 
396420 FIRST=$(curl -s https://api.anthropic.com/v1/messages \
397421 -H "content-type: application/json" \
398422 -H "x-api-key: $ANTHROPIC_API_KEY" \
from line 429
405429 "type": "adaptive",
406430 "block_binding": { "prefix_mismatch_behavior": "drop_block" }
407431 },
408 "messages": [{ "role": "user", "content": "What is 27 * 453?" }]
432 "messages": [
433 {
434 "role": "user",
435 "content": "How many positive integers below 500 have exactly 6 positive divisors?"
436 }
437 ]
409438 }')
410 echo "$FIRST" | jq '.input_transformations | length'
439 echo "$FIRST" | jq -r "$COUNTS"
411440 
412441 # Turn 2: the assistant turn goes back exactly as returned, then the next user message
413442 MESSAGES=$(jq -n --argjson first "$FIRST" '[
414 { role: "user", content: "What is 27 * 453?" },
443 {
444 role: "user",
445 content: "How many positive integers below 500 have exactly 6 positive divisors?"
446 },
415447 { role: "assistant", content: $first.content },
416 { role: "user", content: "Now divide that result by 3." }
448 { role: "user", content: "How many of those are odd?" }
417449 ]')
418450 
419451 jq -n --argjson messages "$MESSAGES" '{
from line 461
429461 -H "x-api-key: $ANTHROPIC_API_KEY" \
430462 -H "anthropic-version: 2023-06-01" \
431463 -H "anthropic-beta: thinking-binding-controls-2026-08-01" \
432 -d @- | jq '.input_transformations | length'
464 -d @- | jq -r "$COUNTS"
433465 ```
434466 
435467 ```bash CLI
468 # Counts the thinking blocks in a response and the blocks the API dropped
469 COUNTS='"thinking blocks: \([.content[] | select(.type == "thinking")] | length), " +
470 "dropped: \(.input_transformations | length)"'
471 
436472 FIRST=$(ant beta:messages create --beta thinking-binding-controls-2026-08-01 \
437 --transform content --format json <<'YAML'
473 --format json <<'YAML'
438474 model: claude-fable-5-1
439475 max_tokens: 16000
440476 thinking:
from line 479
443479 prefix_mismatch_behavior: drop_block
444480 messages:
445481 - role: user
446 content: What is 27 * 453?
482 content: How many positive integers below 500 have exactly 6 positive divisors?
447483 YAML
448484 )
485 echo "$FIRST" | jq -r "$COUNTS"
449486 
450487 # Turn 2: the assistant turn goes back exactly as returned, then the next user message
451488 ant beta:messages create --beta thinking-binding-controls-2026-08-01 \
452 --transform input_transformations --format json <<YAML
489 --format json <<YAML | jq -r "$COUNTS"
453490 model: claude-fable-5-1
454491 max_tokens: 16000
455492 thinking:
from line 495
458495 prefix_mismatch_behavior: drop_block
459496 messages:
460497 - role: user
461 content: What is 27 * 453?
498 content: How many positive integers below 500 have exactly 6 positive divisors?
462499 - role: assistant
463 content: $(echo "$FIRST" | jq -c .)
500 content: $(echo "$FIRST" | jq -c .content)
464501 - role: user
465 content: Now divide that result by 3.
502 content: How many of those are odd?
466503 YAML
467504 ```
468505 
from line 506
469506 ```python Python
470507 client = anthropic.Anthropic()
471508 
509 user_turns = [
510 "How many positive integers below 500 have exactly 6 positive divisors?",
511 "How many of those are odd?",
512 ]
513 
472514 # messages grows across turns: each assistant turn goes back exactly as returned
473515 messages = []
474 for user_turn in ["What is 27 * 453?", "Now divide that result by 3."]:
516 for user_turn in user_turns:
475517 messages.append({"role": "user", "content": user_turn})
476518 response = client.beta.messages.create(
477519 model="claude-fable-5-1",
from line 526
484526 betas=["thinking-binding-controls-2026-08-01"],
485527 )
486528 messages.append({"role": "assistant", "content": response.content})
487 print(len(response.input_transformations or []))
529 thinking_blocks = sum(block.type == "thinking" for block in response.content)
530 dropped = len(response.input_transformations or [])
531 print(f"thinking blocks: {thinking_blocks}, dropped: {dropped}")
488532 ```
489533 
490534 ```typescript TypeScript
491535 const client = new Anthropic();
492536 
537 const userTurns = [
538 "How many positive integers below 500 have exactly 6 positive divisors?",
539 "How many of those are odd?"
540 ];
541 
493542 // messages grows across turns: each assistant turn goes back exactly as returned
494543 const messages: Anthropic.Beta.BetaMessageParam[] = [];
495 for (const userTurn of ["What is 27 * 453?", "Now divide that result by 3."]) {
544 for (const userTurn of userTurns) {
496545 messages.push({ role: "user", content: userTurn });
497546 const response = await client.beta.messages.create({
498547 model: "claude-fable-5-1",
from line 554
505554 betas: ["thinking-binding-controls-2026-08-01"]
506555 });
507556 messages.push({ role: "assistant", content: response.content });
508 console.log(response.input_transformations?.length ?? 0);
557 const thinkingBlocks = response.content.filter((block) => block.type === "thinking");
558 const dropped = response.input_transformations ?? [];
559 console.log(`thinking blocks: ${thinkingBlocks.length}, dropped: ${dropped.length}`);
509560 }
510561 ```
511562 
from line 563
512563 ```csharp C#
513564 AnthropicClient client = new();
514565 
566 string[] userTurns =
567 [
568 "How many positive integers below 500 have exactly 6 positive divisors?",
569 "How many of those are odd?",
570 ];
571 
515572 // messages grows across turns: each assistant turn goes back exactly as returned
516573 List<BetaMessageParam> messages = [];
517 foreach (var userTurn in new[] { "What is 27 * 453?", "Now divide that result by 3." })
574 foreach (var userTurn in userTurns)
518575 {
519576 messages.Add(new() { Role = Role.User, Content = userTurn });
520577 var response = await client.Beta.Messages.Create(
from line 595
538595 Role = Role.Assistant,
539596 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList(),
540597 });
541 Console.WriteLine(response.InputTransformations?.Count ?? 0);
598 var thinkingBlocks = response.Content.Count(block => block.TryPickThinking(out _));
599 var dropped = response.InputTransformations?.Count ?? 0;
600 Console.WriteLine($"thinking blocks: {thinkingBlocks}, dropped: {dropped}");
542601 }
543602 ```
544603 
from line 604
545604 ```go Go
546605 client := anthropic.NewClient()
547606 
607 userTurns := []string{
608 "How many positive integers below 500 have exactly 6 positive divisors?",
609 "How many of those are odd?",
610 }
611 
548612 // messages grows across turns: each assistant turn goes back exactly as returned
549613 messages := []anthropic.BetaMessageParam{}
550 for _, userTurn := range []string{"What is 27 * 453?", "Now divide that result by 3."} {
614 for _, userTurn := range userTurns {
551615 messages = append(messages, anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock(userTurn)))
552616 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
553617 Model: "claude-fable-5-1",
from line 630
566630 log.Fatal(err)
567631 }
568632 messages = append(messages, response.ToParam())
569 fmt.Println(len(response.InputTransformations))
633 thinkingBlocks := 0
634 for _, block := range response.Content {
635 if block.Type == "thinking" {
636 thinkingBlocks++
637 }
638 }
639 fmt.Printf("thinking blocks: %d, dropped: %d\n", thinkingBlocks, len(response.InputTransformations))
570640 }
571641 ```
572642 
573643 ```java Java
574644 import com.anthropic.models.beta.AnthropicBeta;
645 import com.anthropic.models.beta.messages.BetaContentBlock;
575646 import com.anthropic.models.beta.messages.BetaMessage;
576647 import com.anthropic.models.beta.messages.BetaThinkingBlockBinding;
577648 import com.anthropic.models.beta.messages.BetaThinkingConfigAdaptive;
from line 652
581652 void main() {
582653 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
583654 
655 List<String> userTurns = List.of(
656 "How many positive integers below 500 have exactly 6 positive divisors?",
657 "How many of those are odd?");
658 
584659 // The builder's message list grows across turns: each assistant turn goes back exactly as returned
585660 MessageCreateParams.Builder conversation = MessageCreateParams.builder()
586661 .model("claude-fable-5-1")
from line 667
592667 .build())
593668 .addBeta(AnthropicBeta.THINKING_BINDING_CONTROLS_2026_08_01);
594669 
595 for (String userTurn : List.of("What is 27 * 453?", "Now divide that result by 3.")) {
670 for (String userTurn : userTurns) {
596671 conversation.addUserMessage(userTurn);
597672 BetaMessage response = client.beta().messages().create(conversation.build());
598673 conversation.addMessage(response);
599 IO.println(response.inputTransformations().map(List::size).orElse(0));
674 long thinkingBlocks = response.content().stream()
675 .filter(BetaContentBlock::isThinking)
676 .count();
677 int dropped = response.inputTransformations().map(List::size).orElse(0);
678 IO.println("thinking blocks: " + thinkingBlocks + ", dropped: " + dropped);
600679 }
601680 }
602681 ```
from line 689
610689 
611690 $client = new Client();
612691 
692 $userTurns = [
693 'How many positive integers below 500 have exactly 6 positive divisors?',
694 'How many of those are odd?',
695 ];
696 
613697 // $messages grows across turns: each assistant turn goes back exactly as returned
614698 $messages = [];
615 foreach (['What is 27 * 453?', 'Now divide that result by 3.'] as $userTurn) {
699 foreach ($userTurns as $userTurn) {
616700 $messages[] = ['role' => 'user', 'content' => $userTurn];
617701 $response = $client->beta->messages->create(
618702 model: 'claude-fable-5-1',
from line 710
626710 betas: [AnthropicBeta::THINKING_BINDING_CONTROLS_2026_08_01],
627711 );
628712 $messages[] = ['role' => 'assistant', 'content' => $response->content];
629 echo count($response->inputTransformations ?? []), PHP_EOL;
713 $thinkingBlocks = array_filter($response->content, fn ($block) => $block->type === 'thinking');
714 $dropped = $response->inputTransformations ?? [];
715 echo 'thinking blocks: ', count($thinkingBlocks), ', dropped: ', count($dropped), PHP_EOL;
630716 }
631717 ```
632718 
from line 719
633719 ```ruby Ruby
634720 client = Anthropic::Client.new
635721 
722 user_turns = [
723 "How many positive integers below 500 have exactly 6 positive divisors?",
724 "How many of those are odd?"
725 ]
726 
636727 # messages grows across turns: each assistant turn goes back exactly as returned
637728 messages = []
638 ["What is 27 * 453?", "Now divide that result by 3."].each do |user_turn|
729 user_turns.each do |user_turn|
639730 messages << {role: "user", content: user_turn}
640731 response = client.beta.messages.create(
641732 model: "claude-fable-5-1",
from line 739
648739 betas: [Anthropic::AnthropicBeta::THINKING_BINDING_CONTROLS_2026_08_01]
649740 )
650741 messages << {role: "assistant", content: response.content}
651 puts (response.input_transformations || []).length
742 thinking_blocks = response.content.count { |block| block.type == :thinking }
743 dropped = (response.input_transformations || []).length
744 puts "thinking blocks: #{thinking_blocks}, dropped: #{dropped}"
652745 end
653746 ```
654747</CodeGroup>
655748 
656749```text Output wrap
6570
6580
750thinking blocks: 1, dropped: 0
751thinking blocks: 1, dropped: 0
659752```
660753 
661Both turns print `0` because nothing earlier changed. Log `input_transformations` on every turn of your own integration. When the API drops a block, the entry looks like the following:
754Neither turn drops a block because nothing earlier changed. Check that the first response contains a `thinking` block. With adaptive thinking, some responses have none. If no response in the session has one, there is nothing to check and the dropped count is 0 whatever you change, so run the example again.
662755 
756Log `input_transformations` on every turn of your own integration. When the API drops a block, the entry looks like the following:
757 
663758```json
664759{
665760 "input_transformations": [
from line 767
672767}
673768```
674769 
675* **Empty on every turn:** your integration keeps the prefix intact.
676* **`reason: "prefix_binding_mismatch"`:** something before the block at `path` changed since the previous request. Diff `system`, `tools`, and `messages` up to that turn to find it, then find the matching replacement in [Make changes without editing the prefix](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#replace-prefix-edits).
770* **Empty on every turn of a session that contains `thinking` blocks:** your integration keeps the prefix intact.
771* **`reason: "prefix_binding_mismatch"`:** something before the block at `path` changed since the previous request. Diff `system`, `tools`, and `messages` up to that turn to find it, or resend the request with `"error"`: the 400 usually ends with a sentence naming what changed. Then find the matching replacement in [Make changes without editing the prefix](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#replace-prefix-edits).
677772* **`reason: "model_binding_mismatch"`:** the conversation moved to a model that can't read the earlier model's blocks. This isn't a prefix edit. See [Switching models mid-conversation](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#switching-models).
678773 
679To fail loudly in CI instead, set `"error"` and treat the 400 described in [What the API does with an invalid block](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#mismatch-behavior) as a test failure.
774To see a failure on purpose, send a third turn from the earlier example and add a `system` prompt to that request only, so that it differs from the first two requests, which had none. With `"drop_block"`, the dropped count is no longer 0: the response has one entry for each thinking block in the history, each with `reason: "prefix_binding_mismatch"`. With `"error"`, the request returns the 400 described in [What the API does with an invalid block](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#mismatch-behavior), and its last sentence names the `system` prompt. In the cURL and CLI tabs, remove the `jq` filter to see the error body. If the count is still 0, there was nothing to check: confirm that the model is claude-fable-5-1, that the request sets `block_binding`, that the history you sent contains `thinking` blocks, and that the first two requests had no `system` prompt.
680775 
776Two plain turns rarely show the problem. Run a session through each of the following, with `"error"` set so that a regression fails your CI:
777 
778* The first client-side compaction or trim
779* A tool, plugin, or MCP server that connects after the first turn
780* A mode or instruction change
781* A long tool loop, if you add reminders or shorten old tool results
782* A switch to another model and back
783* A save, a restart, and a resume on a later date
784 
681785## Make changes without editing the prefix
682786 
683787Each common prefix edit has a replacement that gives the model the same information and leaves earlier bytes unchanged, so later thinking stays valid. Find the edit your code makes today in the first column:
684788 
685| Instead of | Use | Beta header |
686| --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
687| Rebuilding the top-level `system` prompt | A [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions) | None |
688| Injecting a reminder and deleting it on the next request | A [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) (`clear_at: "next_user_message"`) | `mid-conversation-system-clear-at-2026-08-21` |
689| Adding or removing entries in `tools` | [`tool_addition` and `tool_removal` blocks](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#tool-changes) | `mid-conversation-tool-changes-2026-07-01` |
690| Changing top-level `output_config.effort` (restarts the cache, doesn't affect thinking) | A [per-message `output_config`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#effort-changes) | `mid-conversation-output-config-2026-07-01` |
691| Dropping or summarizing old turns on the client | Server-side [compaction or context editing](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming), or [client-side compaction](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#custom-compaction-on-the-client) that keeps no stale thinking | `compact-2026-01-12` or `context-management-2025-06-27` |
692| An image or document URL whose bytes change between requests | A [`file_id` from the Files API](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#files-by-id), or base64 | None |
789| Instead of | Use | Beta header |
790| --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
791| Rebuilding the top-level `system` prompt | A [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions) | None |
792| Re-rendering the context in your first user message (environment, date, memory, project instructions) on each request | Render it once and resend it unchanged. When something changes, [put the new version in the newest turn](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#changing-context) | None |
793| Clearing or shortening old `tool_result` content, or re-encoding old images, in place | Shorten a tool result or downscale an image before the first time you send it, not after. To clear old results later, [trim context on the server](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming) with `clear_tool_uses_20250919` | `context-management-2025-06-27` |
794| Injecting a reminder and deleting it on the next request | A [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#per-turn-reminders) (`clear_at: "next_user_message"`) | `mid-conversation-system-clear-at-2026-08-21` |
795| Adding or removing entries in `tools` | [`tool_addition` and `tool_removal` blocks](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#tool-changes) | `mid-conversation-tool-changes-2026-07-01` |
796| Changing top-level `output_config.effort` (restarts the cache, doesn't affect thinking) | A [per-message `output_config`](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#effort-changes) | `mid-conversation-output-config-2026-07-01` |
797| Dropping or summarizing old turns on the client | Server-side [compaction or context editing](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#server-side-trimming), or [client-side compaction](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#custom-compaction-on-the-client) that keeps no stale thinking | `compact-2026-01-12` or `context-management-2025-06-27` |
798| An image or document URL whose bytes change between requests | A [`file_id` from the Files API](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#files-by-id), or base64 | None |
693799 
694All of these assume you [send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned). To use several betas in one request, combine the values in one `anthropic-beta` header. The same names apply on Amazon Bedrock and Google Cloud (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)):
800All of these assume you [send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned). Mid-conversation system messages, turn-scoped system messages, and tool changes aren't available on every model: [Mid-conversation system messages and tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) lists the models that accept them. If your code serves several models, keep editing the top-level `system` prompt for the models that don't accept them.
695801 
802To use several betas in one request, combine the values in one `anthropic-beta` header. The same names apply on Amazon Bedrock and Google Cloud (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)):
803 
696804```text wrap
697805anthropic-beta: thinking-binding-controls-2026-08-01,mid-conversation-system-clear-at-2026-08-21,mid-conversation-tool-changes-2026-07-01
698806```
from line 809
701809 
702810Store the `content` array from each response and send it back unchanged as the assistant turn: every block type, in the order received, including `thinking` blocks whose `thinking` field is empty. A serializer that drops unknown block types, drops empty fields, or reorders blocks edits the prefix for every later turn.
703811 
812On Claude Fable 5.1, the `thinking` field is empty by default and the `signature` carries the reasoning, so a serializer that skips empty blocks removes thinking. If it removes all of them, nothing fails and the model loses its earlier reasoning on every turn. If you parse the stream yourself, keep the block even when no thinking text arrives: it opens, receives its `signature` in a `signature_delta` event, and closes. A block sent back with an empty `signature` fails.
813 
704814### Add instructions with a mid-conversation system message
705815 
706816Some harnesses rebuild the top-level `system` prompt on each request to carry the current time, a token budget, a mode flag, or newly discovered project context. That invalidates every thinking block in the conversation. Instead, freeze `system` at session start. When something changes, append a [`role: "system"` message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) at the point in `messages` where the change becomes true:
from line 824
714824 
715825The model treats this message with system-prompt authority, and everything before it stays unchanged. In a tool loop, place the message after the `tool_result` user message, never between an assistant `tool_use` and its `tool_result` (see [Limitations](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). Once sent, the message is part of the prefix for later thinking: leave it in place on later requests.
716826 
827### Put changing context in the newest turn
828 
829Some harnesses put an environment block in the first user message (working directory, branch, date, memory, project instructions) and render it again on every request. When any value changes, `messages[0]` changes, and every thinking block in the conversation is invalid. Render that block once and resend it as it was. When a value changes, say so in the newest turn: add a text block to the user message you are about to send, or append a [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#new-instructions) if the change comes from you as the operator.
830 
831```json
832{
833 "role": "user",
834 "content": [
835 {
836 "type": "text",
837 "text": "Environment update: the current branch is now release-2."
838 },
839 { "type": "text", "text": "Run the tests again." }
840 ]
841}
842```
843 
844Once sent, that text block is part of the prefix for later thinking: leave it in place on later requests.
845 
717846### Send per-turn reminders as turn-scoped system messages
718847 
719The most common prefix edit is the per-turn nudge: a line such as "request independent reads together" or "you haven't updated the user in a while" that your code appends after each batch of tool results. To keep reminders from piling up, send each nudge as a [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) with `clear_at: "next_user_message"`, placed after the `tool_result` user message. `clear_at` requires the beta header `mid-conversation-system-clear-at-2026-08-21`. The following `messages` array is the request after two tool calls and their results. `messages[3]` is the previous request's nudge, left in place, and `messages[6]` is this request's copy:
848A common prefix edit is the per-turn nudge: a line such as "request independent reads together" or "you haven't updated the user in a while" that your code appends after each batch of tool results. To keep reminders from piling up, send each nudge as a [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) with `clear_at: "next_user_message"`, placed after the `tool_result` user message. `clear_at` requires the beta header `mid-conversation-system-clear-at-2026-08-21`. The following `messages` array is the request after two tool calls and their results. `messages[3]` is the previous request's nudge, left in place, and `messages[6]` is this request's copy:
720849 
721850```json
722851[
from line 939
810939 
811940### Trim context on the server
812941 
813The second most common prefix edit is client-side trimming: dropping or summarizing the oldest turns and keeping the recent ones verbatim. The kept turns' thinking blocks were produced while the removed history was still in place, so they fail the check. The server-side equivalents don't count as edits, because the check compares the conversation as you sent it:
942Another common prefix edit is client-side trimming: dropping or summarizing the oldest turns and keeping the recent ones verbatim. The kept turns' thinking blocks were produced while the removed history was still in place, so they fail the check. The server-side equivalents don't count as edits, because the check compares the conversation as you sent it:
814943 
815944* [Compaction](https://platform.claude.com/docs/en/build-with-claude/compaction) summarizes older turns into a compaction block when the context approaches a threshold you set, and the checked prefix restarts from that block. Its [`instructions` parameter](https://platform.claude.com/docs/en/build-with-claude/compaction#custom-summarization-instructions) takes your own summarization prompt, such as "preserve every ticker, position size, and stated assumption".
816945* [Context editing](https://platform.claude.com/docs/en/build-with-claude/context-editing) clears old tool results or old thinking blocks by rule, oldest first. The strategies are `clear_tool_uses_20250919` and `clear_thinking_20251015`.
from line 1194
10651194 
10661195For an `image` or `document` block with a `url` source, the check covers the fetched bytes, not the URL string. A URL whose content changes invalidates later thinking: a "latest screenshot" endpoint, or a document someone edits between turns. A rotating signed URL for the same file doesn't. For content you reference across turns, upload it once with the [Files API](https://platform.claude.com/docs/en/build-with-claude/files) and use the `file_id`, or send base64.
10671196 
1197### Libraries, proxies, and gateways
1198 
1199A library, proxy, or gateway sits between someone else's history and the API, so its own rewrites count as edits, and its users can't see or fix them.
1200 
1201* **Pass through what you don't recognize.** Forward the caller's `anthropic-beta` values and `thinking.block_binding` unchanged, and return `input_transformations` to them. An options schema that rejects unknown keys stops your users from choosing `"drop_block"`.
1202* **Leave a `role: "system"` message where the caller put it.** Moving it into the top-level `system` field changes `system` on that request and invalidates every thinking block in the conversation.
1203* **To turn tool use off for a request, send `tool_choice: {"type": "none"}`.** Don't remove `tools`.
1204* **Don't hide the 400.** If your code catches it, strips thinking, and retries on the caller's behalf, log that it did: their history is still edited, and the model loses its earlier reasoning on every later request.
1205 
10681206## FAQ
10691207 
10701208<AccordionGroup>
from line 1231
10931231 </Accordion>
10941232 
10951233 <Accordion title="Can I resume a saved session later, after a restart or the next day?">
1096 Yes. A resumed session is an ordinary follow-up request: `system`, `tools`, and the earlier `messages` must match what you last sent byte-for-byte. Persist exactly what you sent and received, and replay that: the rendered system prompt, the tool definitions, and each assistant turn as returned. Don't re-render from inputs that might have changed since, such as the date, an updated instruction file, or a new tool version. Anything new goes in an appended message. See [Send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned).
1234 Yes. A resumed session is an ordinary follow-up request: `system`, `tools`, and the earlier `messages` must have the same content as what you last sent. JSON formatting and key order don't matter; the values do. Persist exactly what you sent and received, and replay that: the rendered system prompt, the tool definitions, and each assistant turn as returned. Don't re-render from inputs that might have changed since, such as the date, an updated instruction file, or a new tool version. Anything new goes in an appended message. See [Send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned).
1235 </Accordion>
1236 
1237 <Accordion title="A saved session now fails on every request. How do I get it working again?">
1238 The stored history has an edit in it, so replaying it can't succeed. Send that session with `prefix_mismatch_behavior: "drop_block"` from now on, or remove its `thinking` and `redacted_thinking` blocks once and continue. Thinking the model produces from that point on stays valid as long as nothing before it changes again. Then find the edit so that new sessions don't hit it. See [Handle the error in code](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#handle-the-error-in-code).
10971239 </Accordion>
10981240 
10991241 <Accordion title="My harness can route a turn to a non-Claude model. Do those turns invalidate Claude's earlier thinking?">

build-with-claude/thinking Changed · +6 / -3 lines

from line 470
470470* If you pass thinking blocks back in multi-turn conversations, pass them unchanged. The server decrypts the `signature` to reconstruct the original thinking for prompt construction (see [Preserving thinking blocks](https://platform.claude.com/docs/en/build-with-claude/thinking#preserving-thinking-blocks)). Any text you place in the `thinking` field of a round-tripped omitted block is ignored.
471471* `display` is invalid with `thinking.type: "disabled"` (there is nothing to display).
472472* When using `thinking.type: "adaptive"` and the model skips thinking for a simple request, no thinking block is produced regardless of `display`.
473* When streaming with `display: "omitted"`, no `thinking_delta` events are emitted. With `display: "updates"`, only [progress-update blocks](https://platform.claude.com/docs/en/build-with-claude/thinking#progress-updates) stream `thinking_delta` events. See [Streaming thinking](https://platform.claude.com/docs/en/build-with-claude/thinking#streaming-thinking) for the event sequence.
473* When streaming with `display: "omitted"`, no thinking text is streamed. Each thinking block streams a `thinking_delta` with an empty `thinking` string, then its `signature_delta`. With `display: "updates"`, only [progress-update blocks](https://platform.claude.com/docs/en/build-with-claude/thinking#progress-updates) stream `thinking_delta` events that carry text. See [Streaming thinking](https://platform.claude.com/docs/en/build-with-claude/thinking#streaming-thinking) for the event sequence.
474474 
475475<Note>
476476 The `signature` field is identical whichever `display` value you set. Switching `display` values between turns in a conversation is supported.
from line 500
500500 
501501Thinking works with [streaming](https://platform.claude.com/docs/en/build-with-claude/streaming). Thinking blocks stream as `thinking_delta` events inside `content_block_delta` events, followed by a single `signature_delta` event just before the block's `content_block_stop`. Text blocks stream afterward as usual.
502502 
503![Diagram of the streaming event sequence with thinking: the thinking block opens, thinking deltas stream only when the display setting returns text (summarized, or updates for progress-update blocks), a single signature delta closes the block, then text deltas stream](https://platform.claude.com/docs/images/how-thinking-streams.svg)
503![Diagram of the streaming event sequence with thinking: the thinking block opens, thinking deltas carry text only when the display setting returns text (summarized, or updates for progress-update blocks), a single signature delta closes the block, then text deltas stream](https://platform.claude.com/docs/images/how-thinking-streams.svg)
504504 
505505The following examples stream a response with adaptive thinking, printing thinking and text deltas as they arrive:
506506 
from line 780
780780 ```
781781</Accordion>
782782 
783When `display: "omitted"` is set, the thinking block opens, a single `signature_delta` arrives, and the block closes without any `thinking_delta` events. Text streaming begins immediately after:
783When `display: "omitted"` is set, the thinking block opens, a `thinking_delta` with an empty `thinking` string arrives, a single `signature_delta` follows, and the block closes. Text streaming begins immediately after:
784784 
785785```sse Output
786786event: content_block_start
787787data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
788 
789event: content_block_delta
790data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":""}}
788791 
789792event: content_block_delta
790793data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}

build-with-claude/thinking-troubleshooting Changed · +8 / -2 lines

from line 106
106106messages.{i}.content.{j}: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block".
107107```
108108 
109If the request didn't send the `thinking-binding-controls-2026-08-01` beta header, the message adds ``That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.`` The message can also end with a sentence naming the first message that changed. If the message has no reason clause at all, the block's content was modified. See [A 400 error says thinking blocks cannot be modified](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#error-thinking-blocks-modified).
109If the request didn't send the `thinking-binding-controls-2026-08-01` beta header, the message adds ``That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.``
110110 
111On Claude Fable 5.1, the API accepts a replayed thinking block [only while the `system` prompt, `tools`, and messages that preceded it are unchanged](https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation). The error means something earlier in the conversation changed between requests: an edited, reordered, or removed turn, a per-turn reminder that was injected and later removed, a rebuilt `system` prompt or `tools` array, or client-side compaction that kept recent turns and their thinking verbatim. The check is enforced for new accounts created on or after August 31, 2026, and for any request that sets `thinking.block_binding.prefix_mismatch_behavior`. Server-side [compaction](https://platform.claude.com/docs/en/build-with-claude/compaction) and [context editing](https://platform.claude.com/docs/en/build-with-claude/context-editing) never trigger it.
111The message usually ends with a sentence naming what changed: the `system` prompt, the `tools` list, the first message or block that differs, content that is missing or new, or an earlier thinking block that is missing or out of order. That sentence is for people and logs. Its wording can change, so don't match on it in code.
112112 
113If the message stops after ``Invalid `signature` in `thinking` block``, the signature itself didn't verify: it was truncated, altered, or sent back empty, and `prefix_mismatch_behavior` doesn't apply. Edited thinking text returns a different error. See [A 400 error says thinking blocks cannot be modified](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#error-thinking-blocks-modified).
114 
115On Claude Fable 5.1, the API accepts a replayed thinking block only while the `system` prompt, `tools`, and messages that preceded it are unchanged. See [Keeping the prefix unchanged](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#prefix-check). The error means something earlier in the conversation changed between requests: an edited, reordered, or removed turn, a per-turn reminder that was injected and later removed, a rebuilt `system` prompt or `tools` array, or client-side compaction that kept recent turns and their thinking verbatim. The check is enforced for new accounts created on or after August 31, 2026, and for any request that sets `thinking.block_binding.prefix_mismatch_behavior`. Server-side [compaction](https://platform.claude.com/docs/en/build-with-claude/compaction) and [context editing](https://platform.claude.com/docs/en/build-with-claude/context-editing) never trigger it.
116 
113117To fix it, keep the history append-only: pass earlier turns back exactly as sent and received, add instructions with a [mid-conversation system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) instead of editing `system` or `tools`, and let server-side [context editing](https://platform.claude.com/docs/en/build-with-claude/context-editing) or [compaction](https://platform.claude.com/docs/en/build-with-claude/compaction) do any trimming. Retrying the same request body doesn't clear the error. To continue this request without the invalidated reasoning, send the `thinking-binding-controls-2026-08-01` beta header and set `thinking.block_binding.prefix_mismatch_behavior` to `"drop_block"`. Alternatively, strip every `thinking` and `redacted_thinking` block from the history (at minimum the named block and every one after it, in that turn and all later turns), leave each turn's other blocks in place, and retry once.
114118 
115119A block from a model the target model can't read never produces this error: the API drops it and, under the beta header, reports it in `input_transformations`.
from line 125
121125This happens because `display` defaults to `"omitted"` on newer models, which returns thinking blocks without their text.
122126 
123127Set `display: "summarized"` in your thinking configuration to receive the summarized thinking text. See [Controlling thinking display](https://platform.claude.com/docs/en/build-with-claude/thinking#controlling-thinking-display) for the defaults per model. If you only want the short status lines some models write between tool calls, and not the reasoning, set `display: "updates"` (beta) instead. See [Progress updates between tool calls](https://platform.claude.com/docs/en/build-with-claude/thinking#progress-updates).
128 
129A block whose `thinking` field is empty is still complete: the `signature` holds the reasoning. Send it back with the turn like any other. See [Send assistant turns back exactly as returned](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#append-assistant-turns-exactly-as-returned).
124130 
125131## No thinking block appears on some turns
126132 

manage-claude/inference-hooks-configuration Changed · +3 / -3 lines

from line 101
101101 
102102Under **Exclusions**, select roles whose members are not covered by Inference hooks: their prompts are never sent to your AI security server. Only custom roles your organization created can be excluded; the built-in roles aren't offered. Pick them in the role selector, whose placeholder reads **Select roles to exclude**, and manage who holds each role from the roles admin page (**Manage roles**); changing exclusions requires identity management permission. The list is empty by default, and with no roles excluded, every governed request is inspected.
103103 
104Exclusion applies to a user's interactive sessions; traffic authenticated by machine credentials is always inspected. If Claude can't resolve a requester's role membership, the request fails closed with a retryable error rather than proceeding uninspected. Changes to the exclusion list are recorded in the audit trail.
104Exclusion applies to a user's interactive sessions; traffic authenticated by machine credentials is always inspected. Changes to the exclusion list are recorded in the audit trail.
105105 
106106## Custom blocked prompt message
107107 
from line 127
127127 
128128To recover, fix the server, then turn **Enforce verdicts** back on to reset the breaker.
129129 
130The breaker can also reset on its own. Starting 10 minutes after the trip, Anthropic tests whether your server has recovered: at most about once per minute, one request from your organization's normal traffic is sent to your server for inspection, and that request proceeds for its user whether or not your server answers. If your server responds with a valid verdict, allow or deny, the breaker resets and enforcement resumes. Any other outcome is a webhook failure: the breaker stays tripped and testing continues.
130The breaker can also reset on its own. Starting 10 minutes after the trip, Anthropic checks whether your server has recovered by sending it a test request in the background, at most about once per minute; no user request is involved. If your server responds with a valid verdict, allow or deny, the breaker resets and enforcement resumes. Otherwise the breaker stays tripped and the checks continue.
131131 
132Automatic recovery runs only while your Inference hooks settings are unchanged since the trip. If you change any Inference hooks setting after a trip, including rotating the signing secret, testing stops and the breaker no longer resets on its own; turn **Enforce verdicts** back on when your server is fixed. Automatic recovery applies only to trips: if you turn **Enforce verdicts** off yourself, enforcement stays off until you turn it back on.
132Automatic recovery runs only while your Inference hooks settings are unchanged since the trip. If you change any Inference hooks setting after a trip, including rotating the signing secret, the checks stop and the breaker no longer resets on its own; turn **Enforce verdicts** back on when your server is fixed. Automatic recovery applies only to trips: if you turn **Enforce verdicts** off yourself, enforcement stays off until you turn it back on.
133133 
134134## Rotate your signing secret
135135 

manage-claude/inference-hooks-endpoint Changed · +5 / -7 lines

from line 176
176176| `model` | string or null | Public model identifier for this request, when available. |
177177| `metadata` | object | Reserved extension map of string keys to string values, sent empty today. Require nothing from it, and tolerate its absence, its presence, and any keys that appear. |
178178 
179<Note>
180 Requests currently also carry deprecated legacy aliases of some of these fields. Read the field names documented on this page and ignore any others; the aliases exist only for earlier integrations.
181</Note>
182 
183179An example request body:
184180 
185181```json
from line 226
230226| `tool_result` | `content`: the tool's output as text, with parts joined by newlines; binary parts such as images are replaced by placeholder markers, and raw bytes are never sent. `is_error`: whether the tool call failed. `tool_name`: the tool's name, so a policy can condition on tool identity without cross-referencing an earlier block. `tool_use_id`: the `id` of the matching `tool_use` block. |
231227| `attachment` | `file_name`: the original file name or path. `media_type`: the attachment's media type. `size_bytes`: the size of the original file. `text`: the text content of the attachment when available, such as extracted document text, an audio transcript, or link metadata. Raw attachment bytes are never sent. |
232228 
229Apart from `type`, a `text` block's `text`, and a `tool_result` block's `content` and `is_error`, any of these fields can be `null` when the value isn't known; for example, an image arrives as an `attachment` block with `file_name` and `text` set to `null`.
230 
233231A block whose `type` you don't recognize is a forward-compatible addition. The only field it guarantees is `type`; your policy may inspect whatever other fields are present, but must not reject the request because of an unrecognized type.
234232 
235233### What the transcript contains
from line 236
238236 
239237A turn whose every block is excluded is omitted entirely, so don't assume strict user and assistant alternation.
240238 
241Transcripts are sent untruncated, so a long conversation with large attachments produces a large request body, up to an upper bound of 10 MB. Raise your server's body limit to accept that ceiling. Several common defaults are much smaller, including nginx `client_max_body_size` at 1 MB and Express `express.json()` at 100 kB, and a rejected body counts as a webhook failure, so under **Allow the request** failure handling an oversized prompt would reach the model uninspected.
239Transcripts are sent untruncated, so a long conversation with large attachments produces a large request body. In practice the model's context window keeps bodies under about 10 MB, but the protocol allows up to 64 MiB, so raise your server's body limit to accept that ceiling. Several common defaults are much smaller, including nginx `client_max_body_size` at 1 MB and Express `express.json()` at 100 kB, and a rejected body counts as a webhook failure, so under **Allow the request** failure handling an oversized prompt would reach the model uninspected.
242240 
243241### Source values
244242 
245`source.application` is an open string, not a closed enum. Known values are `claude-ai` and `claude-code`; [connection tests](https://platform.claude.com/docs/en/manage-claude/inference-hooks-configuration) use `config-test`. New values may appear, and your server must not reject a request because of one it doesn't recognize.
243`source.application` is an open string, not a closed enum. Common values are `claude-ai`, `claude-code`, and `cowork`; [connection tests](https://platform.claude.com/docs/en/manage-claude/inference-hooks-configuration) and automatic circuit-breaker [recovery checks](https://platform.claude.com/docs/en/manage-claude/inference-hooks-endpoint#circuit-breaker) use `config-test`. New values may appear, and your server must not reject a request because of one it doesn't recognize.
246244 
247245Treat `source.application` as advisory routing metadata, not a trust boundary: don't rest a security-critical policy decision on it alone.
248246 
from line 687
689687 
690688Sustained webhook failures attributable to your AI security server trip a circuit breaker that stops enforcement: Anthropic stops contacting your server, and failure handling applies to every request.
691689 
692Starting 10 minutes after the trip, Anthropic tests whether your server has recovered: at most about once per minute, one request, carried by your organization's own traffic, is delivered to your server for inspection, signed and shaped like any other. Respond to it normally. A valid verdict, allow or deny, resets the breaker and enforcement resumes. A webhook failure leaves the breaker tripped, and testing continues. Either way, the test request itself proceeds for its user: its verdict is not enforced, and a failed test does not block it, even under **Block the request**. An administrator can also reset the breaker at any time, and administrator configuration changes stop the automatic testing; see [Circuit breaker](https://platform.claude.com/docs/en/manage-claude/inference-hooks-configuration#circuit-breaker).
690Starting 10 minutes after the trip, Anthropic checks whether your server has recovered: at most about once per minute it sends your server the same synthetic test request that **Test connection** sends (`source.application` is `config-test`), signed like any other request and carrying no user content. Respond to it normally. A valid verdict, allow or deny, resets the breaker and enforcement resumes; a webhook failure leaves the breaker tripped, and the checks continue. An administrator can also reset the breaker at any time, and administrator configuration changes stop the automatic checks; see [Circuit breaker](https://platform.claude.com/docs/en/manage-claude/inference-hooks-configuration#circuit-breaker).
693691 
694692Each trip is recorded as an `inference_hooks_circuit_breaker_tripped` activity in the [Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed), one activity per trip. While the breaker is tripped, no per-request Inference hooks activities are recorded, so the trip activity is the feed's only record of the tripped window.
695693 

api/beta/organization/rbac_roles Changed · +1 / -1 lines

from line 257
257257 `all_connectors` grants carry a tool-access action, the scope action, or
258258 an authentication-method action (`interactive` or `managed`).
259259 
260 - `resource: object or object or object or 2 more`
260 - `resource: Organization or ConnectorTool or ConnectorScope or 2 more`
261261 
262262 What the permission applies to.
263263 

api/beta/organization/rbac_roles/permissions Changed · +2 / -2 lines

from line 64
6464 `all_connectors` grants carry a tool-access action, the scope action, or
6565 an authentication-method action (`interactive` or `managed`).
6666 
67 - `resource: object or object or object or 2 more`
67 - `resource: Organization or ConnectorTool or ConnectorScope or 2 more`
6868 
6969 What the permission applies to.
7070 
from line 216
216216 `all_connectors` grants carry a tool-access action, the scope action, or
217217 an authentication-method action (`interactive` or `managed`).
218218 
219 - `resource: object or object or object or 2 more`
219 - `resource: Organization or ConnectorTool or ConnectorScope or 2 more`
220220 
221221 What the permission applies to.
222222 

api/beta/organization/rbac_roles/permissions/list Changed · +1 / -1 lines

from line 62
6262 `all_connectors` grants carry a tool-access action, the scope action, or
6363 an authentication-method action (`interactive` or `managed`).
6464 
65 - `resource: object or object or object or 2 more`
65 - `resource: Organization or ConnectorTool or ConnectorScope or 2 more`
6666 
6767 What the permission applies to.
6868 

api/beta/organization/spend_limits/create Changed · +1 / -1 lines

from line 81
8181 
8282 - `"weekly"`
8383 
84 - `scope: object or object or object or 2 more`
84 - `scope: User or SeatTier or RBACGroup or 2 more`
8585 
8686 What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.
8787 

api/beta/organization/spend_limits/increase_requests/deny Changed · +2 / -2 lines

from line 78
7878 
7979 format: date-time
8080 
81 - `resolved_by: object or object or null`
81 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
8282 
8383 - `UserActor object`
8484 
from line 190
190190 
191191 Tagged ID of the member the spend limit applies to.
192192 
193 - `source: object or object or object or 2 more`
193 - `source: User or SeatTier or RBACGroup or 2 more`
194194 
195195 - `User object`
196196 

api/beta/organization/spend_limits/increase_requests/list Changed · +2 / -2 lines

from line 92
9292 
9393 format: date-time
9494 
95 - `resolved_by: object or object or null`
95 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
9696 
9797 - `UserActor object`
9898 
from line 204
204204 
205205 Tagged ID of the member the spend limit applies to.
206206 
207 - `source: object or object or object or 2 more`
207 - `source: User or SeatTier or RBACGroup or 2 more`
208208 
209209 - `User object`
210210 

api/beta/organization/spend_limits/increase_requests/retrieve Changed · +2 / -2 lines

from line 74
7474 
7575 format: date-time
7676 
77 - `resolved_by: object or object or null`
77 - `resolved_by: UserActor or ScopedAPIKeyActor or null`
7878 
7979 - `UserActor object`
8080 
from line 186
186186 
187187 Tagged ID of the member the spend limit applies to.
188188 
189 - `source: object or object or object or 2 more`
189 - `source: User or SeatTier or RBACGroup or 2 more`
190190 
191191 - `User object`
192192 

api/beta/organization/spend_limits/list_effective Changed · +1 / -1 lines

from line 113
113113 
114114 Tagged ID of the member the spend limit applies to.
115115 
116 - `source: object or object or object or 2 more`
116 - `source: User or SeatTier or RBACGroup or 2 more`
117117 
118118 - `User object`
119119