Claude Platform Docs

建立 Plugin 版本

$ ant beta:organization:plugins:versions create
POST/v1/organizations/plugins/{plugin_id}/versions

透過上傳新版本的檔案,為組織擁有的 Plugin 新增版本;除非該 Plugin 所提供的版本已被釘選,否則新版本會成為向成員提供的版本。

上傳格式與建立 Plugin 時相同,皆為 multipart/form-data:包含該版本的檔案(files,每個部分以 files[] 傳送)以及選用的 release_notes。上傳的資訊清單中的 name 必須與 Plugin 的 name 相同。回應會傳回已儲存的版本;請重新讀取 Plugin 以查看其所提供的版本。

只有位於 manual 市集中的 Plugin 可接受上傳;從儲存庫同步的 Plugin 會從儲存庫取得其版本。當 Plugin 位於組織的程式庫市集中時,若某個版本新增的技能名稱與組織技能(管理員在 claude.ai 中為整個組織上傳的技能)相同,該版本會以 409 拒絕:error_code skill_name_taken,該名稱位於 details.skill_name。若傳回 503 且 error_code 為 registration_pending,表示該版本已儲存但尚無法使用;之後在該 Plugin 上建立版本時會完成此程序。

如需實際範例,請參閱 Plugins API 指南中的建立版本。

接受的憑證:具有 write:plugins 範圍的 Admin API 金鑰。

每個請求都必須包含 beta 標頭 anthropic-beta: ce-plugins-2026-09-01。缺少此標頭的請求會傳回 404,與端點不存在時完全相同。Plugins API 目前為 beta 版,僅供 Claude Enterprise 組織使用。Claude Platform(Claude Console)組織或已啟用 HIPAA 就緒功能的組織無法使用。

Parameters
--plugin-id: string⁠Path parameter

ID of the Plugin (prefixed plugin_).

--file: 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[]=@SKILL.md;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.

maxLength5000
--beta: optional array of AnthropicBeta⁠Header parameter

This endpoint is in beta: requests must send ce-plugins-2026-09-01 in this header.

Returns
beta_plugin_version: object{ type: "plugin_version", id, components, 9 more }
type: "plugin_version"

Always plugin_version.

id: string

The version's ID.

components: array of BetaPluginComponent { type, description, name }

What the version contains; null when not enumerated.

type: "agent" or "cli" or "command" or 3 more

The kind of component.

One of the following:
"agent"
"cli"
"command"
"hook"
"mcp_server"
"skill"
description: string

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: object{ assessment, reason, status }

This version's content scan; null when it has not been scanned.

assessment: "fail" or "pass" or "unknown" or "warn"

The scan's verdict; set only when status is completed.

One of the following:
"fail"
"pass"
"unknown"
"warn"
reason: string

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.

One of the following:
"completed"
"errored"
"processing"
created_at: string

RFC 3339.

formatdate-time

Who uploaded this version; null when not recorded.

One of the following:
beta_plugin_user_actor: object{ type: "user_actor", email_address, user_id }
type: "user_actor"

A member of the organization.

email_address: string

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.

beta_plugin_api_actor: object{ type: "api_actor", api_key_id }
type: "api_actor"

An Admin API key, in the same form the Compliance API activity feed uses for it.

api_key_id: string

The key's ID.

description: string

The manifest's description; null when it declares none.

display_name: string

The manifest's display name; null when it declares none.

manifest_version: string

The manifest's version, normalized for display: one leading v or V is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, ., +, and -; otherwise null. For example, "v1.4.0" is returned as "1.4.0", and "latest" as null. For a synchronized plugin, the version of its marketplace.json entry can take the place of the manifest's version. It is also null for a version stored before claude.ai began recording this field (August 2026).

plugin_id: string

The Plugin's ID.

reach: "contained" or "privileged" or "remote"

How far the version reaches: remote, privileged, contained, or null, as defined on the Plugin's reach.

One of the following:
"contained"
"privileged"
"remote"
release_notes: string

As supplied with the upload; null when none were supplied.

建立 Plugin 版本
ant beta:organization:plugins:versions create \
  --api-key my-anthropic-api-key \
  --plugin-id plugin_id \
  --file 'Example data'
Returns Examples
Response 200
{
  "id": "pluginver_01KaZmQpRsTuVwXyZ2b4c6d8",
  "components": [
    {
      "description": "description",
      "name": "review-pr",
      "type": "skill"
    }
  ],
  "content_scan": {
    "assessment": "warn",
    "reason": "credential-exposure",
    "status": "completed"
  },
  "created_at": "2026-03-14T09:26:53.589793Z",
  "created_by": {
    "email_address": "user@example.com",
    "type": "user_actor",
    "user_id": "user_01WCz1FkmYMm4gnmykNKUu3Q"
  },
  "description": "Reviews pull requests against your team's conventions.",
  "display_name": "Code Review Helper",
  "manifest_version": "1.2.0",
  "plugin_id": "plugin_01JyHfbRkZvD1gW7oTqXc3Ne",
  "reach": "contained",
  "release_notes": "Adds a review checklist for database migrations.",
  "type": "plugin_version"
}