# Create Folder
Create a new folder to organize your assets.
## Method Signature
```typescript
createFolder(name: string, parentId?: string): Promise<string>
```
## Parameters
### `name` (required)
The name of the folder to create.
- Type: `string`
- Should be descriptive and unique within the parent
### `parentId` (optional)
The ID of the parent folder. If not provided, creates a root-level folder.
- Type: `string`
- Format: Sui object ID (0x...)
## Returns
`Promise<string>` - The folder ID of the newly created folder
## Examples
### Create Root Folder
```typescript
const folderId = await walbucket.createFolder('Documents');
console.log('Folder created:', folderId);
```
### Create Nested Folder
```typescript
// Create parent folder
const parentId = await walbucket.createFolder('Projects');
// Create child folder
const childId = await walbucket.createFolder('2024', parentId);
console.log('Nested folder structure created');
```
### Create Folder Hierarchy
```typescript
async function createFolderHierarchy() {
// Create root
const rootId = await walbucket.createFolder('Media');
// Create categories
const photosId = await walbucket.createFolder('Photos', rootId);
const videosId = await walbucket.createFolder('Videos', rootId);
// Create subcategories
await walbucket.createFolder('2024', photosId);
await walbucket.createFolder('2023', photosId);
console.log('Folder hierarchy created');
}
```
### Create with Error Handling
```typescript
async function createFolderSafely(name: string, parentId?: string) {
try {
const folderId = await walbucket.createFolder(name, parentId);
return { success: true, folderId };
} catch (error) {
if (error.message.includes('already exists')) {
return { success: false, error: 'Folder name already exists' };
}
return { success: false, error: error.message };
}
}
```
## Folder Organization
Folders help organize assets:
- Group related files together
- Create hierarchical structures
- Apply policies at folder level
- Easier browsing and management
## Error Handling
```typescript
try {
const folderId = await walbucket.createFolder(name, parentId);
} catch (error) {
if (error instanceof ValidationError) {
console.error('Invalid folder name or parent ID');
} else if (error instanceof BlockchainError) {
console.error('Failed to create folder:', error.message);
}
}
```
## Notes
- Folder names should be unique within the same parent
- Folders can be nested to any depth
- Empty folders can exist
- Folder IDs are Sui object IDs
- Gas fees apply based on `gasStrategy`
- Folders are owned by the creator
## Use Cases
### Project Organization
```typescript
// Organize by project
const projectId = await walbucket.createFolder('Website Redesign');
const assetsId = await walbucket.createFolder('Assets', projectId);
const imagesId = await walbucket.createFolder('Images', assetsId);
const iconsId = await walbucket.createFolder('Icons', assetsId);
```
### Time-Based Organization
```typescript
// Organize by date
const year = new Date().getFullYear();
const month = new Date().toLocaleString('default', { month: 'long' });
const yearId = await walbucket.createFolder(String(year));
const monthId = await walbucket.createFolder(month, yearId);
```
### Category Organization
```typescript
// Organize by type
const docsId = await walbucket.createFolder('Documents');
const mediaId = await walbucket.createFolder('Media');
const archivesId = await walbucket.createFolder('Archives');
```
## Related
- [Move to Folder](/docs/api/move-to-folder) - Move assets into folders
- [Delete Folder](/docs/api/delete-folder) - Delete folders
- [List](/docs/api/list) - List assets (includes folder info)plaintext