---
title: "POST /api/v1/skillhub/install"
method: POST
path: "/api/v1/skillhub/install"
tags: ["SkillHub"]
---

# POST /api/v1/skillhub/install

`POST /api/v1/skillhub/install`

## Request body

- object
  - `slug` string, required
  - `source` 'managed' | 'custom' | 'workspace' | 'user'
  - `agentId` string, nullable

## Response `200`

Install

- object
  - `ok` boolean, required
  - `queued` boolean
  - `slug` string
  - `status` 'queued' | 'downloading' | 'installing-deps' | 'done' | 'failed'
  - `position` number
  - `error` string

## Changes

- **2026-03-30** `c87fe17eb12b` — 2 info
  - added the new optional request property `agentId`
  - added the new optional request property `source`
- **2026-03-25** `15a1677e662f` — 1 breaking, 1 info
  - added the pattern `^[a-z0-9][a-z0-9-]{0,127}$` to the request property `slug`
  - the `slug` request property's minLength was decreased from `1` to `0`
- **2026-03-24** `d30106ff14cb` — 4 info
  - added the optional property `position` to the response with the `200` status
  - added the optional property `queued` to the response with the `200` status
  - added the optional property `slug` to the response with the `200` status
  - added the optional property `status` to the response with the `200` status
- **2026-03-19** `239b3cc94d80` — 1 breaking, 6 warning, 1 info
  - the `slug` request property's minLength was increased from `0` to `1`
  - removed the request property `agentId`
  - removed the request property `source`
  - removed the optional property `position` from the response with the `200` status
  - …4 more

[Change history](https://skmtc.dev/nexu-io/apis/nexu-controller-api/changes/api/v1/skillhub/install/post.md)

---

[API](https://skmtc.dev/nexu-io/apis/nexu-controller-api.md) · [All operations](https://skmtc.dev/nexu-io/apis/nexu-controller-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nexu-io/nexu-controller-api/revisions/ee3237405da6/schema)
