---
title: "Create a Blob store"
method: POST
path: "/storage/stores/blob"
tags: ["storage"]
---

# Create a Blob store

`POST /storage/stores/blob`

## Request body

- object
  - `name` string, required
  - `region` 'arn1' | 'bom1' | 'cdg1' | 'cle1' | 'cpt1' | 'dub1' | 'dxb1' | 'fra1' | 'gru1' | 'hkg1' | 'hnd1' | 'iad1' | 'icn1' | 'kix1' | 'lhr1' | 'pdx1' | 'sfo1' | 'sin1' | 'syd1' | 'yul1'
  - `access` 'public' | 'private'
  - `projectId` string

## Response `200`

- object
  - `store` object, nullable, required
    - `projectsMetadata` object[], required
      - `id` string, required
      - `projectId` string, required
      - `name` string, required
      - `framework` 'actix-web' | 'angular' | 'ash' | 'astro' | 'axum' | 'blitzjs' | 'brunch' | 'bun' | 'container' | 'create-react-app' | 'django' | 'docusaurus' | 'docusaurus-2' | 'dojo' | 'eleventy' | 'elysia' | 'ember' | 'eve' | 'express' | 'fastapi' | 'fasthtml' | 'fastify' | 'flask' | 'gatsby' | 'go' | 'gridsome' | 'h3' | 'hexo' | 'hono' | 'hugo' | 'hydrogen' | 'ionic-angular' | 'ionic-react' | 'jekyll' | 'koa' | 'mastra' | 'middleman' | 'nestjs' | 'nextjs' | 'nitro' | 'node' | 'nuxtjs' | 'parcel' | 'polymer' | 'preact' | 'python' | 'react-router' | 'redwoodjs' | 'remix' | 'ruby' | 'rust' | 'saber' | 'sanity' | 'sanity-v2' | 'sapper' | 'scully' | 'services' | 'solidstart' | 'solidstart-1' | 'stencil' | 'storybook' | 'svelte' | 'sveltekit' | 'sveltekit-1' | 'tanstack-start' | 'tanstack-start-lovable' | 'umijs' | 'vite' | 'vitepress' | 'vue' | 'vuepress' | 'xmcp' | 'zola' | 'null', nullable
      - `latestDeployment` string
      - `environments` string[], required
      - `envVarPrefix` string, nullable, required
      - `environmentVariables` string[], required
      - `deployments` object
        - `required` false | true, required
        - `actions` object[], required
          - `slug` string, required
          - `environments` string[], required
      - `makeEnvVarsSensitive` false | true
    - `projectFilter` object
      - `git` object
        - `providers` union, required
          - string[]
          - '*'
        - `owners` string[]
        - `repos` string[]
    - `totalConnectedProjects` number
    - `usageQuotaExceeded` false | true, required
    - `status` 'available' | 'error' | 'initializing' | 'limits-exceeded-suspended' | 'limits-exceeded-suspended-store-count' | 'onboarding' | 'suspended' | 'uninstalled' | 'null', nullable, required
    - `access` 'private' | 'public'
    - `kind` 'project-default' | 'user-created' — A project-default store is a private blob store that is lazily created per-project, uses OIDC auth instead of read-write tokens, and cannot be modified through standard store mutation APIs. Undefined for legacy stores.
    - `projectId` string — The project this store is scoped to. Set for project-default stores and user-created stores with enforced project association.
    - `size` number, required
    - `count` number, required
    - `region` 'arn1' | 'bom1' | 'cdg1' | 'cle1' | 'cpt1' | 'dub1' | 'dxb1' | 'fra1' | 'gru1' | 'hkg1' | 'hnd1' | 'iad1' | 'icn1' | 'kix1' | 'lhr1' | 'pdx1' | 'sfo1' | 'sin1' | 'syd1' | 'yul1', required
    - `isTokenExpired` false | true, required

## Other responses

- `400` — One of the provided values in the request body is invalid.
- `401` — The request is not authorized.
- `402` — The account is missing a payment so payment method must be updated
- `403` — You do not have permission to access this resource.
- `404`
- `409`
- `410`
- `429`

---

[API](https://skmtc.net/vercel/apis/api.md) · [All operations](https://skmtc.net/vercel/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vercel/api/versions/61d1ba3f6dac/schema)
