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

# Create a network volume

> 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`.




## OpenAPI

````yaml post /v2/network-volumes
openapi: 3.1.0
info:
  title: Runpod REST API
  version: 2.0.0
  description: Runpod public REST API — v2
servers:
  - url: https://api.runpod.io
    description: Runpod API v2 production server
security:
  - bearerAuth: []
tags:
  - name: Pods
    description: GPU and CPU pod lifecycle, configuration, actions, and log streaming.
  - name: Serverless
    description: >-
      Serverless endpoint lifecycle, worker visibility, releases, and worker log
      streaming.
  - name: Templates
    description: Reusable pod and endpoint configuration templates.
  - name: Network Volumes
    description: Persistent network storage volumes for workloads.
  - name: Registries
    description: Container registry credentials used to pull private images.
  - name: Catalog
    description: Available GPU, CPU, and data center catalog metadata.
  - name: Billing
    description: Billing history and usage cost records across resource types.
paths:
  /v2/network-volumes:
    post:
      tags:
        - Network Volumes
      summary: Create a network volume
      description: |
        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`.
      operationId: createNetworkVolume
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNetworkVolumeRequest'
            examples:
              networkVolume:
                summary: Network volume
                value:
                  name: training-dataset
                  dataCenter: US-KS-2
                  size: 50
                  type: HIGH_PERFORMANCE
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkVolume'
              examples:
                networkVolume:
                  summary: Successful response
                  value:
                    id: 2q9m7x4c
                    name: training-dataset
                    size: 50
                    dataCenter: US-KS-2
                    type: HIGH_PERFORMANCE
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
        default:
          description: Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CreateNetworkVolumeRequest:
      type: object
      additionalProperties: false
      required:
        - name
        - size
        - dataCenter
      properties:
        name:
          type: string
          minLength: 1
          description: Human-readable name
          examples:
            - my-dataset
        size:
          type: integer
          minimum: 10
          maximum: 4096
          description: Storage to allocate in GB
          examples:
            - 50
        dataCenter:
          type: string
          minLength: 1
          description: Data center in which to create the volume
          examples:
            - EU-RO-1
        type:
          allOf:
            - $ref: '#/components/schemas/VolumeType'
          description: |
            Storage tier for the volume. Optional. When omitted, the volume is
            provisioned using the requested data center's default (primary)
            storage tier. HIGH_PERFORMANCE provisions a high-performance (HPS)
            volume; STANDARD provisions a standard volume. A volume's tier is
            immutable after creation.
    NetworkVolume:
      type: object
      required:
        - id
        - name
        - size
        - dataCenter
        - type
      properties:
        id:
          type: string
          description: Unique network volume identifier
          examples:
            - agv6w2qcg7
        name:
          type: string
          description: Human-readable name (not required to be unique)
          examples:
            - my-dataset
        size:
          type: integer
          minimum: 10
          maximum: 4096
          description: Allocated storage in GB
          examples:
            - 50
        dataCenter:
          type: string
          description: Data center location; immutable after creation
          examples:
            - EU-RO-1
        type:
          allOf:
            - $ref: '#/components/schemas/VolumeType'
          description: Storage tier of this volume. Set at creation and immutable.
    ErrorResponse:
      type: object
      required:
        - title
        - status
        - detail
      properties:
        title:
          type: string
          description: Short human-readable summary
          examples:
            - Not Found
        status:
          type: integer
          description: HTTP status code
          examples:
            - 404
        detail:
          type: string
          description: Human-readable explanation
          examples:
            - pod not found
        errors:
          type: array
          description: Individual request-validation failures.
          items:
            type: string
          examples:
            - - '$: additional properties ''bogus'' not allowed'
    VolumeType:
      type: string
      description: Data center network volume storage type.
      enum:
        - STANDARD
        - HIGH_PERFORMANCE
  responses:
    BadRequestError:
      description: >-
        The request could not be processed because it is malformed or conflicts
        with request rules.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            badRequest:
              summary: Bad request
              value:
                title: Bad Request
                status: 400
                detail: request could not be processed
    UnauthorizedError:
      description: >-
        Authentication failed because the bearer token is missing, malformed,
        expired, or invalid.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingBearerToken:
              summary: Missing bearer token
              value:
                title: Unauthorized
                status: 401
                detail: missing bearer token
    ForbiddenError:
      description: >-
        The bearer token is valid, but it does not grant access to the requested
        resource or action.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            insufficientAccess:
              summary: Insufficient access
              value:
                title: Forbidden
                status: 403
                detail: access denied
    UnprocessableEntityError:
      description: >-
        The request body or parameters were syntactically valid but failed
        validation.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            validationFailed:
              summary: Validation failed
              value:
                title: Unprocessable Entity
                status: 422
                detail: Request validation failed.
    TooManyRequestsError:
      description: >
        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.
      headers:
        Retry-After:
          description: Seconds to wait before retrying, per the exceeded window.
          schema:
            type: integer
          example: 12
        RateLimit:
          description: >
            Live per-window state as a structured-field list — one member per
            window (`minute`, `hour`, `day`) with remaining count `r` and
            seconds-until-reset `t`.
          schema:
            type: string
          example: '"minute";r=0;t=12, "hour";r=2800;t=1812, "day";r=49500;t=45012'
        RateLimit-Policy:
          description: >
            Static quota policy as a structured-field list — one member per
            window with quota `q` and window length `w` (seconds).
          schema:
            type: string
          example: '"minute";q=60;w=60, "hour";q=3000;w=3600, "day";q=50000;w=86400'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            rateLimited:
              summary: Rate limit exceeded
              value:
                title: Too Many Requests
                status: 429
                detail: rate limit exceeded for the minute window
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Runpod API Key
      description: >
        Runpod API key authentication. Generate an API key in the Runpod console
        and send it in the `Authorization` header as `Bearer <api_key>`. Keys
        are scoped to the permissions granted when created; requests may return
        `403` when a valid key lacks access to the requested resource or action.

````