---
title: "Create a new plugin"
method: POST
path: "/api/plugins"
tags: ["Plugins"]
---

# Create a new plugin

`POST /api/plugins`

Creates a new plugin with the specified configuration.

## Request body

- CreatePluginRequest — Create plugin request
  - `name` string, required
  - `enabled` boolean
  - `config` object
  - `path` string

## Response `201`

Plugin created successfully

- object — Plugin operation response
  - `message` string
  - `plugin` Plugin — Plugin configuration
    - `id` integer — Plugin ID (auto-generated)
    - `name` string — Display name of the plugin (from config)
    - `actualName` string — Actual plugin name from GetName() (used as map key in plugin status). Only populated for active plugins.
    - `enabled` boolean
    - `config` object
    - `isCustom` boolean
    - `path` string
    - `status` object — Current plugin status including types array (only populated for active plugins)
      - `name` string — Display name of the plugin
      - `status` 'active' | 'error' | 'disabled' | 'loading' | 'uninitialized' | 'unloaded' | 'loaded'
      - `logs` string[]
      - `types` string[] — Plugin types indicating which interfaces the plugin implements
    - `created_at` string, date-time
    - `version` integer
    - `updated_at` string, date-time
    - `config_hash` string

## Other responses

- `400` — Bad request
- `409` — Plugin already exists
- `500` — Internal server error

---

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