Versions changedapi/beta/organization/plugins/versions
Nearest release: v2.1.286, published 6 hours before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
# Versions ## Create Plugin Version ### Path parameters ### Headers ### Body parameters (form-data) ### Returns ### Example #### Response (200) ## List Plugin Versions ### Path parameters ### Query parameters ### Headers ### Returns ### Example #### Response (200) ## Get Plugin Version ### Path parameters ### Query parameters ### Headers ### Returns ### Example #### Response (200) ## Download Plugin Version Archive ### Path parameters ### Query parameters ### Headers ### Example ## Domain types ### Beta Plugin Version
The whole hunk
1292 lines, new pageA whole new page. There's nothing to diff it against, so here is what it says.
---
title: Versions
url: https://platform.claude.com/docs/en/api/beta/organization/plugins/versions
---
# Versions
## Create Plugin Version
**POST** `/v1/organizations/plugins/{plugin_id}/versions`
Add a version to an organization-owned Plugin by uploading the new version's
files; it becomes the version served to members unless the Plugin's served version
has been pinned.
The upload is the same `multipart/form-data` as creating a Plugin: the version's
files (`files`, each part sent as `files[]`) and optional `release_notes`. The uploaded manifest's `name`
must equal the Plugin's `name`. Returns the stored version; read the Plugin back to
see which version it serves.
Only a Plugin in a `manual` marketplace takes uploads; a Plugin synchronized from
a repository gets its versions from the repository. When the Plugin is in the
organization's library marketplace, a version that adds a skill with the name of an
organization skill (a skill an administrator uploaded for the whole organization in
claude.ai) is refused with a 409: `error_code` `skill_name_taken`, with that name in
`details.skill_name`. A 503 with `error_code`
`registration_pending` means the version was stored but is not yet usable; a later
version create on the Plugin completes it.
For a worked example, see [Create a version](/docs/en/manage-claude/plugins-api#create-a-version)
in the Plugins API guide.
**Accepted credentials:** an Admin API key with the `write:plugins` scope.
Every request must include the beta header `anthropic-beta: ce-plugins-2026-09-01`. A request without it returns `404`, exactly as if the endpoint did not exist. The Plugins API is in beta and is available to Claude Enterprise organizations only. It is not available to Claude Platform (Claude Console) organizations, or to organizations with HIPAA readiness enabled.
### Path parameters
- `plugin_id: string`
ID of the Plugin (prefixed `plugin_`).
### Headers
- `"anthropic-beta": optional array of AnthropicBeta`
This endpoint is in beta: requests must send `ce-plugins-2026-09-01` in this header.
- `string`
- `"message-batches-2024-09-24"`
- `"prompt-caching-2024-07-31"`
- `"computer-use-2024-10-22"`
- `"computer-use-2025-01-24"`
- `"pdfs-2024-09-25"`
- `"token-counting-2024-11-01"`
- `"token-efficient-tools-2025-02-19"`
- `"output-128k-2025-02-19"`
- `"files-api-2025-04-14"`
- `"mcp-client-2025-04-04"`
- `"mcp-client-2025-11-20"`
- `"dev-full-thinking-2025-05-14"`
- `"interleaved-thinking-2025-05-14"`
- `"code-execution-2025-05-22"`
- `"extended-cache-ttl-2025-04-11"`
- `"context-1m-2025-08-07"`
- `"context-management-2025-06-27"`
- `"model-context-window-exceeded-2025-08-26"`
- `"skills-2025-10-02"`
- `"fast-mode-2026-02-01"`
- `"output-300k-2026-03-24"`
- `"user-profiles-2026-03-24"`
- `"user-profiles-2026-08-18"`
- `"user-profiles-2026-09-04"`
- `"advisor-tool-2026-03-01"`
- `"managed-agents-2026-04-01"`
- `"cache-diagnosis-2026-04-07"`
- `"dreaming-2026-04-21"`
- `"thinking-token-count-2026-05-13"`
- `"server-side-fallback-2026-06-01"`
- `"server-side-fallback-2026-07-01"`
- `"fallback-credit-2026-06-01"`
- `"fallback-credit-2026-07-01"`
- `"agent-memory-2026-07-22"`
- `"mid-conversation-tool-changes-2026-07-01"`
- `"compact-2026-01-12"`
- `"computer-use-2025-11-24"`
- `"mcp-tunnels-2026-06-22"`
- `"structured-outputs-2025-11-13"`
- `"task-budgets-2026-03-13"`
- `"thinking-display-updates-2026-08-18"`
- `"ce-user-management-2026-07-13"`
- `"mid-conversation-output-config-2026-07-01"`
- `"thinking-binding-controls-2026-08-01"`
- `"mid-conversation-system-clear-at-2026-08-21"`
- `"compact-2026-09-04"`
- `"inline-tools-2026-09-15"`
- `"mcp-client-2026-09-15"`
- `"ce-plugins-2026-09-01"`
### Body parameters (form-data)
- `files: array of string`
The version's files: one part per file, the part's filename being the file's path within the Plugin (for example `skills/review-pr/SKILL.md`), or a single `.zip` or `.plugin` archive holding them all. On the wire each part is named `files[]`, and a part named plain `files` is not read; with cURL, `-F 'files[][email protected];filename=skills/review-pr/SKILL.md'`. The files must include the manifest, `.claude-plugin/plugin.json`.
- `release_notes: optional string`
Release notes stored with the version and shown in its version history in claude.ai; up to 5,000 characters.
maxLength: 5000
### Returns
- `BetaPluginVersion object`
- `type: "plugin_version"`
Always `plugin_version`.
default: plugin_version
- `id: string`
The version's ID.
- `components: array of BetaPluginComponent or null`
What the version contains; null when not enumerated.
- `type: "agent" or "cli" or "command" or 3 more`
The kind of component.
- `"agent"`
- `"cli"`
- `"command"`
- `"hook"`
- `"mcp_server"`
- `"skill"`
- `description: string or null`
What the component declares about itself; always null for MCP servers, hooks, and CLIs.
- `name: string`
The component's name: a skill's, command's or agent's name, an MCP server's key in the manifest, the event a hook runs on, or a CLI's executable.
- `content_scan: BetaPluginContentScan or null`
This version's content scan; null when it has not been scanned.
- `assessment: "fail" or "pass" or "unknown" or "warn" or null`
The scan's verdict; set only when `status` is `completed`.
- `"fail"`
- `"pass"`
- `"unknown"`
- `"warn"`
- `reason: string or null`
The primary mechanism behind a `warn` or `fail`, such as `credential-exposure` or `guardrail-tampering`; a mechanism this API does not yet name reads as `other`. Null on a `pass`, whenever `assessment` is null, and when no mechanism is reported for the verdict.
- `status: "completed" or "errored" or "processing"`
`processing` while a scan runs, `completed` when it ran to completion, `errored` when it could not run or its outcome cannot be read.
- `"completed"`
- `"errored"`
- `"processing"`
- `created_at: string`
RFC 3339.
format: date-time
- `created_by: BetaPluginUserActor or BetaPluginAPIActor or null`
Who uploaded this version; null when not recorded.
- `BetaPluginUserActor object`
- `type: "user_actor"`
A member of the organization.
default: user_actor
- `email_address: string or null`
The member's email address; may be null, for example when they are no longer a member of the organization.
- `user_id: string`
The member's User ID.
- `BetaPluginAPIActor object`
- `type: "api_actor"`
An Admin API key, in the same form the Compliance API activity feed uses for it.
default: api_actor
- `api_key_id: string`
The key's ID.
- `description: string or null`
The manifest's description; null when it declares none.
- `display_name: string or null`
The manifest's display name; null when it declares none.
- `manifest_version: string or null`
The version string the manifest declares; null when it declares none.
- `plugin_id: string`
The Plugin's ID.
- `reach: "contained" or "privileged" or "remote" or null`
How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
- `"contained"`
- `"privileged"`
- `"remote"`
- `release_notes: string or null`
As supplied with the upload; null when none were supplied.
Cut at 300 lines. The page has the rest.
No line in this hunk matches that.