---
title: "Create a folder in the media library"
canonical: "https://bird.com/docs/api/reference/create-asset-folder"
---

# Create a folder in the media library

`POST /v1/asset-folders`

Creates a folder in the workspace's media library. Omit `parent_id` to create it
at the top level, or name another folder to nest it up to 10 levels deep.
A workspace supports up to 1,000 active folders and 10,000 retained folders,
including deleted folders. Deleting a folder frees an active slot but does
not release retained capacity.

Folders organize the library for the people browsing it. They are never part of
an asset's URL, so filing an asset, renaming a folder, or moving a whole branch
leaves every message that already embeds those assets rendering exactly as it did.

## Code samples

**TypeScript**

```ts
const folder = await bird.assets.folders.create({ name: "Campaign images" });
console.log(folder.id);
```

Examples: [TypeScript](/docs/api/reference/create-asset-folder.ts.md) · [Python](/docs/api/reference/create-asset-folder.py.md) · [Go](/docs/api/reference/create-asset-folder.go.md) · [PHP](/docs/api/reference/create-asset-folder.php.md) · [CLI](/docs/api/reference/create-asset-folder.cli.md) · [MCP](/docs/api/reference/create-asset-folder.mcp.md) · [cURL](/docs/api/reference/create-asset-folder.curl.md)

## Example response `201`

```json
{
  "created_at": "2026-05-20T09:14:52Z",
  "updated_at": "2026-05-25T16:42:01Z",
  "id": "asf_01krdgeqcxet5s7t44vh8rt9mg",
  "parent_id": "asf_01krdgeqcxet5s7t44vh8rt9mg"
}
```

## Request body

- `name` (string, required): The folder's display name. Must be unique among folders sharing the same parent, compared without regard to case. Cannot contain `/`.
- `parent_id` (nullable string): The folder to create this one in. Omit it, or send null, to create the folder at the top level of the library.

## Response body

- `created_at` (string, required)
- `updated_at` (string, required)
- `id` (string, required)
- `name` (string, required): The folder's display name. Unique among folders sharing the same parent, compared without regard to case.
- `parent_id` (nullable string, required): The folder this one sits in, or null when it sits at the top level of the library.
- `path` (string, required): The folder's location written out from the top level, such as `/Marketing/Logos`. Provided so a caller can display a folder without walking its parents.

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
