projects

Update an existing project

Changed on

Update the fields of a project using either its name or id.

patch/v9/projects/{idOrName}

Request

  • Base URL: https://api.vercel.com
  • URL: https://api.vercel.com/v9/projects/{idOrName}
  • Auth: HTTP bearer

Path parameters

idOrNamestring required

The unique project identifier or the project name

Example:prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB

Query parameters

teamIdstring
Example:team_1a2b3c4d5e6f7g8h9i0j1k2l

The Team identifier to perform the request on behalf of.

slugstring
Example:my-team-url-slug

The Team slug to perform the request on behalf of.

Request body

autoExposeSystemEnvsboolean
autoAssignCustomDomainsboolean
autoAssignCustomDomainsUpdatedBystring
buildCommandstring nullable

The build command for this project. When null is used this value will be automatically detected

commandForIgnoringBuildStepstring nullable
customerSupportCodeVisibilityboolean

Specifies whether customer support can see git source for a deployment

devCommandstring nullable

The dev command for this project. When null is used this value will be automatically detected

directoryListingboolean
framework'null' | 'container' | 'blitzjs' | 'nextjs' | 'gatsby' | 'remix' | 'react-router' | 'astro' | 'hexo' | 'eleventy' | 'docusaurus-2' | 'docusaurus' | 'preact' | 'solidstart-1' | 'solidstart' | 'dojo' | 'ember' | 'vue' | 'scully' | 'ionic-angular' | 'angular' | 'polymer' | 'svelte' | 'sveltekit' | 'sveltekit-1' | 'ionic-react' | 'create-react-app' | 'gridsome' | 'umijs' | 'sapper' | 'saber' | 'stencil' | 'nuxtjs' | 'redwoodjs' | 'hugo' | 'jekyll' | 'brunch' | 'middleman' | 'zola' | 'hydrogen' | 'vite' | 'tanstack-start' | 'tanstack-start-lovable' | 'vitepress' | 'vuepress' | 'parcel' | 'fastapi' | 'flask' | 'fasthtml' | 'django' | 'ash' | 'factory-eve' | 'eve' | 'sanity' | 'sanity-v2' | 'storybook' | 'nitro' | 'hono' | 'express' | 'h3' | 'koa' | 'nestjs' | 'elysia' | 'fastify' | 'xmcp' | 'python' | 'ruby' | 'rust' | 'axum' | 'actix-web' | 'bun' | 'node' | 'go' | 'services' | 'mastra' nullable

The framework that is being used for this project. When null is used no framework is selected

gitForkProtectionboolean

Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed

gitLFSboolean

Specifies whether Git LFS is enabled for this project.

protectedSourcemapsboolean

Specifies whether sourcemaps are protected and require authentication to access.

installCommandstring nullable

The install command for this project. When null is used this value will be automatically detected

namestring

The desired name for the project

nodeVersion'26.x' | '24.x' | '22.x' | '20.x' | '18.x' | '16.x' | '14.x' | '12.x' | '10.x'
outputDirectorystring nullable

The output directory of the project. When null is used this value will be automatically detected

previewDeploymentsDisabledboolean nullable

Specifies whether preview deployments are disabled for this project.

previewDeploymentSuffixstring nullable

Custom domain suffix for preview deployments. Takes precedence over team-level suffix. Must be a domain owned by the team.

publicSourceboolean nullable

Deprecated. Accepted for backwards compatibility but ignored.

rootDirectorystring nullable

The name of a directory or relative path to the source code of your project. When null is used it will default to the project root

serverlessFunctionRegionstring nullable

The region to deploy Serverless Functions in this project

serverlessFunctionZeroConfigFailoverboolean

Specifies whether Zero Config Failover is enabled for this project.

skewProtectionBoundaryAtinteger

Deployments created before this absolute datetime have Skew Protection disabled. Value is in milliseconds since epoch to match "createdAt" fields.

skewProtectionMaxAgeinteger

Deployments created before this rolling window have Skew Protection disabled. Value is in seconds to match "revalidate" fields.

