---
title: "Create pool"
method: POST
path: "/pools"
tags: ["Pool"]
---

# Create pool

`POST /pools`

Provisions a new pool.

## Request body

- PoolCreateOptions — Parameters available for creating new pools.
  - `Name` string, required — Pool name.
  - `Description` string — Pool description.
  - `Default` boolean — Default determines whether this pool is the default if a volume is provisioned without a pool specified. There can only be one default pool.
  - `DefaultDriver` string — DefaultDriver specifies the storage driver to use by default if there are multiple drivers in the pool and no driver was specified in the provisioning request or assigned by rules. If no driver was specified and no default set, driver weight is used to determine the default.
  - `ControllerNames` string[] — ControllerNames is a list of controller names that are participating in the storage pool.
  - `DriverNames` string[] — DriverNames is a list of backend storage drivers that are available in the storage pool.
  - `Active` boolean — Flag describing whether rule is active.
  - `Labels` object — Labels define a list of labels that describe the pool.

## Response `201`

Pool created successfully

- Pool — Pools are used to define distributed capacity that can be used to provision volumes from. Typically, each server that makes storage available will be added to one or more pools. Capacity drivers are also added to the pool to determine which backend storage driver to use. Currently this is limited to a single type of driver per pool, but in the future we will allow multiple, allowing for dynamic tiering and snapshots from one driver type to another.
  - `ID` string — Pool unique ID.
  - `Name` string, required — Pool name.
  - `Description` string — Pool description.
  - `Default` boolean — Default determines whether this pool is the default if a volume is provisioned without a pool specified. There can only be one default pool.
  - `DefaultDriver` string — DefaultDriver specifies the storage driver to use by default if there are multiple drivers in the pool and no driver was specified in the provisioning request or assigned by rules. If no driver was specified and no default set, driver weight is used to determine the default.
  - `ControllerNames` string[] — ControllerNames is a list of controller names that are participating in the storage pool.
  - `DriverNames` string[] — DriverNames is a list of backend storage drivers that are available in the storage pool.
  - `DriverInstances` DriverInstances — DriverInstances shows the internal configuration and state of each driver on all the nodes in the pool. Data within DriverInstances can not be modified directly.
    - `ID` string — Instance unique ID.
    - `Name` string — Instance name.
    - `Description` string — Instance description.
    - `Active` boolean — Flag describing whether the template is active.
    - `Config` object — Config is JSON struct that is passed directly to the driver. There is no specific format, and the driver is responsible for validation.
    - `Labels` object — Labels define a list of labels that describe the driver instance. These are inherited from the pool when the driver instance is created.
    - `ControllerName` string — ControllerName specifies the controller that this instance is running on.
    - `PoolID` string — PoolID refers to the pool that this driver instance relates to.
    - `DriverName` string — DriverName specifies which capacity driver this is an instance of.
    - `CapacityStats` CapacityStats — CapacityStats is used to report capacity statistics on pools and controllers.
      - `TotalCapacityBytes` integer — TotalCapacityBytes is the object's total capacity in bytes.
      - `AvailableCapacityBytes` integer — AvailableCapacityBytes is the object's available capacity in bytes.
      - `ProvisionedCapacityBytes` integer — ProvisionedCapacityBytes is the object's provisioned capacity in bytes.
  - `Active` boolean — Flag describing whether rule is active.
  - `CapacityStats` CapacityStats — CapacityStats is used to report capacity statistics on pools and controllers.
    - `TotalCapacityBytes` integer — TotalCapacityBytes is the object's total capacity in bytes.
    - `AvailableCapacityBytes` integer — AvailableCapacityBytes is the object's available capacity in bytes.
    - `ProvisionedCapacityBytes` integer — ProvisionedCapacityBytes is the object's provisioned capacity in bytes.
  - `Labels` object — Labels define a list of labels that describe the pool.

## Other responses

- `401` — Unauthorized
- `409` — Pool with name already exists
- `500` — Server error

---

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