Claude Platform Docs

플러그인 마켓플레이스 아카이브 검증

$client->beta->organization->pluginMarketplaces->validateArchive(FileParam | string archive, ?list<AnthropicBeta> betas): PluginMarketplaceValidationReport
POST/v1/organizations/plugin_marketplaces/validate_archive
Requires anthropic-beta: ce-plugins-2026-09-01. How to send beta headers

마켓플레이스 디렉터리의 .zip으로 업로드된 플러그인 마켓플레이스가 claude.ai로 동기화될 수 있는지 연결하거나 저장하지 않고 확인합니다.

대신 공개 GitHub 리포지토리를 확인하려면 플러그인 마켓플레이스 리포지토리 검증을 사용하세요.

보고서는 marketplace.json의 형식이 올바른지, 동기화 시 어떤 플러그인이 어떤 이유로 건너뛰어지는지, 어떤 플러그인이 일부 파일이 제외된 채 부분적으로만 동기화되는지를 알려 줍니다. 마켓플레이스로 읽을 수 없는 아카이브도 요청이 거부되지 않고 보고됩니다. 응답은 valid: false인 보고서입니다. 마켓플레이스 외부의 플러그인 소스는 GitHub에서 익명으로 가져오므로 비공개 소스는 찾을 수 없음 또는 GitHub 로그인이 필요함으로 보고됩니다. 다른 호스트의 소스는 여기서 가져오지 않으며, 보고서에는 마켓플레이스가 실제로 동기화될 때 확인된다는 내용이 표시됩니다.

Compliance API 활동 피드에는 아무것도 기록되지 않습니다.

실제 예시는 Plugins API 가이드의 마켓플레이스 콘텐츠 검증을 참조하세요.

허용되는 자격 증명: read:plugins 또는 write:plugins 범위가 있는 Admin API 키. read:org_audit 및 read:compliance_org_data로는 사용할 수 없습니다.

모든 요청에는 베타 헤더 anthropic-beta: ce-plugins-2026-09-01을 포함해야 합니다. 이 헤더가 없는 요청은 엔드포인트가 존재하지 않는 것과 똑같이 404를 반환합니다. Plugins API는 베타 버전이며 Claude Enterprise 조직에서만 사용할 수 있습니다. Claude Platform(Claude Console) 조직이나 HIPAA 준비가 활성화된 조직에서는 사용할 수 없습니다.

Parameters
archive: FileParam | string

A .zip of the marketplace directory (its contents at the root, or wrapped in one folder as a Git host's download produces), sent as a file part with a filename; DEFLATE- or STORE-compressed, at most 32 MB. A part sent without a filename, a second archive part, or any other form field is a 400; a larger archive is a 413.

betas?: optional list<AnthropicBeta>⁠Header parameter

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

Returns
class PluginMarketplaceValidationReport { $type = 'plugin_marketplace_validation_report'; $commitSha; $manifestError; /* 6 more */ }
"plugin_marketplace_validation_report" type

Always plugin_marketplace_validation_report.

?string commitSha

The full SHA of the commit that was validated: for a repository, the commit that was read; for an uploaded archive, the commit recorded in the archive's comment (as a Git host's download writes it; not verified), else null.

?string manifestError

Set when nothing could be validated: the repository or archive could not be read, or marketplace.json is missing, malformed or over a limit. Null otherwise.

?string manifestErrorCode

A stable identifier for manifest_error; null when that is.

One entry per plugin a synchronization would skip entirely, keyed by the plugin's name in marketplace.json.

One entry per plugin that would synchronize with some of its contents left out, keyed by the plugin's name in marketplace.json.

?string ref

For a repository, the branch that was read by name: the one requested, or else the branch a synchronization of this repository is set to read. Null when no branch is named or set and the repository's default branch was read, for a request by commit SHA, and for an uploaded archive.

int totalPluginCount

How many plugins marketplace.json declares; 0 when it could not be read.

bool valid

True when marketplace.json is well-formed and no plugin would be skipped; warnings never make it false.

플러그인 마켓플레이스 아카이브 검증
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;
use Anthropic\Core\FileParam;

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaPluginMarketplaceValidationReport = $client
  ->beta
  ->organization
  ->pluginMarketplaces
  ->validateArchive(
  archive: FileParam::fromString('Example data', filename: uniqid('file-upload-', true)),
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaPluginMarketplaceValidationReport);
Returns Examples
Response 200
{
  "commit_sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
  "manifest_error": "manifest_error",
  "manifest_error_code": "marketplace_sync_manifest_not_found",
  "plugin_errors": [
    {
      "error": "error",
      "error_code": "marketplace_sync_plugin_missing_manifest",
      "name": "name"
    }
  ],
  "plugin_warnings": [
    {
      "name": "name",
      "warnings": [
        {
          "error_code": "marketplace_sync_zipball_symlink_dangling",
          "message": "message"
        }
      ]
    }
  ],
  "ref": "main",
  "total_plugin_count": 0,
  "type": "plugin_marketplace_validation_report",
  "valid": false
}