skewProtectionAllowedDomainsstring[]

Cross-site domains allowed to fetch skew-protected assets (hostnames, optionally with leading wildcard like *.example.com).

skipGitConnectDuringLinkboolean

Opts-out of the message prompting a CLI user to connect a Git repository in vercel link.

sourceFilesOutsideRootDirectoryboolean

Indicates if there are source files outside of the root directory

enablePreviewFeedbackboolean nullable

Opt-in to preview toolbar on the project level

enableProductionFeedbackboolean nullable

Opt-in to production toolbar on the project level

enableAffectedProjectsDeploymentsboolean

Opt-in to skip deployments when there are no changes to the root directory and its dependencies

enableExternalRewriteCachingboolean

Specifies whether external rewrite caching is enabled for this project.

Example request

{
  "name": "a-project-name",
  "sandbox": {
    "region": "iad1",
    "failoverRegions": [
      "sfo1",
      "cle1"
    ]
  }
}

Response

The project was successfully updated

accountIdstring required
appliedCve55182Migrationfalse | true
autoAssignCustomDomainsfalse | true
autoAssignCustomDomainsUpdatedBystring
autoExposeSystemEnvsfalse | true
avatarstring nullable
avatarDarkModestring nullable
buildCommandstring nullable
commandForIgnoringBuildStepstring nullable
concurrencyBucketNamestring
connectBuildsEnabledfalse | true
connectConfigurationIdstring nullable
createdAtnumber
customerSupportCodeVisibilityfalse | true
devCommandstring nullable
directoryListingfalse | true required
enableAffectedProjectsDeploymentsfalse | true
enableExternalRewriteCachingfalse | true
enablePreviewFeedbackfalse | true | null nullable
enableProductionFeedbackfalse | true | null nullable
framework'actix-web' | 'angular' | 'ash' | 'astro' | 'axum' | 'blitzjs' | 'brunch' | 'bun' | 'container' | 'create-react-app' | 'django' | 'docusaurus' | 'docusaurus-2' | 'dojo' | 'eleventy' | 'elysia' | 'ember' | 'eve' | 'express' | 'factory-eve' | '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
gitForkProtectionfalse | true
gitLFSfalse | true
hasActiveBranchesfalse | true
hasDeploymentsfalse | true
idstring required
installCommandstring nullable
lastRollbackTargetobject nullable
livefalse | true
namestring required
nodeVersion'10.x' | '12.x' | '14.x' | '16.x' | '18.x' | '20.x' | '22.x' | '24.x' | '26.x' | '8.10.x' required
outputDirectorystring nullable
passiveConnectConfigurationIdstring nullable
pausedfalse | true
productionDeploymentsFastLanefalse | true
protectedSourcemapsfalse | true
protectionBypassobject
rootDirectorystring nullable
serverlessFunctionZeroConfigFailoverfalse | true
skewProtectionAllowedDomainsstring[]
skewProtectionBoundaryAtnumber
skewProtectionMaxAgenumber
skipGitConnectDuringLinkfalse | true
sourceFilesOutsideRootDirectoryfalse | true
targetsobject
tier'priority'
transferCompletedAtnumber
transferredFromAccountIdstring
transferStartedAtnumber
transferToAccountIdstring
updatedAtnumber
v0false | true
v0Createdfalse | true

Example response

{
  "crons": {
    "definitions": [
      {
        "host": "vercel.com",
        "path": "/api/crons/sync-something?hello=world",
        "schedule": "0 0 * * *"
      }
    ]
  },
  "rollingRelease": {
    "gate": {
      "checks": [
        {
          "excludePaths": [
            "/api/health"
          ],
          "excludeStatusCodes": [
            503
          ],
          "ingestWatermarkSeconds": 30,
          "significanceLevel": 0.05
        }
      ],
      "failureThreshold": 3,
      "windowSize": 5
    },
    "stages": [
      {
        "duration": 600,
        "targetPercentage": 25
      }
    ],
    "target": "production"
  }
}

Changes