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

# Create volume

> Allows you to add persistent storage to a project. These volumes can be used to store data across your servers.



## OpenAPI

````yaml https://spec.speakeasy.com/latitude/latitude/latitude-sh-api-with-code-samples post /storage/volumes
openapi: 3.0.1
info:
  title: Latitude.sh API
  version: '2023-06-01'
  description: >-
    The Latitude.sh API is a RESTful API to manage your Latitude.sh account. It
    allows you to perform the same actions as the Latitude.sh dashboard.
servers:
  - url: https://api.latitude.sh
    variables:
      latitude_api_key:
        default: <insert your api key here>
  - url: http://api.latitude.sh
    variables:
      latitude_api_key:
        default: <insert your api key here>
security: []
tags:
  - name: API keys
  - name: Baselines (Preview)
    description: >-
      Preview. Available to teams with the `baselines_api` feature flag. The
      shape of these endpoints may change before general availability.
  - name: Billing
  - name: Elastic Ips
  - name: Events
  - name: Firewalls
  - name: IP Addresses
  - name: Managed Databases
    description: Managed database instances (PostgreSQL, ClickHouse)
  - name: Kubernetes Clusters
  - name: LKS
  - name: Marketplace apps
  - name: Operating Systems
  - name: Plans
  - name: Public Networks
  - name: Private Networks
  - name: Projects
  - name: Regions
  - name: Roles
  - name: SSH Keys
  - name: Servers
  - name: Block Storage
  - name: Filesystem Storage
  - name: Object Storage
  - name: Tags
  - name: Teams
  - name: Team members
  - name: Traffic
  - name: User data
  - name: User profile
  - name: VPN Sessions
  - name: Virtual machines
  - name: Virtual machine backups
  - name: Virtual machine restores
