# Storage (/docs/storage)

> For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL.

S3-compatible object-store buckets that live inside your Prisma project.

Location: Storage

Object Store buckets are S3-compatible file storage that lives inside a Prisma project, next to its Prisma Postgres databases and Compute apps. You manage buckets from the [Console](https://console.prisma.io/?utm_source=docs\&utm_medium=content\&utm_content=storage), the [CLI](https://www.prisma.io/docs/cli/v8/bucket), or the [REST API](https://www.prisma.io/docs/rest-api/endpoints/buckets/get-buckets); your app reads and writes objects with any S3 client or SDK.

A bucket belongs to a project. At creation you can associate it with a branch (by branch ID or git branch name); omit both and it attaches to the project's default branch. Projects start with no buckets.

## Names [#names]

A bucket has two names:

1. A display name you choose (1-100 characters, auto-generated when omitted). It appears in the Console, CLI, and API.
2. A provider-assigned S3 bucket name, returned as `providerName` by the API and as `bucketName` with new access keys. This is the value S3 clients use. It is opaque and never derived from the display name.

There is no rename: the API has no update endpoint for buckets.

## Access keys [#access-keys]

Access is through bucket-scoped access keys. A key has a role, `read` or `read_write`; a write with a `read` key fails with `AccessDenied`. Keys are scoped to their bucket only: a leaked key cannot reach any other bucket.

Creating a key returns everything an S3 client needs: `accessKeyId`, `secretAccessKey`, `endpoint`, and `bucketName`. The `secretAccessKey` is returned exactly once and never stored; copy it immediately. If you lose it, revoke the key and create a new one. Deleting a key revokes it immediately.

Use the `endpoint` value returned with the key rather than hardcoding a host.

## Using a bucket from your app [#using-a-bucket-from-your-app]

Any S3 client or SDK works. On [Prisma Compute](https://www.prisma.io/docs/compute), Bun's built-in S3 client reads `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, and `S3_SECRET_ACCESS_KEY` from the environment, so uploads and presigned GET URLs work with no explicit client configuration. See [Object storage on Compute](https://www.prisma.io/docs/compute/object-storage) for a worked example, and [Object storage in Composer](https://www.prisma.io/docs/composer/object-storage) for the declarative `bucket()` resource with local stand-in buckets in `composer dev`. For using buckets during development, see [Local storage](https://www.prisma.io/docs/local-development/storage).

## Managing buckets [#managing-buckets]

From the CLI (see the [`bucket` reference](https://www.prisma.io/docs/cli/v8/bucket) for details):

  

#### bun

```bash
bunx prisma@next bucket create --name my-bucket
bunx prisma@next bucket key create <bucket-id>
```

#### pnpm

```bash
pnpm dlx prisma@next bucket create --name my-bucket
pnpm dlx prisma@next bucket key create <bucket-id>
```

#### yarn

```bash
yarn dlx prisma@next bucket create --name my-bucket
yarn dlx prisma@next bucket key create <bucket-id>
```

#### npm

```bash
npx prisma@next bucket create --name my-bucket
npx prisma@next bucket key create <bucket-id>
```

| Command                                  | Purpose                                                 |
| ---------------------------------------- | ------------------------------------------------------- |
| `bucket list`                            | List object-store buckets                               |
| `bucket create`                          | Create a bucket (`--name` sets the display name)        |
| `bucket delete <bucket-id>`              | Delete a bucket and all its access keys                 |
| `bucket key list <bucket-id>`            | List access keys for a bucket                           |
| `bucket key create <bucket-id>`          | Create an access key and print its one-time credentials |
| `bucket key delete <bucket-id> <key-id>` | Revoke and delete an access key                         |

The [REST API](https://www.prisma.io/docs/rest-api/endpoints/buckets/get-buckets) exposes the same operations: list, create, get, and delete buckets, and list, create, and delete access keys. Bucket creation is synchronous; the response comes back with `"status": "ready"`. The Prisma MCP server also carries bucket tools (`list_object_store_buckets`, `create_object_store_bucket`, `delete_object_store_bucket`, `create_object_store_bucket_key`, `delete_object_store_bucket_key`) for AI agents.

In the Console, each bucket has a file browser with upload, download, and per-object delete, a keys page with a reveal-once credentials dialog, and a settings page for deletion with type-the-name confirmation.

## Deleting a bucket [#deleting-a-bucket]

Deleting a bucket permanently removes the bucket, all objects stored in it, and all its access keys in one call. It succeeds on a non-empty bucket and cannot be undone.

## Pricing [#pricing]

Bucket pricing and plan limits are not published yet.

## Related pages

- [`Build faster with Prisma + AI`](https://www.prisma.io/docs/ai): Build faster with Prisma and AI coding tools like Cursor, Codex, and ChatGPT
- [`Console`](https://www.prisma.io/docs/console): Learn how to use the Console to manage and integrate Prisma products into your application.
- [`Deploy the full Prisma stack`](https://www.prisma.io/docs/full-stack-tutorial): A single tutorial from empty directory to live URL, with Prisma 8, Prisma Postgres, and Prisma Compute.
- [`Guides`](https://www.prisma.io/docs/guides): A collection of guides for various tasks and workflows
- [`Introduction to Prisma 8`](https://www.prisma.io/docs/v8): Prisma 8 is the next major version of Prisma ORM, available as a Release Candidate.