---
title: "Create a network volume"
method: POST
path: "/v2/network-volumes"
tags: ["Network Volumes"]
---

# Create a network volume

`POST /v2/network-volumes`

Provisions a new network volume — persistent, network-attached
storage that can be mounted into pods and serverless workers.
Required inputs are `name`, `size` (in GB), and `dataCenter`; an
optional `type` selects the storage tier and is immutable after
creation. See `CreateNetworkVolumeRequest` for the size bounds and
tier options.

This creates a billable persistent resource that keeps incurring
storage charges until it is deleted. Returns `201` with the created
network volume, including its assigned `id`.

## Request body

- CreateNetworkVolumeRequest
  - `name` string, required — Human-readable name
  - `size` integer, required — Storage to allocate in GB
  - `dataCenter` string, required — Data center in which to create the volume
  - `type` 'STANDARD' | 'HIGH_PERFORMANCE' — Data center network volume storage type.

## Response `201`

Created

- NetworkVolume
  - `dataCenterId` string — The Runpod data center ID where a network volume is located.
  - `id` string — A unique string identifying a network volume.
  - `name` string — A user-defined name for a network volume. The name does not need to be unique.
  - `size` integer — The amount of disk space, in gigabytes (GB), allocated to a network volume.

## Other responses

- `400` — The request could not be processed because it is malformed or conflicts with request rules.
- `401` — Authentication failed because the bearer token is missing, malformed, expired, or invalid.
- `403` — The bearer token is valid, but it does not grant access to the requested resource or action.
- `422` — The request body or parameters were syntactically valid but failed validation.
- `429` — The caller exceeded its per-user rate limit. The response identifies the window that was exceeded and how long to wait. The `RateLimit` and `RateLimit-Policy` headers (per the IETF ratelimit-headers draft) also accompany successful responses, so clients can track quota before a 429.
- `default` — Error

---

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