---
title: "Add marketplace plugin"
method: POST
path: "/v1/marketplaces/{marketplaceId}/plugins"
tags: ["Marketplaces"]
---

# Add marketplace plugin

`POST /v1/marketplaces/{marketplaceId}/plugins`

Adds a plugin to a marketplace.

## Path parameters

- `marketplaceId` string, typeid, required

## Request body

- object
  - `pluginId` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
  - `membershipSource` 'manual' | 'connector' | 'api' | 'system'

## Response `201`

Marketplace membership created successfully.

- PluginArchMarketplacePluginMutationResponse
  - `ok` true, required
  - `item` PluginArchMarketplacePluginMembership, required
    - `id` string, typeid, required — Den TypeID with 'mkp_' prefix and a 26-character base32 suffix.
    - `marketplaceId` string, typeid, required — Den TypeID with 'mkt_' prefix and a 26-character base32 suffix.
    - `pluginId` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
    - `membershipSource` 'manual' | 'connector' | 'api' | 'system', required
    - `createdByOrgMembershipId` string, typeid, nullable, required — Den TypeID with 'om_' prefix and a 26-character base32 suffix.
    - `createdAt` string, date-time, required
    - `removedAt` string, date-time, nullable, required
    - `plugin` PluginArchPlugin
      - `id` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
      - `organizationId` string, typeid, required — Den TypeID with 'org_' prefix and a 26-character base32 suffix.
      - `name` string, required
      - `description` string, nullable, required
      - `sourceRepositoryUrl` string, nullable, required
      - `status` 'active' | 'inactive' | 'deleted' | 'archived', required
      - `createdByOrgMembershipId` string, typeid, required — Den TypeID with 'om_' prefix and a 26-character base32 suffix.
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, nullable, required
      - `memberCount` integer
      - `marketplaces` object[]
        - `id` string, typeid, required — Den TypeID with 'mkt_' prefix and a 26-character base32 suffix.
        - `name` string, required
      - `extension` PluginArchExtensionProjection
        - `id` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
        - `name` string, required
        - `description` string, nullable, required
        - `sourceFormat` 'openwork-builtin' | 'openwork-extension-manifest' | 'claude-plugin' | 'opencode-plugin' | 'mcp-directory' | 'manual', required
        - `manifest` OpenWorkExtensionManifest, required
          - `schemaVersion` 1, required
          - `id` string, required
          - `name` string, required
          - `description` string, required
          - `source` object, required
            - `format` 'openwork-builtin' | 'openwork-extension-manifest' | 'claude-plugin' | 'opencode-plugin' | 'mcp-directory' | 'manual', required
            - `trusted` boolean, required
            - `origin` 'builtin' | 'den' | 'workspace' | 'local'
            - `reference` string
          - `resources` object[], required
          - `contributions` object[]
          - `setup` object
          - `lifecycle` object

## Other responses

- `400` — The marketplace membership request was invalid.
- `401` — The caller must be signed in to manage marketplace memberships.
- `403` — The caller lacks permission to edit this marketplace.
- `404` — The marketplace or plugin could not be found.

---

[API](https://skmtc.net/openworklabs/apis/den-api.md) · [All operations](https://skmtc.net/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openworklabs/den-api/revisions/54cdbd4ecffa/schema)
