> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhands.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Marketplace Skills

> Get skills from marketplace repositories.

This endpoint fetches and returns skill metadata from marketplace repos
without requiring an active sandbox session. Useful for previewing what
skills a marketplace provides before or after adding it.

Each call clones the marketplace repos fresh; this endpoint is admin-only
and low-traffic, so caching the git clones here would buy little for the
cross-user / pod-local complexity a shared cache introduces.

Args:
    marketplaces: List of marketplace registrations to fetch skills from.

Returns:
    MarketplaceSkillsPreviewResponse with skill metadata and any errors.



## OpenAPI

````yaml /openapi/openhands-cloud.json post /api/v1/skills/marketplace-skills
openapi: 3.1.0
info:
  title: OpenHands
  description: 'OpenHands: Code Less, Make More'
  version: 0.0.1
servers: []
security: []
paths:
  /api/v1/skills/marketplace-skills:
    post:
      tags:
        - Skills
      summary: Get Marketplace Skills
      description: >-
        Get skills from marketplace repositories.


        This endpoint fetches and returns skill metadata from marketplace repos

        without requiring an active sandbox session. Useful for previewing what

        skills a marketplace provides before or after adding it.


        Each call clones the marketplace repos fresh; this endpoint is
        admin-only

        and low-traffic, so caching the git clones here would buy little for the

        cross-user / pod-local complexity a shared cache introduces.


        Args:
            marketplaces: List of marketplace registrations to fetch skills from.

        Returns:
            MarketplaceSkillsPreviewResponse with skill metadata and any errors.
      operationId: get_marketplace_skills_api_v1_skills_marketplace_skills_post
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: >-
                  #/components/schemas/openhands__app_server__settings__settings_models__MarketplaceRegistration
              type: array
              title: Marketplaces
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarketplaceSkillsPreviewResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    openhands__app_server__settings__settings_models__MarketplaceRegistration:
      properties:
        name:
          type: string
          title: Name
          description: Identifier for this marketplace registration
        source:
          type: string
          title: Source
          description: 'Marketplace source: ''github:owner/repo'', git URL, or local path'
        ref:
          anyOf:
            - type: string
            - type: 'null'
          title: Ref
          description: Optional branch, tag, or commit (only for git sources)
        repo_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Path
          description: >-
            Subdirectory path within the git repository containing the
            marketplace (e.g., 'marketplaces/internal' for monorepos). Only
            relevant for git sources, not local paths.
        auto_load:
          type: boolean
          title: Auto Load
          description: >-
            Auto-load behavior for this marketplace. True = load all plugins at
            conversation start. False = registered for resolution but not
            auto-loaded.
          default: false
        scope:
          anyOf:
            - $ref: '#/components/schemas/MarketplaceScope'
            - type: 'null'
          description: >-
            Scope of this marketplace registration. Set automatically by backend
            based on storage layer: "instance" for system defaults, "org" for
            organization-level, "personal" for user-level. Frontend should NOT
            send this field in save requests.
      type: object
      required:
        - name
        - source
      title: MarketplaceRegistration
      description: >-
        Registration for a plugin marketplace.


        Represents a marketplace that can be registered for plugin resolution.

        Marketplaces can be auto-loaded (plugins loaded at conversation start)

        or registered only (available for explicit plugin references).


        Wire-compatible with
        ``openhands.sdk.marketplace.MarketplaceRegistration``

        (the model the agent-server ``/api/skills`` endpoint consumes): dumping
        this

        model with ``exclude={'scope'}`` yields exactly the SDK model's fields

        (``name``/``source``/``ref``/``repo_path``/``auto_load``), and our
        ``bool``

        ``auto_load`` and stricter field validators are a subset of what the SDK

        accepts, so any value we produce validates upstream.


        This is intentionally kept as a separate model rather than importing the
        SDK

        one, because it carries a backend-only ``scope`` (set per storage layer
        for

        API responses/UI, stripped at the wire boundary and re-derived during

        composition) and enforces input validation the SDK model does not
        (source /

        ``repo_path`` traversal guards, name format).


        Examples:
            >>> # Auto-load all plugins from a marketplace
            >>> MarketplaceRegistration(
            ...     name="public",
            ...     source="github:OpenHands/skills",
            ...     auto_load=True
            ... )

            >>> # Register marketplace without auto-loading
            >>> MarketplaceRegistration(
            ...     name="experimental",
            ...     source="github:acme/experimental"
            ... )

            >>> # Marketplace in monorepo subdirectory
            >>> MarketplaceRegistration(
            ...     name="team",
            ...     source="github:acme/monorepo",
            ...     repo_path="marketplaces/internal",
            ...     auto_load=True
            ... )
    MarketplaceSkillsPreviewResponse:
      properties:
        skills:
          items:
            $ref: '#/components/schemas/SkillInfo'
          type: array
          title: Skills
        plugins:
          items:
            $ref: '#/components/schemas/MarketplacePluginPreview'
          type: array
          title: Plugins
        marketplace_skills:
          additionalProperties:
            items:
              type: string
            type: array
          type: object
          title: Marketplace Skills
        errors:
          items:
            type: string
          type: array
          title: Errors
      type: object
      required:
        - skills
        - plugins
        - marketplace_skills
        - errors
      title: MarketplaceSkillsPreviewResponse
      description: Response for marketplace skills preview endpoint.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    MarketplaceScope:
      type: string
      enum:
        - instance
        - org
        - personal
      title: MarketplaceScope
      description: Scope of a marketplace registration.
    SkillInfo:
      properties:
        name:
          type: string
          title: Name
        type:
          type: string
          title: Type
        source:
          type: string
          title: Source
        triggers:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Triggers
      type: object
      required:
        - name
        - type
        - source
      title: SkillInfo
      description: Information about a single available skill.
    MarketplacePluginPreview:
      properties:
        name:
          type: string
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        source:
          type: string
          title: Source
        marketplace:
          type: string
          title: Marketplace
      type: object
      required:
        - name
        - source
        - marketplace
      title: MarketplacePluginPreview
      description: >-
        A plugin advertised by a marketplace manifest.


        The UI operates at the plugin level, so a plugin's bundled skills are
        not

        expanded here; only the plugin itself is surfaced.
    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
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-Access-Token

````