APIClaw Claude Code Marketplace API

The Claude Code Marketplace API from APIClaw — 6 operation(s) for claude code marketplace.

Operations 9

GET /public/skill_hub Public Skill Hub #
GET /claude-code/marketplace.json Get Marketplace #
POST /claude-code/plugins Register Plugin #
GET /claude-code/plugins List Plugins #
GET /claude-code/plugins/{plugin_name} Get Plugin #
PUT /claude-code/plugins/{plugin_name} Update Plugin #
DELETE /claude-code/plugins/{plugin_name} Delete Plugin #
POST /claude-code/plugins/{plugin_name}/enable Enable Plugin #
POST /claude-code/plugins/{plugin_name}/disable Disable Plugin #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apiclaw:apiclaw-claude-code-marketplace-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

apiclaw-claude-code-marketplace-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LiteLLM Claude Code Marketplace API
  description: 'Proxy Server to call 100+ LLMs in the OpenAI format. **Customize Swagger Docs**


    👉 ```LiteLLM Admin Panel on /ui```. Create, Edit Keys with SSO. Having issues? Try ```Fallback Login```


    💸 ```LiteLLM Model Cost Map```.


    🔎 ```LiteLLM Model Hub```. See available models on the proxy. **Docs**'
  version: 1.102.1