paths:
  /storage/volumes:
    post:
      tags:
        - Block Storage
      summary: Create volume
      description: >-
        Allows you to add persistent storage to a project. These volumes can be
        used to store data across your servers.
      operationId: create-volume
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - volumes
                    attributes:
                      type: object
                      properties:
                        project:
                          type: string
                          description: Project ID or slug
                        name:
                          type: string
                          description: Volume name
                        region:
                          type: string
                          description: Region (site) slug where the volume is provisioned
                        size_in_gb:
                          type: integer
                          minimum: 1
                          maximum: 10000
                          description: Size in GB
                      required:
                        - project
                        - name
                        - region
                        - size_in_gb
                  required:
                    - type
                    - attributes
              required:
                - data
            examples:
              Created:
                summary: Created
                value:
                  data:
                    type: volumes
                    attributes:
                      name: my-data
                      size_in_gb: 1500
                      region: DAL
                      project: proj_enPbqoZ6dA2MQ
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - volumes
                    attributes:
                      type: object
                      properties:
                        project:
                          type: string
                          description: Project ID or slug
                        name:
                          type: string
                          description: Volume name
                        region:
                          type: string
                          description: Region (site) slug where the volume is provisioned
                        size_in_gb:
                          type: integer
                          minimum: 1
                          maximum: 10000
                          description: Size in GB
                      required:
                        - project
                        - name
                        - region
                        - size_in_gb
                  required:
                    - type
                    - attributes
              required:
                - data
            examples:
              Created:
                summary: Created
                value:
                  data:
                    type: volumes
                    attributes:
                      name: my-data
                      size_in_gb: 1500
                      region: DAL
                      project: proj_enPbqoZ6dA2MQ
        required: true
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              examples:
                Created:
                  value:
                    data:
                      id: vol_Av9BVDavORm1W
                      type: volumes
                      attributes:
                        name: Rustic Aluminum Shoes
                        size_in_gb: 1500
                        created_at: '2026-01-14T15:57:08.000Z'
                        namespace_id: null
                        connector_id: null
                        initiators: null
                        project:
                          id: proj_enPbqoZ6dA2MQ
                          name: Mediocre Aluminum Car
                          slug: mediocre-aluminum-car
                          description: Rustic Linen Shoes
                          billing_type: Normal
                          billing_method: Normal
                          bandwidth_alert: false
                          environment: null
                          billing:
                            subscription_id: null
                            type: Normal
                            method: Normal
                          stats:
                            databases: 0
                            ip_addresses: 0
                            prefixes: 0
                            servers: 0
                            storages: 1
                            virtual_machines: 0
                            vlans: 0
                        team:
                          id: team_geEQyBL2bJiVpXJgmw1YTgneKVb
                          name: 609 Team
                          slug: 609-team
                          description: 609 Team
                          address: Apt. 590 415 Kirlin Pass, South Trenton, MT 96944
                          status: verified
                          currency:
                            id: cur_AW6Q2D9lqKLpr
                            code: BRL
                            name: Brazilian Real
                            currency_id: null
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/volume_data'
      security:
        - Bearer: []
      x-codeSamples:
        - lang: python
          label: Python (SDK)
          source: |-
            import latitudesh_python_sdk
            from latitudesh_python_sdk import Latitudesh
            import os


            with Latitudesh(
                bearer=os.getenv("LATITUDESH_BEARER", ""),
            ) as latitudesh:

                res = latitudesh.block_storage.post_storage_volumes(data={
                    "type": latitudesh_python_sdk.PostStorageVolumesBlockStorageType.VOLUMES,
                    "attributes": {
                        "project": "proj_enPbqoZ6dA2MQ",
                        "name": "my-data",
                        "region": "DAL",
                        "size_in_gb": 1500,
                    },
                })

                # Handle response
                print(res)
        - lang: go
          label: Go (SDK)
          source: "package main\n\nimport(\n\t\"context\"\n\t\"os\"\n\tlatitudeshgosdk \"github.com/latitudesh/latitudesh-go-sdk\"\n\t\"github.com/latitudesh/latitudesh-go-sdk/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := latitudeshgosdk.New(\n        latitudeshgosdk.WithSecurity(os.Getenv(\"LATITUDESH_BEARER\")),\n    )\n\n    res, err := s.BlockStorage.CreateVolume(ctx, operations.CreateVolumeBlockStorageRequestBody{\n        Data: operations.CreateVolumeBlockStorageData{\n            Type: operations.CreateVolumeBlockStorageTypeVolumes,\n            Attributes: operations.CreateVolumeBlockStorageAttributes{\n                Project: \"proj_enPbqoZ6dA2MQ\",\n                Name: \"my-data\",\n                Region: \"DAL\",\n                SizeInGb: 1500,\n            },\n        },\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.Object != nil {\n        // handle response\n    }\n}"
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { Latitudesh } from "latitudesh-typescript-sdk";

            const latitudesh = new Latitudesh({
              bearer: process.env["LATITUDESH_BEARER"] ?? "",
            });

            async function run() {
              const result = await latitudesh.blockStorage.postStorageVolumes({
                data: {
                  type: "volumes",
                  attributes: {
                    project: "proj_enPbqoZ6dA2MQ",
                    name: "my-data",
                    region: "DAL",
                    sizeInGb: 1500,
                  },
                },
              });

              console.log(result);
            }

            run();
