Claude Platform Docs

创建插件版本

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

通过上传新版本的文件为组织所有的插件添加一个版本;除非该插件的提供版本已被固定,否则新版本将成为向成员提供的版本。

上传格式与创建插件时相同,均为 multipart/form-data:包括该版本的文件(files,每个部分以 files[] 发送)以及可选的 release_notes。上传的清单中的 name 必须与插件的 name 相同。返回已存储的版本;请重新读取插件以查看其提供的是哪个版本。

只有位于 manual 市场中的插件才接受上传;从代码仓库同步的插件从仓库获取其版本。当插件位于组织的库市场中时,如果某个版本添加的技能与组织技能(管理员在 claude.ai 中为整个组织上传的技能)同名,该版本会被拒绝并返回 409:error_code 为 skill_name_taken,该名称位于 details.skill_name 中。返回 503 且 error_code 为 registration_pending 表示该版本已存储但尚不可用;之后在该插件上再次创建版本即可完成该操作。

有关完整示例,请参阅 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.

创建插件版本
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"
}