One read of Claude Developer Platformapi-20261021T040709Z
10 pages moved out of 808 read.
Pages moved
10
significant first
Pages read
808
in this capture
Captured
04:07 UTC
Corpus hash
c42126ce5784
corpus-hash
What this read moved
1-10 of 10manage-claude/admin-api Changed · +4 / -0 lines
## Organization webhooks
from line 1730
17301730
17311731Retrieve audit and activity data for your organization with the [Compliance API](https://platform.claude.com/docs/en/manage-claude/compliance-api). Admin API keys can read only the Activity Feed. For full access, see [Set up the Compliance API](https://platform.claude.com/docs/en/manage-claude/compliance-api-access).
17321732
1733## Organization webhooks
1734
1735Register webhook endpoints for events about enforcement actions on your organization's user profiles with [organization webhooks](https://platform.claude.com/docs/en/manage-claude/organization-webhooks).
1736
17331737## Best practices
17341738
17351739* Use meaningful names and descriptions for workspaces and API keys
manage-claude/cmek Changed · +6 / -4 lines
from line 67
6767
6868* Chat content, including skills and plugins.
6969* Chat attachments and project attachments.
70* Artifacts, including Claude Design, Claude Slides, and Claude Docs in conversations and the **Artifacts** tab.
7071* Claude Code on the CLI, including message content.
7172* Cowork in Claude Desktop.
7273* Compliance API [local session transcripts](https://platform.claude.com/docs/en/manage-claude/compliance-sessions#retrieve-local-sessions) captured from sessions on users' machines. If your key cannot be used, the messages endpoint returns [503 Service Unavailable](https://platform.claude.com/docs/en/manage-claude/compliance-errors#local-sessions-temporarily-unavailable) instead of transcript content. Session metadata is still listed.
from line 92
9192* Chat search is disabled because chat titles and content are encrypted under your key. Members cannot search past chats, and the **Search and reference chats** toggle stays off, so Claude cannot search them either.
9293* [Project knowledge search](https://support.claude.com/en/articles/11473015-retrieval-augmented-generation-rag-for-projects) (retrieval-augmented generation, or RAG) is disabled. Project knowledge loads directly into each conversation's context instead of being indexed and searched. As a result, a project can use substantially less knowledge than it could without CMEK. Knowledge beyond what can be loaded is left out of the conversation.
9394* Claude Code on the web and Claude in Slack are unavailable: new sessions cannot be started and Claude in Slack declines requests, even if an admin turns these products on. Claude Code Desktop remains available for local sessions but is off unless an admin turns it on under [claude.ai > Organization settings > Claude Code](https://claude.ai/admin-settings/claude-code).
95* Artifacts, including Claude Design, Claude Slides, and Claude Docs in conversations and the **Artifacts** tab, cannot be turned on in organizations that also use ZDR. In organizations with HIPAA readiness, an Owner must first accept the terms for using them.
9496* Claude Code cannot [publish artifacts](https://code.claude.com/docs/en/artifacts#availability). However, artifacts made in chat or Cowork can be shared within your organization, but not publicly.
9597* Certain analytics are disabled, regardless of admin settings: Claude smart reports (beta, under claude.ai/analytics/insights) and Claude Code contribution metrics from GitHub (beta, under claude.ai/analytics/claude-code). Admin analytics for skills and connectors, in the claude.ai analytics dashboard and through the [Claude Enterprise Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api), don't include usage in chat, and hide the names of custom skills, plugins, and connectors.
9698* Organization data exports and audit log exports, both under [claude.ai > Organization settings > Data and privacy](https://claude.ai/admin-settings/data-privacy-controls), are disabled.
9799* Response ratings (thumbs up and thumbs down on Claude's responses) are disabled.
98100* [Skill and plugin security scanning](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/enterprise#skill-content-scanning) is unavailable: the setting cannot be turned on, and skills and plugins are installed without a scan.
99* The following beta and research preview features are unavailable in CMEK organizations, regardless of admin settings: Claude Design, Claude Slides, and Claude Docs in conversations and the **Artifacts** tab, and routines.
101* The following beta and research preview features are unavailable in CMEK organizations, regardless of admin settings: Claude Security and routines.
100102
101103### Encrypted with Anthropic key
102104
from line 111
109111* Claude Managed Agents [vault credential](https://platform.claude.com/docs/en/managed-agents/vaults) values, such as OAuth tokens and client secrets. These are stored under Anthropic-managed encryption, are write-only, and are never returned in API responses.
110112* [User profiles](https://platform.claude.com/docs/en/api/beta/user_profiles): the `name`, `external_id`, and `metadata` fields are stored under Anthropic-managed encryption, not your key. Do not store sensitive personal data in profile `metadata`.
111113* Ratings and comments about the Claude Console that members send with its **Feedback** option. No setting turns these off; members send them only when they choose to.
114* [OpenTelemetry destination](https://platform.claude.com/docs/en/manage-claude/opentelemetry/api#add-a-destination) request headers, such as the API key header of your observability backend. These are stored under Anthropic-managed encryption. Their values are write-only and are never returned in API responses.
112115
113- [OpenTelemetry destination](https://platform.claude.com/docs/en/manage-claude/opentelemetry#add-a-destination) request headers, such as the API key header of your observability backend. These are stored under Anthropic-managed encryption. Their values are write-only and are never returned in API responses.
114
115116**Claude Enterprise**
116117
117* Beta and research preview features might not be covered by CMEK and can break in CMEK organizations, for example, Claude Security and the Claude Design app at claude.ai/design.
118* Beta and research preview features might not be covered by CMEK and can break in CMEK organizations.
119* The standalone Claude Design app at claude.ai/design is not supported with CMEK, and its data might not be encrypted under your key. The standalone app is closing. Claude Design in conversations and the **Artifacts** tab is encrypted under your key, as listed under [Encrypted with CMEK key](https://platform.claude.com/docs/en/manage-claude/cmek#encrypted).
118120* [Personal preferences - Instructions for Claude section](https://claude.ai/new#settings/account) and Cowork Global instructions. These are set at the account level and shared across all of a user's organizations.
119121
120122On both products, account data for users in your organization (such as names, email addresses, and profile pictures) is not encrypted under your key.
manage-claude/opentelemetry/api Changed · +4 / -3 lines
from line 170
170170
171171 var params = TelemetryDestinationCreateParams.builder()
172172 .endpointUrl("https://gateway.example.com/otlp")
173 .headers(TelemetryDestinationCreateParams.Headers.builder()
173 .headers(TelemetryDestinationCreateParams.DestinationHeaders.builder()
174174 .putAdditionalProperty("authorization", JsonValue.from("Bearer YOUR_OBSERVABILITY_API_KEY"))
175175 .build())
176176 .traces(BetaTelemetryDestinationTracesParams.builder()
from line 288
288288
289289 ```csharp C#
290290 using System.Diagnostics;
291 // ...
291292
292 // Add this source to your tracer provider, next to com.anthropic.sdk.csharp.
293 // Add this source to your tracer provider, next to com.anthropic.sdk.csharp*.
293294 var source = new ActivitySource("MyService");
294295
295296 using (source.StartActivity("summarize_issues"))
manage-claude/opentelemetry/sdk Changed · +11 / -6 lines
from line 192
192192 using OpenTelemetry.Trace;
193193
194194 // Register a tracer provider that prints each span to the console.
195 // The SDK emits its spans from the source com.anthropic.sdk.csharp. Add com.anthropic.sdk.csharp*
196 // instead to include the SDK's clients for cloud platforms.
197195 using var tracerProvider = Sdk.CreateTracerProviderBuilder()
198 .AddSource("com.anthropic.sdk.csharp")
196 .AddSource("com.anthropic.sdk.csharp*")
199197 .AddConsoleExporter()
200198 .Build();
201199
from line 362
364362| `traces.content_mode` (typescript, java, php: `traces.contentMode`; csharp: `Traces.ContentMode`; go: `option.WithOpenTelemetryTracesContentMode()`)<br />`ANTHROPIC_OPEN_TELEMETRY_TRACES_CONTENT_MODE=content` | Include prompts and responses in spans. See [Content modes](https://platform.claude.com/docs/en/manage-claude/opentelemetry#choose-a-content-mode). | `metadata_only` |
365363| `traces.max_content_bytes` (typescript, java, php: `traces.maxContentBytes`; csharp: `Traces.MaxContentBytes`; go: `option.WithOpenTelemetryTracesMaxContentBytes()`)<br />`ANTHROPIC_OPEN_TELEMETRY_TRACES_MAX_CONTENT_BYTES` | Change the content limit of each span. See [Content limits](https://platform.claude.com/docs/en/manage-claude/opentelemetry#content-limits). | 0.75 MB |
366364| `conversation_id` (typescript, java, php: `conversationId`; csharp: `ConversationId`; go: `option.WithOpenTelemetryConversationID()`) | Link several calls into one conversation. The SDK writes the ID to `gen_ai.conversation.id`. The ID is exported in both content modes, so don't put personal data or secrets in it. | None |
367| `tracer_provider` (typescript, java, php: `tracerProvider`; csharp: `AddSource("com.anthropic.sdk.csharp")`; go: `option.WithTracerProvider()`) | Choose the tracer provider that gets the SDK's spans. | The tracer provider you set up in [Register a tracer provider](https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk#register-a-tracer-provider) |
365| `tracer_provider` (typescript, java, php: `tracerProvider`; csharp: `AddSource("com.anthropic.sdk.csharp*")`; go: `option.WithTracerProvider()`) | Choose the tracer provider that gets the SDK's spans. | The tracer provider you set up in [Register a tracer provider](https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk#register-a-tracer-provider) |
368366| `propagation` (go: `option.WithOpenTelemetryPropagation()`)<br />`ANTHROPIC_OPEN_TELEMETRY_PROPAGATION=false` | Stop sending trace context and baggage headers with requests, for example when your HTTP client instrumentation already sends them. The SDK still emits spans. Available in the Python, TypeScript, Go, Java, Ruby, and PHP SDKs. | On |
369367| `open_telemetry` (typescript, java, php: `openTelemetry`; csharp: `OpenTelemetry`; go: `option.WithoutOpenTelemetry()`)<br />`ANTHROPIC_OPEN_TELEMETRY=false` | Turn spans off for one client, for example when another library already traces the SDK. | On |
370368
from line 414
416414 ```csharp C#
417415 // Use a specific tracer provider: add the SDK's source to it.
418416 using var tracerProvider = Sdk.CreateTracerProviderBuilder()
419 .AddSource("com.anthropic.sdk.csharp")
417 .AddSource("com.anthropic.sdk.csharp*")
420418 .AddConsoleExporter()
421419 .Build();
422420
from line 516
518516 ```ruby Ruby
519517 # Use a specific tracer provider and record content.
520518 # Setting open_telemetry overrides all ANTHROPIC_OPEN_TELEMETRY* environment variables.
521 client = Anthropic::Client.new(open_telemetry: {tracer_provider: provider, traces: {content_mode: :content}})
519 client = Anthropic::Client.new(
520 open_telemetry: {
521 tracer_provider: OpenTelemetry.tracer_provider,
522 traces: {content_mode: :content}
523 }
524 )
522525
523526 # Turn spans off for one client.
524527 quiet_client = Anthropic::Client.new(open_telemetry: false)
from line 607
604607 </CodeGroupItem>
605608
606609 ```csharp C#
610 using System.Diagnostics;
611
607612 // The SDK writes these headers with .NET's DistributedContextPropagator.
608613 // The no-output propagator stops these headers for every HttpClient in the process.
609614 // Set it before you create any client.
manage-claude/user-profiles Changed · +33 / -32 lines
from line 4
44description: Attribute API requests to the end customers your platform serves, so a safety enforcement action can apply to one profile instead of your whole organization.
55---
66
7User profiles ("profiles") tell Anthropic which of your end customers each API request is for. A safety enforcement action, such as a hold or a block, can then apply to one end customer instead of your whole organization. When it does, the rest of your traffic is unaffected.
7User profiles ("profiles") tell Anthropic which of your end customers each API request is for. A safety enforcement action, such as a restriction or a ban, can then apply to one end customer instead of your whole organization. When it does, the rest of your traffic is unaffected.
88
99If you operate a platform or gateway, or resell API access, the requests you send for your end customers arrive under your organization. Anthropic runs automated safety classifiers over API traffic. Without a profile on the request, one end customer can trigger an enforcement action that applies to your whole organization.
1010
from line 150
150150 var profile = client.userProfiles().create(params);
151151
152152 IO.println(profile.id());
153 // ...
153154 }
154155 ```
155156
from line 225
224225
225226## Attribute each request
226227
227Send the profile ID in the `anthropic-user-profile-id` header on every request you make on the end customer's behalf. The SDKs and the CLI have an argument that sends the header for you: `user_profile_id` (java: `userProfileId`; php: `userProfileID`; csharp, go: `UserProfileID`; cli: `--user-profile-id`).
228Send the profile ID in the `anthropic-user-profile-id` header on every request you make on the end customer's behalf. The SDK and the CLI have an argument that sends the header for you: `user_profile_id` (java: `userProfileId`; php: `userProfileID`; csharp, go: `UserProfileID`; cli: `--user-profile-id`).
228229
229230<CodeGroup>
230231 ```bash cURL
from line 232
231232 curl https://api.anthropic.com/v1/messages \
232233 -H "x-api-key: $ANTHROPIC_API_KEY" \
233234 -H "anthropic-version: 2023-06-01" \
234 -H "anthropic-user-profile-id: uprof_011CZkZCu8hGbp5mYRQgUmz9" \
235 -H "anthropic-user-profile-id: $PROFILE_ID" \
235236 -H "content-type: application/json" \
236237 -d '{
237238 "model": "claude-opus-5-5",
from line 248
247248 --model claude-opus-5-5 \
248249 --max-tokens 1024 \
249250 --message '{role: user, content: "Hello, Claude"}' \
250 --user-profile-id uprof_011CZkZCu8hGbp5mYRQgUmz9
251 --user-profile-id "$PROFILE_ID"
251252 ```
252253
253254 ```python Python
from line 258
257258 model="claude-opus-5-5",
258259 max_tokens=1024,
259260 messages=[{"role": "user", "content": "Hello, Claude"}],
260 user_profile_id="uprof_011CZkZCu8hGbp5mYRQgUmz9",
261 user_profile_id=profile_id,
261262 )
262263
263264 print(message)
from line 271
270271 model: "claude-opus-5-5",
271272 max_tokens: 1024,
272273 messages: [{ role: "user", content: "Hello, Claude" }],
273 user_profile_id: "uprof_011CZkZCu8hGbp5mYRQgUmz9"
274 user_profile_id: profileId
274275 });
275276
276277 console.log(message);
from line 285
284285 Model = Model.ClaudeOpus5_5,
285286 MaxTokens = 1024,
286287 Messages = [new() { Role = Role.User, Content = "Hello, Claude" }],
287 UserProfileID = "uprof_011CZkZCu8hGbp5mYRQgUmz9"
288 UserProfileID = profileId
288289 };
289290 var message = await client.Messages.Create(parameters);
290291
from line 301
300301 Messages: []anthropic.MessageParam{
301302 anthropic.NewUserMessage(anthropic.NewTextBlock("Hello, Claude")),
302303 },
303 UserProfileID: anthropic.String("uprof_011CZkZCu8hGbp5mYRQgUmz9"),
304 UserProfileID: anthropic.String(profileID),
304305 })
305306 if err != nil {
306307 log.Fatal(err)
from line 321
320321 .model(Model.CLAUDE_OPUS_5_5)
321322 .maxTokens(1024L)
322323 .addUserMessage("Hello, Claude")
323 .userProfileId("uprof_011CZkZCu8hGbp5mYRQgUmz9")
324 .userProfileId(profileId)
324325 .build();
325326 var message = client.messages().create(params);
326327
from line 336
335336 maxTokens: 1024,
336337 messages: [['role' => 'user', 'content' => 'Hello, Claude']],
337338 model: Model::CLAUDE_OPUS_5_5,
338 userProfileID: 'uprof_011CZkZCu8hGbp5mYRQgUmz9',
339 userProfileID: $profileId,
339340 );
340341
341342 echo json_encode($message, JSON_PRETTY_PRINT), PHP_EOL;
from line 349
348349 model: Anthropic::Model::CLAUDE_OPUS_5_5,
349350 max_tokens: 1024,
350351 messages: [{ role: "user", content: "Hello, Claude" }],
351 user_profile_id: "uprof_011CZkZCu8hGbp5mYRQgUmz9"
352 user_profile_id: profile_id
352353 )
353354
354355 puts message
from line 391
3903912. Someone who can manage IAM in the AWS account or Google Cloud project runs a command that the portal provides.
3913923. The admin or owner completes the verification in the portal.
392393
393Programs that apply to a profile apply to an account's requests only after the account is linked and the portal shows it as **Linked**. Those programs include the ones an end customer's organization is approved for after the end customer [links the profile to that organization](https://platform.claude.com/docs/en/manage-claude/user-profiles-verification-portal).
394Programs that apply to a profile apply to an account's requests only after the account is linked and the portal shows it as **Linked**. Those programs include the ones an end customer's organization is approved for after the end customer [links the profile to that organization](https://platform.claude.com/docs/en/manage-claude/user-profiles-verification-portal) and, for Cyber Verification Program access levels, turns them on for the profile in the portal.
394395
395396Claude in Amazon Bedrock and Google Cloud check the format of the ID but don't look the profile up. They reject a malformed ID with a `400`. They accept any well-formed ID, so a successful response doesn't confirm that the ID matches a profile. A request with no ID goes through unattributed, and if it triggers an enforcement action, the action applies to your whole organization.
396397
from line 415
414415
415416<CodeGroup>
416417 ```bash cURL
417 curl https://api.anthropic.com/v1/user_profiles/uprof_011CZkZCu8hGbp5mYRQgUmz9 \
418 curl "https://api.anthropic.com/v1/user_profiles/$PROFILE_ID" \
418419 -H "x-api-key: $ANTHROPIC_API_KEY" \
419420 -H "anthropic-version: 2023-06-01" \
420421 -H "content-type: application/json" \
from line 427
426427
427428 ```bash CLI
428429 ant user-profiles update \
429 --user-profile-id uprof_011CZkZCu8hGbp5mYRQgUmz9 \
430 --user-profile-id "$PROFILE_ID" \
430431 --external-user-details '{account_status: suspended}' \
431432 --metadata '{trial_cohort: ""}'
432433 ```
from line 436
435436 client = anthropic.Anthropic()
436437
437438 profile = client.user_profiles.update(
438 "uprof_011CZkZCu8hGbp5mYRQgUmz9",
439 profile_id,
439440 external_user_details={"account_status": "suspended"},
440441 metadata={"trial_cohort": ""},
441442 )
from line 447
446447 ```typescript TypeScript
447448 const client = new Anthropic();
448449
449 const profile = await client.userProfiles.update("uprof_011CZkZCu8hGbp5mYRQgUmz9", {
450 const profile = await client.userProfiles.update(profileId, {
450451 external_user_details: { account_status: "suspended" },
451452 metadata: { trial_cohort: "" }
452453 });
from line 458
457458 ```csharp C#
458459 AnthropicClient client = new();
459460
460 var profile = await client.UserProfiles.Update("uprof_011CZkZCu8hGbp5mYRQgUmz9", new()
461 var profile = await client.UserProfiles.Update(profileId, new()
461462 {
462463 ExternalUserDetails = new()
463464 {
from line 475
474475
475476 profile, err := client.UserProfiles.Update(
476477 context.Background(),
477 "uprof_011CZkZCu8hGbp5mYRQgUmz9",
478 profileID,
478479 anthropic.UserProfileUpdateParams{
479480 ExternalUserDetails: anthropic.UserProfileExternalUserDetailsParams{
480481 AccountStatus: anthropic.UserProfileExternalUserAccountStatusSuspended,
from line 500
499500 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
500501
501502 var params = UserProfileUpdateParams.builder()
502 .userProfileId("uprof_011CZkZCu8hGbp5mYRQgUmz9")
503 .userProfileId(profileId)
503504 .externalUserDetails(UserProfileExternalUserDetailsParams.builder()
504505 .accountStatus(UserProfileExternalUserAccountStatus.SUSPENDED)
505506 .build())
from line 518
517518 $client = new Client();
518519
519520 $profile = $client->userProfiles->update(
520 'uprof_011CZkZCu8hGbp5mYRQgUmz9',
521 $profileId,
521522 externalUserDetails: ['accountStatus' => 'suspended'],
522523 metadata: ['trial_cohort' => ''],
523524 );
from line 530
529530 client = Anthropic::Client.new
530531
531532 profile = client.user_profiles.update(
532 "uprof_011CZkZCu8hGbp5mYRQgUmz9",
533 profile_id,
533534 external_user_details: { account_status: :suspended },
534535 metadata: { trial_cohort: "" }
535536 )
from line 541
540541
541542### Delete a profile
542543
543`DELETE /v1/user_profiles/{id}` permanently deletes a profile and everything you supplied for it, including `name`, `external_user_details`, and `metadata`. It doesn't remove the trust and safety records that Anthropic keeps about that profile ID.
544[`DELETE /v1/user_profiles/{id}`](https://platform.claude.com/docs/en/api/user_profiles/delete) permanently deletes a profile and everything you supplied for it, including `name`, `external_user_details`, and `metadata`. It doesn't remove the trust and safety records that Anthropic keeps about that profile ID.
544545
545546Delete a profile when an end customer closes their account or asks you to erase their data. Before you delete a profile, stop sending its ID on that end customer's requests. If the end customer stays with you after an erasure request, create a new profile and switch to its ID. Then delete the old one.
546547
547548<CodeGroup>
548549 ```bash cURL
549 curl -X DELETE https://api.anthropic.com/v1/user_profiles/uprof_011CZkZCu8hGbp5mYRQgUmz9 \
550 curl -X DELETE "https://api.anthropic.com/v1/user_profiles/$PROFILE_ID" \
550551 -H "x-api-key: $ANTHROPIC_API_KEY" \
551552 -H "anthropic-version: 2023-06-01"
552553 ```
553554
554555 ```bash CLI
555 ant user-profiles delete --user-profile-id uprof_011CZkZCu8hGbp5mYRQgUmz9
556 ant user-profiles delete --user-profile-id "$PROFILE_ID"
556557 ```
557558
558559 ```python Python
559560 client = anthropic.Anthropic()
560561
561 deleted = client.user_profiles.delete("uprof_011CZkZCu8hGbp5mYRQgUmz9")
562 deleted = client.user_profiles.delete(profile_id)
562563
563564 print(deleted.id)
564565 ```
from line 567
566567 ```typescript TypeScript
567568 const client = new Anthropic();
568569
569 const deleted = await client.userProfiles.delete("uprof_011CZkZCu8hGbp5mYRQgUmz9");
570 const deleted = await client.userProfiles.delete(profileId);
570571
571572 console.log(deleted.id);
572573 ```
from line 575
574575 ```csharp C#
575576 AnthropicClient client = new();
576577
577 var deleted = await client.UserProfiles.Delete("uprof_011CZkZCu8hGbp5mYRQgUmz9");
578 var deleted = await client.UserProfiles.Delete(profileId);
578579
579580 Console.WriteLine(deleted.ID);
580581 ```
from line 585
584585
585586 deleted, err := client.UserProfiles.Delete(
586587 context.Background(),
587 "uprof_011CZkZCu8hGbp5mYRQgUmz9",
588 profileID,
588589 anthropic.UserProfileDeleteParams{},
589590 )
590591 if err != nil {
from line 599
598599 void main() {
599600 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
600601
601 var deleted = client.userProfiles().delete("uprof_011CZkZCu8hGbp5mYRQgUmz9");
602 var deleted = client.userProfiles().delete(profileId);
602603
603604 IO.println(deleted.id());
604605 }
from line 608
607608 ```php PHP
608609 $client = new Client();
609610
610 $deleted = $client->userProfiles->delete('uprof_011CZkZCu8hGbp5mYRQgUmz9');
611 $deleted = $client->userProfiles->delete($profileId);
611612
612613 echo $deleted->id, PHP_EOL;
613614 ```
from line 616
615616 ```ruby Ruby
616617 client = Anthropic::Client.new
617618
618 deleted = client.user_profiles.delete("uprof_011CZkZCu8hGbp5mYRQgUmz9")
619 deleted = client.user_profiles.delete(profile_id)
619620
620621 puts deleted.id
621622 ```
from line 628
627628
628629## Next steps
629630
630The API reference has each endpoint's fields, types, and limits: [Create a profile](https://platform.claude.com/docs/en/api/user_profiles/create), [Retrieve a profile](https://platform.claude.com/docs/en/api/user_profiles/retrieve), [Update a profile](https://platform.claude.com/docs/en/api/user_profiles/update), and [List profiles](https://platform.claude.com/docs/en/api/user_profiles/list).
631The API reference has each endpoint's fields, types, and limits: [Create a profile](https://platform.claude.com/docs/en/api/user_profiles/create), [Retrieve a profile](https://platform.claude.com/docs/en/api/user_profiles/retrieve), [Update a profile](https://platform.claude.com/docs/en/api/user_profiles/update), [Delete a profile](https://platform.claude.com/docs/en/api/user_profiles/delete), and [List profiles](https://platform.claude.com/docs/en/api/user_profiles/list).
631632
632633If an end customer's program approvals should apply when they use Claude through your platform, see [Send an end customer a link to the Verification Portal](https://platform.claude.com/docs/en/manage-claude/user-profiles-verification-portal).
633634
manage-claude/user-profiles-verification-portal Changed · +3 / -3 lines
from line 12
1212
1313## Create the link
1414
15To create an enrollment link for a profile, call `POST /v1/user_profiles/{id}/action_urls` with the profile's ID in the path. In the request body, set `action.type` to `enroll_end_user`.
15To create an enrollment link for a profile, call [`POST /v1/user_profiles/{id}/action_urls`](https://platform.claude.com/docs/en/api/user_profiles/action_urls/create) with the profile's ID in the path. In the request body, set `action.type` to `enroll_end_user`.
1616
1717The call returns a `404` if creating enrollment links isn't enabled for your organization. That's the same status as for a profile ID it can't find, so check the ID first.
1818
from line 183
183183
184184The portal doesn't send the end customer back to your product, and Anthropic doesn't notify you. Tell the end customer in your own interface to return when they have finished.
185185
186Linking doesn't approve anything by itself. It connects the profile to the end customer's organization, so that programs the organization is approved for apply to requests that carry the profile's ID. The profile has no field that says it is linked.
186Linking doesn't approve anything by itself. It connects the profile to the end customer's organization, so that programs the organization is approved for apply to requests that carry the profile's ID, except Cyber Verification Program access levels, which the end customer turns on for each linked profile in the portal. The profile has no field that says it is linked.
187187
188188To see which programs apply to a profile, [retrieve the profile](https://platform.claude.com/docs/en/api/user_profiles/retrieve) and read `programs`. It has a key for each program, such as `cyber` and `efs`, and every profile has every key. Each key is one of the following:
189189
190190* `null`: Anthropic has no status to report for that program. Every key is `null` if Anthropic hasn't enabled programs for your organization.
191* An object: Its `status` is `active` when Anthropic has approved the end customer for the program, otherwise `pending` or `rejected`.
191* An object: Its `status` is `active` when the program applies to the profile, otherwise `pending` or `rejected`.
192192
193193The end customer can see the linked profile under **Linked accounts** in the portal.
194194
agents-and-tools/mcp-connector Changed · +1 / -1 lines
from line 319
319319| Property | Type | Required | Description |
320320| --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
321321| `type` | string | Yes | Currently only "url" is supported. |
322| `url` | string | Yes | The URL of the MCP server. Must start with https\://. |
322| `url` | string | Yes | The URL of the MCP server. Must start with `https://`. |
323323| `name` | string | Yes | A unique identifier for this MCP server. Must be referenced by exactly one MCPToolset in the `tools` array. |
324324| `authorization_token` | string | No | OAuth authorization token if required by the MCP server. See [Authentication](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector#authentication) for how to obtain one, or the [MCP specification](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization) for protocol details. |
325325
build-with-claude/claude-in-microsoft-foundry Changed · +1 / -1 lines
from line 212
212212 ```
213213
214214 ```bash CLI
215 # ant reads ANTHROPIC_API_KEY and sends it as x-api-key, which Foundry accepts
215 # ant reads ANTHROPIC_API_KEY
216216 export ANTHROPIC_API_KEY="YOUR_AZURE_API_KEY"
217217
218218 ant messages create \
manage-claude/cmek-aws-kms Changed · +2 / -0 lines
from line 150
150150 3. Attach the key.
151151
152152 **Finding your compartment ID:** In the Claude Console, go to the [Data retention](https://platform.claude.com/settings/privacy) page (`platform.claude.com/settings/privacy`). Select the workspace from the dropdown menu at the top of the page. The ID is under **Encryption key**, in the **Compartment ID** field. You can also read the `compartment_id` field returned by the [Get Workspace](https://platform.claude.com/docs/en/api/organization/workspaces/retrieve) endpoint.
153
154 On Claude Enterprise, the organization has one compartment ID. Copy it from your key under **Encryption keys** in [claude.ai > Organization settings > Data and privacy](https://claude.ai/admin-settings/data-privacy-controls).
153155</Note>
154156
155157### Create the key
release-notes/overview Changed · +1 / -2 lines
from line 28
2828### October 14, 2026
2929
3030* We've launched [OpenTelemetry export](https://platform.claude.com/docs/en/manage-claude/opentelemetry) in beta, so you can trace Messages API requests and Claude Managed Agents sessions in your observability backend. The Claude SDK emits spans in Python, TypeScript, C#, Go, Java, PHP, and Ruby. To get spans from the API, [add an OpenTelemetry destination](https://platform.claude.com/docs/en/manage-claude/opentelemetry/api#add-a-destination) in the Claude Console.
31
32- Claude Managed Agents [scheduled deployments](https://platform.claude.com/docs/en/managed-agents/scheduled-deployments) are now available on [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#claude-managed-agents).
31* Claude Managed Agents [scheduled deployments](https://platform.claude.com/docs/en/managed-agents/scheduled-deployments) are now available on [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#claude-managed-agents).
3332
3433### October 9, 2026
3534