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

# Folders

> Organize agents into folders.

Folders group agents in the Skyvern app. An agent belongs to at most one folder.

Every method here also accepts `request_options` (Python) or a final `requestOptions` argument (TypeScript) to override the timeout, retries or headers for one call; see [request options](https://skyvern.com/docs/sdk-reference/overview.md#request-options).

***

## create\_folder

Create a new folder to organize workflows

```python Python theme={null}
await skyvern.create_folder(*, title: str, description: str | None = ...) -> Folder
```

```typescript TypeScript theme={null}
skyvern.createFolder(request: FolderCreate): Promise<Folder>
```

**Parameters**

**title** `str` *required*

Folder title

**description** `str | None`

Folder description

Sent only when you pass it

**Returns** `Folder` · TypeScript `Promise<Folder>`

> [accordion] Folder fields
>
> | Field | Type | Description |
> | - | - | - |
> | `title` | `str` | Folder title |
> | `description` | `str \| None` | Folder description |
> | `folder_id` | `str` | |
> | `organization_id` | `str` | |
> | `workflow_count` | `int \| None` | Number of workflows in this folder |
> | `created_at` | `datetime` | |
> | `modified_at` | `datetime` | |

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.create_folder(title="Invoices")
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.createFolder({ title: "Invoices" });
console.log(result);
```

***

## get\_folder

Get a specific folder by ID

```python Python theme={null}
await skyvern.get_folder(folder_id: str) -> Folder
```

```typescript TypeScript theme={null}
skyvern.getFolder(folderId: string): Promise<Folder>
```

**Parameters**

**folder\_id** `str` *required*

Folder ID

TypeScript: `folderId`

**Returns** `Folder` · TypeScript `Promise<Folder>`

> [accordion] Folder fields
>
> | Field | Type | Description |
> | - | - | - |
> | `title` | `str` | Folder title |
> | `description` | `str \| None` | Folder description |
> | `folder_id` | `str` | |
> | `organization_id` | `str` | |
> | `workflow_count` | `int \| None` | Number of workflows in this folder |
> | `created_at` | `datetime` | |
> | `modified_at` | `datetime` | |

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.get_folder(folder_id="fld_123")
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.getFolder("fld_123");
console.log(result);
```

***

## get\_folders

Get all folders for the organization

```python Python theme={null}
await skyvern.get_folders(
    *,
    page: int | None = None,
    page_size: int | None = None,
    search: str | None = None,
) -> list[Folder]
```

```typescript TypeScript theme={null}
skyvern.getFolders(request?: GetFoldersRequest): Promise<Folder[]>
```

**Parameters**

**page** `int | None`

Page number

Default: `None`

**page\_size** `int | None`

Number of folders per page

Default: `None`

**search** `str | None`

Search folders by title or description

Default: `None`

**Returns** `list[Folder]` · TypeScript `Promise<Folder[]>`

> [accordion] Folder fields
>
> | Field | Type | Description |
> | - | - | - |
> | `title` | `str` | Folder title |
> | `description` | `str \| None` | Folder description |
> | `folder_id` | `str` | |
> | `organization_id` | `str` | |
> | `workflow_count` | `int \| None` | Number of workflows in this folder |
> | `created_at` | `datetime` | |
> | `modified_at` | `datetime` | |

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.get_folders()
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.getFolders();
console.log(result);
```

***

## update\_folder

Update a folder's title or description

```python Python theme={null}
await skyvern.update_folder(
    folder_id: str,
    *,
    title: str | None = ...,
    description: str | None = ...,
) -> Folder
```

```typescript TypeScript theme={null}
skyvern.updateFolder(folderId: string, request?: FolderUpdate): Promise<Folder>
```

**Parameters**

**folder\_id** `str` *required*

Folder ID

TypeScript: `folderId`

**title** `str | None`

Folder title

Sent only when you pass it

**description** `str | None`

Folder description

Sent only when you pass it

**Returns** `Folder` · TypeScript `Promise<Folder>`

> [accordion] Folder fields
>
> | Field | Type | Description |
> | - | - | - |
> | `title` | `str` | Folder title |
> | `description` | `str \| None` | Folder description |
> | `folder_id` | `str` | |
> | `organization_id` | `str` | |
> | `workflow_count` | `int \| None` | Number of workflows in this folder |
> | `created_at` | `datetime` | |
> | `modified_at` | `datetime` | |

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.update_folder(folder_id="fld_123", title="Invoices")
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.updateFolder("fld_123", { title: "Invoices" });
console.log(result);
```

***

## delete\_folder

Delete a folder. Optionally delete all workflows in the folder.

```python Python theme={null}
await skyvern.delete_folder(
    folder_id: str,
    *,
    delete_workflows: bool | None = None,
) -> dict[str, Any | None]
```

```typescript TypeScript theme={null}
skyvern.deleteFolder(folderId: string, request?: DeleteFolderRequest): Promise<Record<string, unknown>>
```

**Parameters**

**folder\_id** `str` *required*

Folder ID

TypeScript: `folderId`

**delete\_workflows** `bool | None`

If true, also delete all workflows in this folder

Default: `None`

**Returns** `dict[str, Any | None]` · TypeScript `Promise<Record<string, unknown>>`

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.delete_folder(folder_id="fld_123")
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.deleteFolder("fld_123");
console.log(result);
```

***

## update\_workflow\_folder

Update a workflow's folder assignment for the latest version

```python Python theme={null}
await skyvern.update_workflow_folder(
    workflow_permanent_id: str,
    *,
    folder_id: str | None = ...,
) -> Workflow
```

```typescript TypeScript theme={null}
skyvern.updateWorkflowFolder(workflowPermanentId: string, request?: UpdateWorkflowFolderRequest): Promise<Workflow>
```

**Parameters**

**workflow\_permanent\_id** `str` *required*

Workflow permanent ID

TypeScript: `workflowPermanentId`

**folder\_id** `str | None`

Folder ID to assign workflow to. Set to null to remove from folder.

Sent only when you pass it

**Returns** `Workflow` · TypeScript `Promise<Workflow>`

> [accordion] Workflow fields
>
> | Field | Type | Description |
> | - | - | - |
> | `workflow_id` | `str` | |
> | `organization_id` | `str` | |
> | `title` | `str` | |
> | `workflow_permanent_id` | `str` | |
> | `version` | `int` | |
> | `is_saved_task` | `bool` | |
> | `is_template` | `bool \| None` | |
> | `description` | `str \| None` | |
> | `workflow_definition` | `WorkflowDefinition` | |
> | `proxy_location` | `"RESIDENTIAL" \| "US-CA" \| "US-NY" \| "US-TX" \| "US-FL" \| "US-WA" \| "RESIDENTIAL_ES" \| "RESIDENTIAL_IE" \| "RESIDENTIAL_GB" \| "RESIDENTIAL_IN" \| "RESIDENTIAL_JP" \| "RESIDENTIAL_FR" \| "RESIDENTIAL_DE" \| "RESIDENTIAL_NZ" \| "RESIDENTIAL_ZA" \| "RESIDENTIAL_AR" \| "RESIDENTIAL_AU" \| "RESIDENTIAL_BR" \| "RESIDENTIAL_TR" \| "RESIDENTIAL_CA" \| "RESIDENTIAL_MX" \| "RESIDENTIAL_IT" \| "RESIDENTIAL_NL" \| "RESIDENTIAL_PH" \| "RESIDENTIAL_KR" \| "RESIDENTIAL_SA" \| "RESIDENTIAL_ISP" \| "NONE" \| Any \| GeoTarget \| dict[str, Any \| None] \| None` | |
> | `webhook_callback_url` | `str \| None` | |
> | `totp_verification_url` | `str \| None` | |
> | `totp_identifier` | `str \| None` | |
> | `persist_browser_session` | `bool \| None` | |
> | `pin_saved_session_ip` | `bool \| None` | |
> | `browser_profile_id` | `str \| None` | |
> | `browser_profile_key` | `str \| None` | |
> | `model` | `dict[str, Any \| None] \| None` | |
> | `status` | `"published" \| "draft" \| "auto_generated" \| "importing" \| "import_failed" \| None` | |
> | `max_screenshot_scrolls` | `int \| None` | |
> | `max_elapsed_time_minutes` | `int \| None` | |
> | `extra_http_headers` | `dict[str, str \| None] \| None` | |
> | `cdp_connect_headers` | `dict[str, str \| None] \| None` | |
> | `run_with` | `str \| None` | |
> | `ai_fallback` | `bool \| None` | |
> | `cache_key` | `str \| None` | |
> | `adaptive_caching` | `bool \| None` | |
> | `enable_self_healing` | `bool \| None` | |
> | `code_version` | `int \| None` | |
> | `generate_script_on_terminal` | `bool \| None` | |
> | `run_sequentially` | `bool \| None` | |
> | `sequential_key` | `str \| None` | |
> | `folder_id` | `str \| None` | |
> | `import_error` | `str \| None` | |
> | `created_by` | `str \| None` | |
> | `edited_by` | `str \| None` | |
> | `copilot_authored` | `bool \| None` | |
> | `created_at` | `datetime` | |
> | `modified_at` | `datetime` | |
> | `deleted_at` | `datetime \| None` | |
> | `agent_id` | `str \| None` | Alias of `workflow_permanent_id` — the stable agent identifier (starts with `wpid_`). |

**Example**

```python Python theme={null}
import asyncio

from skyvern import Skyvern


async def main() -> None:
    skyvern = Skyvern(api_key="YOUR_API_KEY")
    result = await skyvern.update_workflow_folder(
        workflow_permanent_id="wpid_123",
        folder_id="fld_123",
    )
    print(result)


asyncio.run(main())
```

```typescript TypeScript theme={null}
import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.updateWorkflowFolder("wpid_123", { folder_id: "fld_123" });
console.log(result);
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.