# Managing volumes (/docs/volumes/manage)

<!-- agent-signals: reading_time_min: 2 · est_tokens: 1206 · updated: 2026-07-30 -->
Related: [Download data from volume](/docs/volumes/download.md), [Get information about a file or directory](/docs/volumes/info.md), [Migrating data between volumes](/docs/volumes/migrate.md), [Mounting volumes](/docs/volumes/mount.md), [Read & write files](/docs/volumes/read-write.md), [Upload data to volume](/docs/volumes/upload.md)

## Create a volume [#create-a-volume]

<Note>
  Volume names can only contain letters, numbers, and hyphens.
</Note>

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```js  
      import { Volume } from 'e2b'

      const volume = await Volume.create('my-volume')
      console.log(volume.volumeId) // Volume ID
      console.log(volume.name)     // 'my-volume'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import Volume

      volume = Volume.create('my-volume')
      print(volume.volume_id)  # Volume ID
      print(volume.name)       # 'my-volume'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

## Connect to an existing volume [#connect-to-an-existing-volume]

You can connect to an existing volume by its ID using the `connect()` method.

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```js  
      import { Volume } from 'e2b'

      const volume = await Volume.connect('volume-id')
      console.log(volume.volumeId) // Volume ID
      console.log(volume.name)     // Volume name
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import Volume

      volume = Volume.connect('volume-id')
      print(volume.volume_id)  # Volume ID
      print(volume.name)       # Volume name
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

## List volumes [#list-volumes]

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```js  
      import { Volume } from 'e2b'

      const volumes = await Volume.list()
      console.log(volumes)
      // [{ volumeId: '...', name: 'my-volume' }, ...]
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import Volume

      volumes = Volume.list()
      print(volumes)
      # [VolumeInfo(volume_id='...', name='my-volume'), ...]
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

## Get volume info [#get-volume-info]

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```js  
      import { Volume } from 'e2b'

      const info = await Volume.getInfo('volume-id')
      console.log(info)
      // { volumeId: '...', name: 'my-volume' }
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import Volume

      info = Volume.get_info('volume-id')
      print(info)
      # VolumeInfo(volume_id='...', name='my-volume')
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

## Destroy a volume [#destroy-a-volume]

<CodeGroup>
  <CodeBlockTabs defaultValue="JavaScript & TypeScript" groupId="javascript-typescript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="JavaScript & TypeScript">
        JavaScript & TypeScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="JavaScript & TypeScript">
      ```js  
      import { Volume } from 'e2b'

      const success = await Volume.destroy('volume-id')
      console.log(success) // true
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Python">
      ```python  
      from e2b import Volume

      success = Volume.destroy('volume-id')
      print(success)  # True
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>
