Claude Platform Docs

创建插件

$ ant beta:organization:plugins create
POST/v1/organizations/plugins

通过上传版本文件,创建组织拥有的插件及其第一个版本。

上传采用 multipart/form-data 格式:包含该版本的文件(files,每个部分以 files[] 发送),以及可选的 marketplace_id 和 release_notes。清单中的 name 会成为插件的 name,display_name、description 和 manifest_version 也来自清单。

name 可以包含小写字母(任何字母表)、数字和连字符,最多 64 个字符。大写字母、空格、下划线和其他标点符号会被拒绝。

name 在市场内必须唯一:已被占用的名称会返回 409,error_code 为 plugin_name_taken,并且当该名称由某个插件持有时,会在 details.plugin_id 中返回该插件的 ID。如果要进入组织库市场的插件中有某个技能与组织技能(管理员在 claude.ai 中为整个组织上传的技能)同名,也会被拒绝并返回 409:error_code 为 skill_name_taken,该名称位于 details.skill_name 中;请重命名该技能,或在 claude.ai 中移除该组织技能。返回 503 且 error_code 为 registration_pending 表示插件及其版本已存储(其 ID 位于 details 中),但尚无法在 claude.ai 中使用:请勿重试创建操作(重试会返回 plugin_name_taken);而应在已存储的插件上创建一个版本,这样即可完成该插件。

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

--marketplace-id: optional string

ID of the organization-owned plugin marketplace to create the Plugin in (prefixed marketplace_). It must be a manual marketplace, one whose Plugins are uploaded rather than synchronized from a repository. When omitted, the Plugin is created in the organization's library marketplace, an organization-owned manual marketplace created on first use.

--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: object{ type: "plugin", id, components, 16 more }
type: "plugin"

Always plugin.

id: string

The Plugin's ID.

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

What the served 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 }

The served 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 created the Plugin; null when no creator is 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 served version's description.

display_name: string

The served version's display name.

latest_version_id: string

The newest version.

manifest_version: string

The served version's manifest version, normalized for display, or null (the Plugin Version's manifest_version says how and when).

marketplace_id: string

The ID of the plugin marketplace the Plugin lives in.

name: string

Lowercase identifier, unique within its plugin marketplace. Fixed for an organization-owned Plugin's lifetime; a member-owned Plugin's changes when its owner renames it in claude.ai, while its id stays the same.

organization_installation_preference: "auto_install" or "available" or "not_available" or "required"

Organization-owned Plugin: the organization-wide installation setting every member gets unless an RBAC Group they belong to holds its own — the Plugin's own setting, or its plugin marketplace's default. Null for a member-owned Plugin, which has shares instead. One of required, auto_install, available, not_available; a value this API does not yet name is returned as stored.

One of the following:
"auto_install"
"available"
"not_available"
"required"
organization_installation_preference_inherited: boolean

Organization-owned Plugin: true while it has no organization-wide setting of its own and organization_installation_preference is its plugin marketplace's default. Null for a member-owned Plugin.

Who owns the Plugin: the organization, or the member whose personal plugin marketplace it lives in.

One of the following:
beta_plugin_owner_organization: object{ type: "organization" }
type: "organization"

The Plugin lives in a plugin marketplace the organization owns.

beta_plugin_owner_user: object{ type: "user", user_id }
type: "user"

The Plugin lives in one member's personal plugin marketplace.

user_id: string

The member's User ID.

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

How far the served version reaches, or null if it is not classified.

remote means it declares an MCP server or a CLI. privileged means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (allowed-tools with any value other than an empty one or one that names only AskUserQuestion, TodoWrite, and ToolSearch). Otherwise it is contained.

If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is null or privileged (or remote, if it declares an MCP server or a CLI), not contained. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be null, or contained where the same files stored today would be privileged or null.

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

The version claude.ai serves to members.

served_version_pinned: boolean

False while the served version follows each new version; true once it has been pinned to one.

updated_at: string

RFC 3339. Moves on a new version and on a served-version change; a change to the Plugin's installation settings or shares does not move it.

formatdate-time
创建插件
ant beta:organization:plugins create \
  --api-key my-anthropic-api-key \
  --file 'Example data'
Returns Examples
Response 200
{
  "id": "plugin_01JyHfbRkZvD1gW7oTqXc3Ne",
  "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",
  "latest_version_id": "pluginver_01KaZmQpRsTuVwXyZ2b4c6d8",
  "manifest_version": "1.2.0",
  "marketplace_id": "marketplace_01HxQ3v9KpZ2mTn8RwLc4Ys7",
  "name": "code-review-helper",
  "organization_installation_preference": "available",
  "organization_installation_preference_inherited": true,
  "owner": {
    "type": "organization"
  },
  "reach": "contained",
  "served_version_id": "pluginver_01K9wPcHd4Rm2Tx8Vq6Ln3Sb",
  "served_version_pinned": true,
  "type": "plugin",
  "updated_at": "2026-03-14T09:26:53.589793Z"
}