components:
  schemas:
    volume_data:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - volumes
        attributes:
          type: object
          properties:
            name:
              type: string
            size_in_gb:
              type: integer
            created_at:
              type: string
              format: date-time
              nullable: true
            namespace_id:
              type: integer
              nullable: true
            connector_id:
              type: string
              nullable: true
            initiators:
              type: array
              items:
                type: object
                properties:
                  nqn:
                    type: string
              nullable: true
            block:
              type: object
              nullable: true
              description: >-
                NVMe-TCP block mapping of a high performance volume. Null for
                volumes that are not mapped to a server.
              properties:
                status:
                  type: string
                  nullable: true
                  description: >-
                    Mapping lifecycle state: "mapping" while the mapping is
                    being applied, "mapped" once the server can access the
                    volume, "unmapping" while the mapping is being removed, or
                    "failed". Mapping and unmapping are asynchronous, so poll
                    the volume until this reaches a terminal state. The block
                    object becomes null once the volume is fully unmapped.
                nqn:
                  type: string
                  nullable: true
                  description: NVMe Qualified Name of the mapped server.
                nsid:
                  type: integer
                  nullable: true
                  description: NVMe namespace ID of the mapping.
                server_id:
                  type: string
                  nullable: true
                  description: ID of the server the volume is mapped to.
                storage_network:
                  type: object
                  nullable: true
                  description: >-
                    Storage network the mapped server joins to reach the volume
                    over NVMe-TCP. Null until the network has been provisioned
                    for the volume.
                  properties:
                    vid:
                      type: integer
                      nullable: true
                      description: VLAN ID of the storage VLAN to tag on the server bond.
                    host_cidr:
                      type: string
                      nullable: true
                      description: >-
                        Storage IP of the mapped server, in CIDR notation. Null
                        until the mapping status is "mapped".
                    gateway:
                      type: string
                      nullable: true
                      description: >-
                        Gateway of the storage network, used for the routes
                        below.
                    routes:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: >-
                        Storage infrastructure prefixes to route via the
                        gateway.
                    block_gateway:
                      type: string
                      nullable: true
                      description: NVMe-oF/TCP discovery portal address.
                    block_port:
                      type: integer
                      nullable: true
                      description: NVMe-oF/TCP discovery portal port.
            keyring:
              type: string
              nullable: true
              description: >-
                Keyring secret used to connect to the volume. Returned only for
                dashboard-origin requests; null until the volume is provisioned.
            cluster_user:
              type: string
              nullable: true
              description: >-
                Cluster user used to connect to the volume. Returned only for
                dashboard-origin requests; null until the volume is provisioned.
            volume_path:
              type: string
              nullable: true
              description: >-
                Path of the volume inside the cluster. Returned only for
                dashboard-origin requests; null until the volume is provisioned.
            region:
              type: object
              nullable: true
              properties:
                city:
                  type: string
                  nullable: true
                country:
                  type: string
                  nullable: true
                site:
                  type: object
                  nullable: true
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    slug:
                      type: string
                    facility:
                      type: string
            project:
              $ref: '#/components/schemas/project_include'
            team:
              $ref: '#/components/schemas/team_include'
    project_include:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        description:
          type: string
          nullable: true
        billing_type:
          type: string
          nullable: true
        provisioning_type:
          type: string
          nullable: true
        billing_method:
          type: string
          nullable: true
        bandwidth_alert:
          type: boolean
        environment:
          type: string
          nullable: true
        billing:
          type: object
          properties:
            subscription_id:
              type: string
              nullable: true
            type:
              type: string
            method:
              type: string
        stats:
          type: object
          properties:
            databases:
              type: integer
            ip_addresses:
              type: integer
            prefixes:
              type: integer
            servers:
              type: integer
            storages:
              type: integer
            virtual_machines:
              type: integer
            vlans:
              type: integer
    team_include:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        description:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        currency:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            currency_id:
              type: integer
              nullable: true
        status:
          type: string
          nullable: true
        feature_flags:
          type: array
          items:
            type: string
        limits:
          type: object
          properties:
            bare_metal:
              type: integer
              nullable: true
            bare_metal_gpu:
              type: integer
              nullable: true
            virtual_machine:
              type: integer
              nullable: true
            virtual_machine_gpu:
              type: integer
              nullable: true
            elastic_ip:
              type: integer
              nullable: true
            bgp_session_per_ip:
              type: integer
              nullable: true
            public_network:
              type: integer
              nullable: true
            virtual_network:
              type: integer
              nullable: true
            database:
              type: integer
              nullable: true
            filesystem:
              type: integer
              nullable: true
            block_storage:
              type: integer
              nullable: true
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      in: header

````