tags:
- name: Claude Code Marketplace
paths:
  /public/skill_hub:
    get:
      tags:
      - Claude Code Marketplace
      summary: Public Skill Hub
      description: Return enabled (public) Claude Code skills — no auth required.
      operationId: public_skill_hub_public_skill_hub_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /claude-code/marketplace.json:
    get:
      tags:
      - Claude Code Marketplace
      summary: Get Marketplace
      description: 'Serve marketplace.json for Claude Code plugin discovery.


        This endpoint is accessed by Claude Code CLI when users run:

        - claude plugin marketplace add

        - claude plugin install @


        Without `key` the catalog holds the enabled (public) plugins. With `?key=sk-...`

        the key is authenticated and the catalog also holds the disabled plugins granted

        to it through `object_permission.skills` on the key or its team.


        Returns:

        Marketplace catalog with list of available plugins and their git sources.


        Example:

        ```bash

        claude plugin marketplace add http://localhost:4000/claude-code/marketplace.json

        claude plugin marketplace add "http://localhost:4000/claude-code/marketplace.json?key=sk-..."

        claude plugin install my-plugin@litellm

        ```'
      operationId: get_marketplace_claude_code_marketplace_json_get
      parameters:
      - name: key
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /claude-code/plugins:
    post:
      tags:
      - Claude Code Marketplace
      summary: Register Plugin
      description: 'Register a new plugin in the LiteLLM marketplace.


        LiteLLM acts as a registry/discovery layer. Plugins are hosted on

        GitHub/GitLab/Bitbucket or as a zip archive on any https host (e.g. S3).

        Claude Code clones the git source or downloads the archive when users install.


        This endpoint is create-only and never overwrites. If a plugin with

        the same name already exists it returns 409 Conflict; use

        PUT /claude-code/plugins/{plugin_name} to update an existing plugin.


        Requires a proxy admin API key.


        Parameters:

        - name: Plugin name (kebab-case)

        - source: Plugin source reference (github, url, git-subdir, or archive format)

        - version: Semantic version (optional)

        - description: Plugin description (optional)

        - author: Author information (optional)

        - homepage: Plugin homepage URL (optional)

        - keywords: Search keywords (optional)

        - category: Plugin category (optional)


        Returns:

        Registration status (action is always "created") and plugin information.


        Example:

        ```bash

        curl -X POST http://localhost:4000/claude-code/plugins \

        -H "Authorization: Bearer sk-..." \

        -H "Content-Type: application/json" \

        -d ''{

        "name": "my-plugin",

        "source": {"source": "github", "repo": "org/my-plugin"},

        "version": "1.0.0",

        "description": "My awesome plugin"

        }''

        ```'
      operationId: register_plugin_claude_code_plugins_post
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterPluginRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterPluginResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Claude Code Marketplace
      summary: List Plugins
      description: 'List all plugins in the marketplace.


        Parameters:

        - enabled_only: If true, only return enabled plugins


        Returns:

        List of plugins with their metadata.'
      operationId: list_plugins_claude_code_plugins_get
      security:
      - APIKeyHeader: []
      parameters:
      - name: enabled_only
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Enabled Only
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPluginsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /claude-code/plugins/{plugin_name}:
    get:
      tags:
      - Claude Code Marketplace
      summary: Get Plugin
      description: 'Get details of a specific plugin.


        Parameters:

        - plugin_name: The name of the plugin


        Returns:

        Plugin details including source and metadata.'
      operationId: get_plugin_claude_code_plugins__plugin_name__get
      security:
      - APIKeyHeader: []
      parameters:
      - name: plugin_name
        in: path
        required: true
        schema:
          type: string
          title: Plugin Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Claude Code Marketplace
      summary: Update Plugin
      description: 'Update an existing plugin in the LiteLLM marketplace.


        The plugin is identified by its name in the path, which is the resource

        identity and cannot be changed here. This is a full replace, not a merge:

        the manifest is rebuilt from the request body, so any optional field left

        out is reset to its default (e.g. an omitted version is cleared, not kept).

        Send the full desired state.


        Returns 404 if no plugin with the given name exists; use

        POST /claude-code/plugins to create a new plugin.


        Requires a proxy admin API key.


        Parameters:

        - plugin_name: Name of the plugin to update (path parameter)

        - source: Plugin source reference (github, url, git-subdir, or archive format)

        - version: Semantic version (optional)

        - description: Plugin description (optional)

        - author: Author information (optional)

        - homepage: Plugin homepage URL (optional)

        - keywords: Search keywords (optional)

        - category: Plugin category (optional)


        Returns:

        Update status (action is always "updated") and plugin information.


        Example:

        ```bash

        curl -X PUT http://localhost:4000/claude-code/plugins/my-plugin \

        -H "Authorization: Bearer sk-..." \

        -H "Content-Type: application/json" \

        -d ''{

        "source": {"source": "github", "repo": "org/my-plugin"},

        "version": "2.0.0",

        "description": "My awesome plugin"

        }''

        ```'
      operationId: update_plugin_claude_code_plugins__plugin_name__put
      security:
      - APIKeyHeader: []
      parameters:
      - name: plugin_name
        in: path
        required: true
        schema:
          type: string
          title: Plugin Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePluginRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterPluginResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Claude Code Marketplace
      summary: Delete Plugin
      description: 'Delete a plugin from the marketplace.


        Requires a proxy admin API key.


        Parameters:

        - plugin_name: The name of the plugin to delete'
      operationId: delete_plugin_claude_code_plugins__plugin_name__delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: plugin_name
        in: path
        required: true
        schema:
          type: string
          title: Plugin Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /claude-code/plugins/{plugin_name}/enable:
    post:
      tags:
      - Claude Code Marketplace
      summary: Enable Plugin
      description: 'Enable a disabled plugin.


        Requires a proxy admin API key.


        Parameters:

        - plugin_name: The name of the plugin to enable'
      operationId: enable_plugin_claude_code_plugins__plugin_name__enable_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: plugin_name
        in: path
        required: true
        schema:
          type: string
          title: Plugin Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /claude-code/plugins/{plugin_name}/disable:
    post:
      tags:
      - Claude Code Marketplace
      summary: Disable Plugin
      description: 'Disable a plugin without deleting it.


        Requires a proxy admin API key.


        Parameters:

        - plugin_name: The name of the plugin to disable'
      operationId: disable_plugin_claude_code_plugins__plugin_name__disable_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: plugin_name
        in: path
        required: true
        schema:
          type: string
          title: Plugin Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PluginListItem:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        source:
          additionalProperties:
            type: string
          type: object
          title: Source
        author:
          anyOf:
          - $ref: '#/components/schemas/PluginAuthor'
          - type: 'null'
        homepage:
          anyOf:
          - type: string
          - type: 'null'
          title: Homepage
        keywords:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Keywords
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        domain:
          anyOf:
          - type: string
          - type: 'null'
          title: Domain
        namespace:
          anyOf:
          - type: string
          - type: 'null'
          title: Namespace
        enabled:
          type: boolean
          title: Enabled
        created_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Created At
        updated_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Updated At
      type: object
      required:
      - id
      - name
      - version
      - description
      - source
      - enabled
      - created_at
      - updated_at
      title: PluginListItem
      description: Plugin item in list responses.
    RegisterPluginResponse:
      properties:
        status:
          type: string
          title: Status
          description: Operation status
        action:
          type: string
          title: Action
          description: Action taken (created/updated)
        plugin:
          $ref: '#/components/schemas/PluginResponse'
          description: Plugin information
      type: object
      required:
      - status
      - action
      - plugin
      title: RegisterPluginResponse
      description: Response from plugin registration.
    ListPluginsResponse:
      properties:
        plugins:
          items:
            $ref: '#/components/schemas/PluginListItem'
          type: array
          title: Plugins
        count:
          type: integer
          title: Count
      type: object
      required:
      - plugins
      - count
      title: ListPluginsResponse
      description: Response from listing plugins.
    PluginResponse:
      properties:
        id:
          type: string
          title: Id
          description: Plugin unique ID
        name:
          type: string
          title: Name
          description: Plugin name
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
          description: Plugin version
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Plugin description
        source:
          additionalProperties:
            type: string
          type: object
          title: Source
          description: Plugin source reference
        enabled:
          type: boolean
          title: Enabled
          description: Whether plugin is enabled
      type: object
      required:
      - id
      - name
      - source
      - enabled
      title: PluginResponse
      description: Plugin information in API responses.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    UpdatePluginRequest:
      properties:
        source:
          additionalProperties:
            type: string
          type: object
          title: Source
          description: 'Plugin source reference. Supported formats:

            - GitHub: {''source'': ''github'', ''repo'': ''org/repo''}

            - Git URL: {''source'': ''url'', ''url'': ''https://github.com/org/repo.git''}

            - Git Subdir: {''source'': ''git-subdir'', ''url'': ''https://github.com/org/repo.git'', ''path'': ''plugins/plugin-name''}

            - Zip archive on any https host (e.g. S3): {''source'': ''archive'', ''url'': ''https://bucket.s3.amazonaws.com/plugin.zip'', ''sha256'': ''<optional hex digest>''}'
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
          description: Semantic version; cleared if omitted
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Plugin description
        author:
          anyOf:
          - $ref: '#/components/schemas/PluginAuthor'
          - type: 'null'
          description: Plugin author
        homepage:
          anyOf:
          - type: string
          - type: 'null'
          title: Homepage
          description: Plugin homepage URL
        keywords:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Keywords
          description: Search keywords
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
          description: Plugin category
        domain:
          anyOf:
          - type: string
          - type: 'null'
          title: Domain
          description: Skill domain (e.g., 'Productivity')
        namespace:
          anyOf:
          - type: string
          - type: 'null'
          title: Namespace
          description: Skill namespace within domain (e.g., 'workflows')
      type: object
      required:
      - source
      title: UpdatePluginRequest
      description: 'Request body for replacing an existing plugin.


        The plugin name is the resource identity and is supplied as the path

        parameter, so it cannot be changed here. This is a full replace: omitted

        fields reset to their defaults, so version is cleared rather than

        defaulting to the create-time "1.0.0".'
    RegisterPluginRequest:
      properties:
        source:
          additionalProperties:
            type: string
          type: object
          title: Source
          description: 'Plugin source reference. Supported formats:

            - GitHub: {''source'': ''github'', ''repo'': ''org/repo''}

            - Git URL: {''source'': ''url'', ''url'': ''https://github.com/org/repo.git''}

            - Git Subdir: {''source'': ''git-subdir'', ''url'': ''https://github.com/org/repo.git'', ''path'': ''plugins/plugin-name''}

            - Zip archive on any https host (e.g. S3): {''source'': ''archive'', ''url'': ''https://bucket.s3.amazonaws.com/plugin.zip'', ''sha256'': ''<optional hex digest>''}'
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
          description: Semantic version
          default: 1.0.0
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Plugin description
        author:
          anyOf:
          - $ref: '#/components/schemas/PluginAuthor'
          - type: 'null'
          description: Plugin author
        homepage:
          anyOf:
          - type: string
          - type: 'null'
          title: Homepage
          description: Plugin homepage URL
        keywords:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Keywords
          description: Search keywords
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
          description: Plugin category
        domain:
          anyOf:
          - type: string
          - type: 'null'
          title: Domain
          description: Skill domain (e.g., 'Productivity')
        namespace:
          anyOf:
          - type: string
          - type: 'null'
          title: Namespace
          description: Skill namespace within domain (e.g., 'workflows')
        name:
          type: string
          pattern: ^[a-z0-9-]+$
          title: Name
          description: Plugin name (kebab-case, e.g., 'my-plugin')
      type: object
      required:
      - source
      - name
      title: RegisterPluginRequest
      description: 'Request body for registering a plugin in the marketplace.


        LiteLLM acts as a registry/discovery layer. Plugins are hosted on

        GitHub/GitLab/Bitbucket or as a zip archive on any https host and referenced by their source.'
    PluginAuthor:
      properties:
        name:
          type: string
          title: Name
          description: Author name
        email:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
          description: Author email
      type: object
      required:
      - name
      title: PluginAuthor
      description: Plugin author information.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      description: Bearer token
      in: header
      name: x-litellm-api-key