---
title: "Get a deployment by ID or URL"
method: GET
path: "/v13/deployments/{idOrUrl}"
tags: ["deployments"]
---

# Get a deployment by ID or URL

`GET /v13/deployments/{idOrUrl}`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v13/deployments/{idOrUrl}`
- Auth: HTTP bearer

Retrieves information for a deployment either by supplying its ID (`id` property) or Hostname (`url` property). Additional details will be included when the authenticated user or team is an owner of the deployment.

## Path parameters

- `idOrUrl` string, required: The unique identifier or hostname of the deployment.

## Query parameters

- `withGitRepoInfo` string: When `true`, the response includes the `gitSource` object with the commit SHA, branch name, and connected repository metadata. Defaults to `false`.
- `teamId` string
- `slug` string

## Response `200`

Returns a reduced view of the deployment with public information only. Private fields are omitted when the requester is not the deployment owner.
Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld.

- union
  - object: Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld.
    - `alias` string[]
    - `aliasAssigned` false | true, required
    - `aliasError` object, nullable: An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`
      - `code` string, required
      - `message` string, required
    - `aliasWarning` object, nullable
      - `action` string
      - `code` string, required
      - `link` string
      - `message` string, required
    - `duration` object, required
      - `endTime` number: Unix timestamp in milliseconds when the build container exited.
      - `endTimeCapped` number: Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`.
      - `startTime` number: Unix timestamp in milliseconds when the deployment entered BUILDING.
      - `timeForBilling` number: Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum.
      - `timeToContainerExit` number: Milliseconds from entering BUILDING until the build container exited, without the billing cap.
      - `timeToContainerExitCapped` number: Build-container duration in milliseconds, capped at 45 minutes and without billing rounding.
      - `timeToReady` number: Milliseconds from entering BUILDING until the deployment reached its current ready state.
    - `errorCode` string
    - `errorMessage` string, nullable
    - `id` string, required: A string holding the unique ID of the deployment
    - `readyState` 'BLOCKED' | 'BUILDING' | 'CANCELED' | 'ERROR' | 'INITIALIZING' | 'QUEUED' | 'READY', required: The state of the deployment depending on the process of deploying, or if it is ready or in an error state
    - `target` 'production' | 'staging' | 'null', nullable: If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment.
  - object
    - `alias` string[]: A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation
    - `aliasAssigned` false | true, required: A boolean that will be true when the aliases from the alias property were assigned successfully
    - `aliasAssignedAt` union
      - number
      - false | true
    - `aliasError` object, nullable: An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`
      - `code` string, required
      - `message` string, required
    - `aliasFinal` string, nullable
    - `aliasWarning` object, nullable
      - `action` string
      - `code` string, required
      - `link` string
      - `message` string, required
    - `alwaysRefuseToBuild` false | true
    - `atproto` union
      - object
        - `enabled` false, required
      - object
        - `enabled` true, required
        - `subscription` object, required
          - `collections` string[], required
          - `dids` string[]
          - `kinds` string[]
          - `path` string, required
    - `attribution` object: Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled.
      - `commitMeta` object: Commit metadata from the git commit author
        - `email` string: Email from git commit author
        - `isVerified` false | true: Whether the commit was signed/verified (GitHub only, others return undefined)
        - `name` string: Name from git commit author
      - `gitUser` object: Git provider user associated with the commit author email (only set if resolved)
        - `id` union, required
          - string
          - number
        - `login` string, required: Git provider username/login
        - `provider` string: The git provider (github, gitlab, bitbucket)
        - `type` string: User type
      - `vercelUser` object: Vercel user linked to the git provider account (only set if resolved)
        - `id` string, required: Vercel user ID
        - `teamRoles` string[]: Team roles at time of deployment
        - `username` string, required: Vercel username
    - `autoAssignCustomDomains` false | true: applies to custom domains only, defaults to `true`
    - `automaticAliases` string[]
    - `bootedAt` number, required
    - `build` object, required
      - `env` string[], required
    - `buildArtifactUrls` string[]
    - `buildContainerFinishedAt` number: Since April 2025 it necessary for On-Demand Concurrency Minutes calculation
    - `buildErrorAt` number
    - `buildingAt` number, required
    - `builds` object[]
      - `config` object
      - `src` string
      - `use` string, required
    - `buildSkipped` false | true, required
    - `canceledAt` number
    - `checks` object
      - `deployment-alias` object, required
        - `completedAt` number
        - `startedAt` number, required
        - `state` 'failed' | 'pending' | 'succeeded', required
    - `checksConclusion` 'canceled' | 'failed' | 'skipped' | 'succeeded'
    - `checksState` 'completed' | 'registered' | 'running'
    - `config` object: Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured
      - `functionMemoryType` 'performance' | 'performance_xl' | 'standard' | 'standard_legacy', required
      - `functionTimeout` number, nullable, required
      - `functionType` 'fluid' | 'standard', required
      - `isUsingActiveCPU` false | true
      - `resourceConfig` object: Build resource configuration snapshot for this deployment.
        - `buildQueue` object: Build resource configuration snapshot for this deployment.
          - `configuration` 'SKIP_NAMESPACE_QUEUE' | 'WAIT_FOR_NAMESPACE_QUEUE': Build resource configuration snapshot for this deployment.
        - `elasticConcurrency` 'PROJECT_SETTING' | 'SKIP_QUEUE' | 'TEAM_SETTING': When elastic concurrency is used for this deployment, a value is set. The value tells the reason where the setting was coming from. - TEAM_SETTING: Inherited from team settings - PROJECT_SETTING: Inherited from project settings - SKIP_QUEUE: Manually triggered by user to skip the queues
        - `buildMachine` object
          - `purchaseType` '14cpu-28gb' | 'basic' | 'enhanced' | 'standard' | 'turbo' | 'null', nullable: Machine type that was used for the build.
      - `secureComputeFallbackRegion` string, nullable, required
      - `secureComputePrimaryRegion` string, nullable, required
      - `version` number
    - `connectBuildsEnabled` false | true
    - `connectConfigurationId` string
    - `createdAt` number, required: A number containing the date when the deployment was created in milliseconds
    - `createdIn` string, required
    - `creator` object, required: Information about the deployment creator
      - `avatar` string: The avatar of the user that created the deployment
      - `type` 'app' | 'integration' | 'project' | 'system' | 'user': Principal type of the deployment creator.
      - `uid` string, required: Stable creator id across principal types (user id, app id, integration configuration id, or `system`).
      - `username` string: The username of the user that created the deployment
    - `crons` object[]
      - `path` string, required
      - `schedule` string, required
    - `customEnvironment` union
      - object: If the deployment was created using a Custom Environment, then this property contains information regarding the environment used.
        - `branchMatcher` object: Configuration for matching git branches to this environment
          - `pattern` string, required: The pattern to match against branch names
          - `type` 'endsWith' | 'equals' | 'startsWith', required: The type of matching to perform
        - `createdAt` number, required: Timestamp when the environment was created
        - `currentDeploymentAliases` string[]: List of aliases for the current deployment
        - `description` string: Optional description of the environment's purpose
        - `domains` object[]: List of domains associated with this environment
          - `apexName` string, required
          - `createdAt` number
          - `customEnvironmentId` string, nullable
          - `gitBranch` string, nullable
          - `name` string, required
          - `projectId` string, required
          - `redirect` string, nullable
          - `redirectStatusCode` 301 | 302 | 307 | 308 | null, nullable
          - `updatedAt` number
          - `verification` object[]: A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`.
            - `domain` string, required
            - `reason` string, required
            - `type` string, required
            - `value` string, required
          - `verified` false | true, required: `true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed.
        - `id` string, required: Unique identifier for the custom environment (format: env_*)
        - `slug` string, required: URL-friendly name of the environment
        - `type` 'development' | 'preview' | 'production', required: The type of environment (production, preview, or development)
        - `updatedAt` number, required: Timestamp when the environment was last updated
      - object: If the deployment was created using a Custom Environment, then this property contains information regarding the environment used.
        - `id` string, required
    - `defaultRoute` string: Computed field that is only available for deployments with a microfrontend configuration.
    - `deletedAt` number, nullable: A number containing the date when the deployment was deleted at milliseconds
    - `duration` object, required
      - `endTime` number: Unix timestamp in milliseconds when the build container exited.
      - `endTimeCapped` number: Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`.
      - `startTime` number: Unix timestamp in milliseconds when the deployment entered BUILDING.
      - `timeForBilling` number: Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum.
      - `timeToContainerExit` number: Milliseconds from entering BUILDING until the build container exited, without the billing cap.
      - `timeToContainerExitCapped` number: Build-container duration in milliseconds, capped at 45 minutes and without billing rounding.
      - `timeToReady` number: Milliseconds from entering BUILDING until the deployment reached its current ready state.
    - `env` string[], required
    - `errorCode` string
    - `errorLink` string
    - `errorMessage` string, nullable
    - `errorStep` string
    - `flags` union
      - object: Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags.
        - `definitions` object, required
      - object[]: Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags.
    - `functions` object, nullable
    - `gitRepo` union
      - object
        - `defaultBranch` string, required
        - `name` string, required
        - `namespace` string, required
        - `ownerType` 'team' | 'user', required
        - `path` string, required
        - `private` false | true, required
        - `projectId` number, required
        - `type` 'gitlab', required
        - `url` string, required
      - object
        - `defaultBranch` string, required
        - `name` string, required
        - `org` string, required
        - `ownerType` 'team' | 'user', required
        - `path` string, required
        - `private` false | true, required
        - `repo` string, required
        - `repoId` number, required
        - `repoOwnerId` number, required
        - `type` 'github', required
      - object
        - `defaultBranch` string, required
        - `name` string, required
        - `owner` string, required
        - `ownerType` 'team' | 'user', required
        - `path` string, required
        - `private` false | true, required
        - `repoUuid` string, required
        - `slug` string, required
        - `type` 'bitbucket', required
        - `workspaceUuid` string, required
      - object
        - `defaultBranch` string, required
        - `name` string, required
        - `org` string, required
        - `ownerType` 'team' | 'user', required
        - `path` string, required
        - `private` false | true, required
        - `repo` string, required
        - `type` 'vercel', required
      - object
        - `defaultBranch` string, required
        - `name` string, required
        - `owner` string, required: Owner (namespace) slug.
        - `ownerType` 'team' | 'user', required
        - `path` string, required
        - `private` false | true, required
        - `repo` string, required
        - `repoId` string, required: Origin repository id.
        - `type` 'cursor-origin', required
    - `gitSource` union
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github', required
      - object
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github', required
      - object
        - `host` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github-custom-host', required
      - object
        - `host` string, required
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github-custom-host', required
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github-limited', required
      - object
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github-limited', required
      - object
        - `prId` number, nullable
        - `projectId` union, required
          - string
          - number
        - `ref` string, nullable
        - `sha` string
        - `type` 'gitlab', required
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoUuid` string, required
        - `sha` string
        - `type` 'bitbucket', required
        - `workspaceUuid` string
      - object
        - `owner` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `sha` string
        - `slug` string, required
        - `type` 'bitbucket', required
      - object
        - `commitMetadata` object
          - `author` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `committer` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `message` string, required
        - `org` string
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string
        - `repoId` string, required
        - `repoPushedAt` number
        - `sha` string, required
        - `type` 'vercel', required
      - object
        - `owner` string: Owner (namespace) slug.
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string
        - `repoId` string, required: Origin repository id.
        - `sha` string
        - `type` 'cursor-origin', required
      - object: Allows custom git sources (local folder mounted to the container) in test mode
        - `gitUrl` string, required
        - `ref` string, required
        - `sha` string, required
        - `type` 'custom', required
      - object
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github', required
      - object
        - `host` string, required
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github-custom-host', required
      - object
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github-limited', required
      - object
        - `projectId` number, required
        - `ref` string, required
        - `sha` string, required
        - `type` 'gitlab', required
      - object
        - `owner` string
        - `ref` string, required
        - `repoUuid` string, required
        - `sha` string, required
        - `slug` string
        - `type` 'bitbucket', required
        - `workspaceUuid` string, required
      - object
        - `commitMetadata` object
          - `author` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `committer` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `message` string, required
        - `org` string, required
        - `ref` string, required
        - `repo` string, required
        - `repoId` string
        - `repoPushedAt` number
        - `sha` string, required
        - `type` 'vercel', required
      - object
        - `owner` string, required
        - `ref` string, required
        - `repo` string, required
        - `repoId` string, required
        - `sha` string, required
        - `type` 'cursor-origin', required
    - `id` string, required: A string holding the unique ID of the deployment
    - `images` object
      - `contentDispositionType` 'attachment' | 'inline'
      - `contentSecurityPolicy` string
      - `dangerouslyAllowSVG` false | true
      - `domains` string[]
      - `formats` string[]
      - `localPatterns` object[]
        - `pathname` string: Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments.
        - `search` string: Can be literal query string such as `?v=1` or empty string meaning no query string.
      - `minimumCacheTTL` number
      - `qualities` number[]
      - `remotePatterns` object[]
        - `hostname` string, required: Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains.
        - `pathname` string: Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments.
        - `port` string: Can be literal port such as `8080` or empty string meaning no port.
        - `protocol` 'http' | 'https': Must be `http` or `https`.
        - `search` string: Can be literal query string such as `?v=1` or empty string meaning no query string.
      - `sizes` number[]
    - `initReadyAt` number
    - `inspectorUrl` string, nullable, required
    - `integrations` object
      - `claimedAt` number
      - `completedAt` number
      - `skippedAt` number
      - `skippedBy` string
      - `startedAt` number, required
      - `status` 'error' | 'pending' | 'ready' | 'skipped' | 'timeout', required
    - `isFirstBranchDeployment` false | true
    - `isInConcurrentBuildsQueue` false | true, required
    - `isInstantStatic` false | true: Whether this deployment completed through the instant static fast path.
    - `isInSystemBuildsQueue` false | true, required
    - `lambdas` object[]
      - `createdAt` number
      - `entrypoint` string, nullable
      - `id` string, required
      - `readyState` 'BUILDING' | 'ERROR' | 'INITIALIZING' | 'READY'
      - `readyStateAt` number
      - `output` object[], required
        - `functionName` string, required
        - `path` string, required
    - `manualProvisioning` object: Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called.
      - `completedAt` number: Timestamp when manual provisioning completed
      - `state` 'COMPLETE' | 'PENDING' | 'TIMEOUT', required: Current provisioning state
    - `meta` object, required
    - `microfrontends` union
      - object
        - `defaultAppProjectName` string, required: The project name of the default app of this deployment's microfrontends group.
        - `defaultRoute` string: A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI.
        - `groupIds` string[], required: The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together.
        - `isDefaultApp` false
      - object
        - `defaultAppProjectName` string, required: The project name of the default app of this deployment's microfrontends group.
        - `defaultRoute` string: A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI.
        - `groupIds` string[], required: The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together.
        - `isDefaultApp` true, required
        - `mfeConfigUploadState` 'no_config' | 'success' | 'waiting_on_build': The result of the microfrontends config upload during deployment creation / build. Only set for default app deployments. The config upload is attempted during deployment create, and then again during the build. If the config is not in the root directory, or the deployment is prebuilt, the config cannot be uploaded during deployment create. The upload during deployment build finds the config even if it's not in the root directory, as it has access to all files. Uploading the config during create is ideal, as then all child deployments are guaranteed to have access to the default app deployment config even if the default app has not yet started building. If the config is not uploaded, the child app will show as building until the config has been uploaded during the default app build. - `success` - The config was uploaded successfully, either when the deployment was created or during the build. - `waiting_on_build` - The config could not be uploaded during deployment create, will be attempted again during the build. - `no_config` - No config was found. Only set once the build has not found the config in any of the deployment's files. - `undefined` - Legacy deployments, or there was an error uploading the config during deployment create.
    - `monorepoManager` string, nullable
    - `name` string, required: The name of the project associated with the deployment at the time that the deployment was created
    - `nodeVersion` '10.x' | '12.x' | '14.x' | '16.x' | '18.x' | '20.x' | '22.x' | '24.x' | '26.x' | '8.10.x': If set it overrides the `projectSettings.nodeVersion` for this deployment.
    - `oidcTokenClaims` object
      - `aud` string, required
      - `custom_environment_id` string
      - `deployment_id` string
      - `environment` string, required
      - `iss` string, required
      - `mfe_group_ids` string[]
      - `owner` string, required
      - `owner_id` string, required
      - `plan` string
      - `project` string, required
      - `project_id` string, required
      - `scope` string, required
      - `sub` string, required
    - `oomReport` 'out-of-memory'
    - `originCacheRegion` string
    - `ownerId` string, required
    - `passiveConnectConfigurationId` string: Since November 2023 this field defines a Secure Compute network that will only be used to deploy passive lambdas to (as in passiveRegions)
    - `passiveRegions` string[]: Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service
    - `plan` 'enterprise' | 'hobby' | 'pro', required
    - `platform` object: Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)
      - `creator` object, required: The user on the external platform who triggered the deployment.
        - `avatar` string: URL of the platform user's avatar image.
        - `name` string, required: Display name of the platform user.
      - `meta` object: Arbitrary key-value metadata provided by the platform.
      - `origin` object, required: Reference back to the entity on the platform that initiated the deployment.
        - `type` 'id' | 'url', required: Whether the value is an opaque identifier or a URL.
        - `value` string, required: The identifier or URL pointing to the originating entity.
      - `source` object, required: The external platform that created the deployment (e.g. its display name).
        - `name` string, required: Display name of the platform.
    - `prebuilt` false | true
    - `previewCommentsEnabled` false | true: Whether or not preview comments are enabled for the deployment
    - `project` object: The public project information associated with the deployment.
      - `framework` string, nullable
      - `id` string, required
      - `name` string, required
    - `projectId` string, required
    - `projectSettings` object, required
      - `buildCommand` string, nullable
      - `commandForIgnoringBuildStep` string, nullable
      - `devCommand` string, 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
      - `installCommand` string, nullable
      - `nodeVersion` '10.x' | '12.x' | '14.x' | '16.x' | '18.x' | '20.x' | '22.x' | '24.x' | '26.x' | '8.10.x'
      - `outputDirectory` string, nullable
      - `speedInsights` object
        - `canceledAt` number
        - `dataReceivedAt` number: When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads "first free data point observed", not necessarily "first ever".
        - `disabledAt` number
        - `enabledAt` number
        - `hasData` false | true
        - `id` string, required
        - `paidAt` number
      - `vercelFlags` object: Vercel Flags activation metadata copied from the project at deployment creation.
        - `enabledAt` number
      - `webAnalytics` object
        - `canceledAt` number
        - `disabledAt` number
        - `enabledAt` number
        - `hasData` true
        - `id` string, required
    - `public` false | true, required: A boolean representing if the deployment is public or not. By default this is `false`
    - `ready` number
    - `readyState` 'BLOCKED' | 'BUILDING' | 'CANCELED' | 'ERROR' | 'INITIALIZING' | 'QUEUED' | 'READY', required: The state of the deployment depending on the process of deploying, or if it is ready or in an error state
    - `readyStateReason` string
    - `readySubstate` 'PROMOTED' | 'ROLLING' | 'STAGED': Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic
    - `regions` string[], required: The regions the deployment exists in
    - `resourceConfig` object
      - `buildMachine` union
        - object
          - `machineSelectionType` 'elastic', required: The build ran on an elastic machine. Drives billing.
          - `purchaseType` '14cpu-28gb' | 'basic' | 'enhanced' | 'standard' | 'turbo': Machine type purchased for this build. `basic` is the 2vCPU tier, recorded so the build pipeline can detect a basic build without consulting the project.
          - `cores` number: Build cores. Deployment creation sets the requested value; dispatch replaces it with the cores assigned by routing.
          - `defaultPurchaseType` 'basic' | 'enhanced' | 'none' | 'standard': The build machine tier included with the customer's plan. For most customers this is standard; enhanced entitlements include enhanced, while `none` means every build is billed at its purchase type.
          - `memory` number: Build memory, in MiB. Deployment creation sets the requested value; dispatch replaces it with the memory assigned by routing.
          - `selectionSource` 'deployment-override' | 'elastic-algorithm' | 'plan-default' | 'project-setting' | 'team-entitlement' | 'team-setting': The setting which selected the build machine when the deployment was created. Frozen here so later project or team changes do not rewrite its history.
        - object
          - `machineSelectionType` 'fixed': The build ran on a fixed machine. Drives billing.
          - `purchaseType` 'basic' | 'enhanced' | 'standard' | 'turbo': Machine type purchased for this build.
          - `cores` number: Build cores. Deployment creation sets the requested value; dispatch replaces it with the cores assigned by routing.
          - `defaultPurchaseType` 'basic' | 'enhanced' | 'none' | 'standard': The build machine tier included with the customer's plan. For most customers this is standard; enhanced entitlements include enhanced, while `none` means every build is billed at its purchase type.
          - `memory` number: Build memory, in MiB. Deployment creation sets the requested value; dispatch replaces it with the memory assigned by routing.
          - `selectionSource` 'deployment-override' | 'elastic-algorithm' | 'plan-default' | 'project-setting' | 'team-entitlement' | 'team-setting': The setting which selected the build machine when the deployment was created. Frozen here so later project or team changes do not rewrite its history.
    - `routes` union[], nullable, required
      - union
        - object
          - `caseSensitive` false | true
          - `check` false | true
          - `continue` false | true
          - `dest` string
          - `destination` union
            - string
            - object
              - …
          - `env` string[]
          - `has` union[]
            - union
              - …
          - `headers` object
          - `important` false | true
          - `locale` object
            - `cookie` string
            - `redirect` object
          - `methods` string[]
          - `middleware` number: A middleware index in the `middleware` key under the build result
          - `middlewarePath` string: A middleware key within the `output` key under the build result. Overrides a `middleware` definition.
          - `middlewareRawSrc` string[]: The original middleware matchers.
          - `missing` union[]
            - union
              - …
          - `mitigate` object
            - `action` 'challenge' | 'deny', required
          - `override` false | true
          - `respectOriginCacheControl` false | true
          - `source` string: Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`).
          - `src` string, required
          - `status` number
          - `statusCode` number
          - `transforms` union[]
            - union
              - …
        - object
          - `dest` string
          - `handle` 'error' | 'filesystem' | 'hit' | 'miss' | 'resource' | 'rewrite', required
          - `src` string
          - `status` number
        - object
          - `continue` false | true, required
          - `middleware` 0, required
          - `src` string, required
    - `seatBlock` object: NSNB Blocked metadata
      - `blockCode` 'COMMIT_AUTHOR_REQUIRED' | 'TEAM_ACCESS_REQUIRED', required: The NSNB decision code for the seat block. TODO: We should consolidate block types.
      - `gitProvider` 'bitbucket' | 'github' | 'gitlab': The git provider type associated with gitUserId.
      - `gitUserId` union
        - string
        - number
      - `isVerified` false | true: Determines if the user was verified during the block. In the git integration case, the commit sender was the author.
      - `userId` string: The blocked vercel user ID.
    - `services` union[]: Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime.
      - union
        - object: Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime.
          - `buildCommand` string
          - `builder` object, required
            - `config` object
              - …
            - `src` string
            - `use` string, required
          - `entrypoint` string
          - `env` object
          - `framework` string
          - `group` string
          - `handlerFunction` string
          - `installCommand` string
          - `name` string, required
          - `preDeployCommand` string
          - `routePrefix` string
          - `routePrefixSource` 'configured' | 'generated'
          - `runtime` string
          - `schedule` union
            - string
            - string[]
          - `schema` 'experimentalServices', required
          - `subdomain` string
          - `topics` union
            - string[]
            - object[]
              - …
          - `trigger` 'queue' | 'schedule' | 'workflow'
          - `type` 'cron' | 'job' | 'web' | 'worker', required
          - `workspace` string, required
        - object: Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime.
          - `bindings` object[]: Caller-side bindings to other services.
            - `env` string, required: Environment variable name that will store the generated value
            - `format` 'url', required: Generated value shape, must be `"url"`.
            - `service` string, required: Target service name from `services`.
            - `type` 'service': If present, must be `"service"` for Service-to-Service HTTP bindings.
          - `buildCommand` string
          - `builder` object, required: Builder selected by the resolver.
            - `config` object
              - …
            - `src` string
            - `use` string, required
          - `cleanUrls` false | true
          - `command` string[]: Command override for `runtime: "container"` services.
          - `devCommand` string
          - `entrypoint` string: Resolved entrypoint, relative to the service root.
          - `framework` string
          - `functions` object: Function configuration scoped to this service.
          - `headers` object[]
            - `has` union[]
              - …
            - `headers` object[], required
              - …
            - `missing` union[]
              - …
            - `source` string, required
          - `ignoreCommand` string
          - `installCommand` string
          - `name` string, required
          - `outputDirectory` string
          - `redirects` object[]
            - `destination` string, required
            - `env` string[]
            - `has` union[]
              - …
            - `missing` union[]
              - …
            - `permanent` false | true
            - `source` string, required
            - `statusCode` number
          - `rewrites` object[]
            - `destination` union, required
              - …
            - `env` string[]
            - `has` union[]
              - …
            - `missing` union[]
              - …
            - `respectOriginCacheControl` false | true
            - `source` string, required
            - `statusCode` number
            - `transforms` object[]
              - …
          - `root` string, required: Path to the service root, relative to the project root.
          - `routes` union[]
            - union
              - …
          - `runtime` string
          - `schema` 'experimentalServicesV2', required
          - `trailingSlash` false | true
    - `softDeletedByRetention` false | true: flag to indicate if the deployment was deleted by retention policy
    - `source` 'api-trigger-git-deploy' | 'cli' | 'clone/repo' | 'drop' | 'git' | 'git-deploy-hook' | 'import' | 'import/repo' | 'redeploy' | 'v0-web': Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.
    - `status` 'BLOCKED' | 'BUILDING' | 'CANCELED' | 'ERROR' | 'INITIALIZING' | 'QUEUED' | 'READY', required
    - `target` 'production' | 'staging' | 'null', nullable: If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment.
    - `team` object: The team that owns the deployment if any
      - `avatar` string
      - `id` string, required
      - `name` string, required
      - `slug` string, required
    - `ttyBuildLogs` false | true
    - `type` 'LAMBDAS', required
    - `undeletedAt` number: A number containing the date when the deployment was undeleted at milliseconds
    - `url` string, required: A string with the unique URL of the deployment
    - `userAliases` string[]: An array of domains that were provided by the user when creating the Deployment.
    - `userConfiguredDeploymentId` string: Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.
    - `version` 2, required: The platform version that was used to create the deployment.
  - object: Returns a reduced view of the deployment with public information only. Private fields are omitted when the requester is not the deployment owner.
    - `alias` string[]: A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation
    - `aliasAssigned` false | true, required: A boolean that will be true when the aliases from the alias property were assigned successfully
    - `aliasError` object, nullable: An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`
      - `code` string, required
      - `message` string, required
    - `aliasFinal` string, nullable
    - `aliasWarning` object, nullable
      - `action` string
      - `code` string, required
      - `link` string
      - `message` string, required
    - `autoAssignCustomDomains` false | true: applies to custom domains only, defaults to `true`
    - `automaticAliases` string[]
    - `bootedAt` number, required
    - `buildContainerFinishedAt` number: Since April 2025 it necessary for On-Demand Concurrency Minutes calculation
    - `buildErrorAt` number
    - `buildingAt` number, required
    - `buildSkipped` false | true, required
    - `canceledAt` number
    - `checksConclusion` 'canceled' | 'failed' | 'skipped' | 'succeeded'
    - `checksState` 'completed' | 'registered' | 'running'
    - `createdAt` number, required: A number containing the date when the deployment was created in milliseconds
    - `creator` object, required: Information about the deployment creator
      - `avatar` string: The avatar of the user that created the deployment
      - `type` 'app' | 'integration' | 'project' | 'system' | 'user': Principal type of the deployment creator.
      - `uid` string, required: Stable creator id across principal types (user id, app id, integration configuration id, or `system`).
      - `username` string: The username of the user that created the deployment
    - `customEnvironment` union
      - object: If the deployment was created using a Custom Environment, then this property contains information regarding the environment used.
        - `branchMatcher` object: Configuration for matching git branches to this environment
          - `pattern` string, required: The pattern to match against branch names
          - `type` 'endsWith' | 'equals' | 'startsWith', required: The type of matching to perform
        - `createdAt` number, required: Timestamp when the environment was created
        - `currentDeploymentAliases` string[]: List of aliases for the current deployment
        - `description` string: Optional description of the environment's purpose
        - `domains` object[]: List of domains associated with this environment
          - `apexName` string, required
          - `createdAt` number
          - `customEnvironmentId` string, nullable
          - `gitBranch` string, nullable
          - `name` string, required
          - `projectId` string, required
          - `redirect` string, nullable
          - `redirectStatusCode` 301 | 302 | 307 | 308 | null, nullable
          - `updatedAt` number
          - `verification` object[]: A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`.
            - `domain` string, required
            - `reason` string, required
            - `type` string, required
            - `value` string, required
          - `verified` false | true, required: `true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed.
        - `id` string, required: Unique identifier for the custom environment (format: env_*)
        - `slug` string, required: URL-friendly name of the environment
        - `type` 'development' | 'preview' | 'production', required: The type of environment (production, preview, or development)
        - `updatedAt` number, required: Timestamp when the environment was last updated
      - object: If the deployment was created using a Custom Environment, then this property contains information regarding the environment used.
        - `id` string, required
    - `defaultRoute` string: Computed field that is only available for deployments with a microfrontend configuration.
    - `deletedAt` number, nullable: A number containing the date when the deployment was deleted at milliseconds
    - `duration` object, required: Build timestamps, elapsed durations, and billing measurements. The object is always present, but fields are omitted when their source timestamps are unavailable, such as for running or legacy deployments.
      - `endTime` number: Unix timestamp in milliseconds when the build container exited.
      - `endTimeCapped` number: Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`.
      - `startTime` number: Unix timestamp in milliseconds when the deployment entered BUILDING.
      - `timeForBilling` number: Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum.
      - `timeToContainerExit` number: Milliseconds from entering BUILDING until the build container exited, without the billing cap.
      - `timeToContainerExitCapped` number: Build-container duration in milliseconds, capped at 45 minutes and without billing rounding.
      - `timeToReady` number: Milliseconds from entering BUILDING until the deployment reached its current ready state.
    - `errorCode` string
    - `errorLink` string
    - `errorMessage` string, nullable
    - `errorStep` string
    - `gitSource` union
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github', required
      - object
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github', required
      - object
        - `host` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github-custom-host', required
      - object
        - `host` string, required
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github-custom-host', required
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoId` union, required
          - string
          - number
        - `sha` string
        - `type` 'github-limited', required
      - object
        - `org` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string, required
        - `sha` string
        - `type` 'github-limited', required
      - object
        - `prId` number, nullable
        - `projectId` union, required
          - string
          - number
        - `ref` string, nullable
        - `sha` string
        - `type` 'gitlab', required
      - object
        - `prId` number, nullable
        - `ref` string, nullable
        - `repoUuid` string, required
        - `sha` string
        - `type` 'bitbucket', required
        - `workspaceUuid` string
      - object
        - `owner` string, required
        - `prId` number, nullable
        - `ref` string, nullable
        - `sha` string
        - `slug` string, required
        - `type` 'bitbucket', required
      - object
        - `commitMetadata` object
          - `author` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `committer` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `message` string, required
        - `org` string
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string
        - `repoId` string, required
        - `repoPushedAt` number
        - `sha` string, required
        - `type` 'vercel', required
      - object
        - `owner` string: Owner (namespace) slug.
        - `prId` number, nullable
        - `ref` string, nullable
        - `repo` string
        - `repoId` string, required: Origin repository id.
        - `sha` string
        - `type` 'cursor-origin', required
      - object: Allows custom git sources (local folder mounted to the container) in test mode
        - `gitUrl` string, required
        - `ref` string, required
        - `sha` string, required
        - `type` 'custom', required
      - object
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github', required
      - object
        - `host` string, required
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github-custom-host', required
      - object
        - `org` string
        - `ref` string, required
        - `repo` string
        - `repoId` number, required
        - `sha` string, required
        - `type` 'github-limited', required
      - object
        - `projectId` number, required
        - `ref` string, required
        - `sha` string, required
        - `type` 'gitlab', required
      - object
        - `owner` string
        - `ref` string, required
        - `repoUuid` string, required
        - `sha` string, required
        - `slug` string
        - `type` 'bitbucket', required
        - `workspaceUuid` string, required
      - object
        - `commitMetadata` object
          - `author` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `committer` object, required
            - `date` string, required
            - `email` string, required
            - `name` string, required
          - `message` string, required
        - `org` string, required
        - `ref` string, required
        - `repo` string, required
        - `repoId` string
        - `repoPushedAt` number
        - `sha` string, required
        - `type` 'vercel', required
      - object
        - `owner` string, required
        - `ref` string, required
        - `repo` string, required
        - `repoId` string, required
        - `sha` string, required
        - `type` 'cursor-origin', required
    - `id` string, required: A string holding the unique ID of the deployment
    - `initReadyAt` number
    - `isFirstBranchDeployment` false | true
    - `lambdas` object[]
      - `createdAt` number
      - `entrypoint` string, nullable
      - `id` string, required
      - `readyState` 'BUILDING' | 'ERROR' | 'INITIALIZING' | 'READY'
      - `readyStateAt` number
      - `output` object[], required
        - `functionName` string, required
        - `path` string, required
    - `manualProvisioning` object: Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called.
      - `completedAt` number: Timestamp when manual provisioning completed
      - `state` 'COMPLETE' | 'PENDING' | 'TIMEOUT', required: Current provisioning state
    - `meta` object, required
    - `name` string, required: The name of the project associated with the deployment at the time that the deployment was created
    - `nodeVersion` '10.x' | '12.x' | '14.x' | '16.x' | '18.x' | '20.x' | '22.x' | '24.x' | '26.x' | '8.10.x': If set it overrides the `projectSettings.nodeVersion` for this deployment.
    - `oidcTokenClaims` object
      - `aud` string, required
      - `custom_environment_id` string
      - `deployment_id` string
      - `environment` string, required
      - `iss` string, required
      - `mfe_group_ids` string[]
      - `owner` string, required
      - `owner_id` string, required
      - `plan` string
      - `project` string, required
      - `project_id` string, required
      - `scope` string, required
      - `sub` string, required
    - `oomReport` 'out-of-memory'
    - `originCacheRegion` string
    - `passiveRegions` string[]: Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service
    - `prebuilt` false | true
    - `previewCommentsEnabled` false | true: Whether or not preview comments are enabled for the deployment
    - `project` object: The public project information associated with the deployment.
      - `framework` string, nullable
      - `id` string, required
      - `name` string, required
    - `public` false | true, required: A boolean representing if the deployment is public or not. By default this is `false`
    - `ready` number
    - `readyState` 'BLOCKED' | 'BUILDING' | 'CANCELED' | 'ERROR' | 'INITIALIZING' | 'QUEUED' | 'READY', required: The state of the deployment depending on the process of deploying, or if it is ready or in an error state
    - `readyStateReason` string
    - `readySubstate` 'PROMOTED' | 'ROLLING' | 'STAGED': Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic
    - `regions` string[], required: The regions the deployment exists in
    - `softDeletedByRetention` false | true: flag to indicate if the deployment was deleted by retention policy
    - `source` 'api-trigger-git-deploy' | 'cli' | 'clone/repo' | 'drop' | 'git' | 'git-deploy-hook' | 'import' | 'import/repo' | 'redeploy' | 'v0-web': Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.
    - `status` 'BLOCKED' | 'BUILDING' | 'CANCELED' | 'ERROR' | 'INITIALIZING' | 'QUEUED' | 'READY', required
    - `target` 'production' | 'staging' | 'null', nullable: If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment.
    - `team` object: The team that owns the deployment if any
      - `avatar` string
      - `id` string, required
      - `name` string, required
      - `slug` string, required
    - `ttyBuildLogs` false | true
    - `type` 'LAMBDAS', required
    - `undeletedAt` number: A number containing the date when the deployment was undeleted at milliseconds
    - `url` string, required: A string with the unique URL of the deployment
    - `userAliases` string[]: An array of domains that were provided by the user when creating the Deployment.
    - `userConfiguredDeploymentId` string: Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.
    - `version` 2, required: The platform version that was used to create the deployment.

## Other responses

- `400`: One of the provided values in the request query is invalid.
- `401`
- `403`: You do not have permission to access this resource.
- `404`: The deployment was not found
- `410`
- `429`

## Changes

- **2026-10-28** `06344f7b73dd`: 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the `oneOf[subschema #2]/resourceConfig/buildMachine` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `oneOf[subschema #2]/resourceConfig/buildMachine` response property `oneOf` list for the response status `200`
- **2026-10-27** `ef8042371d97`: 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the `oneOf[subschema #2]/services/items/` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `oneOf[subschema #2]/services/items/` response property `oneOf` list for the response status `200`
- **2026-10-26** `b1c16fd8828a`: 1 info
  - added the optional property `oneOf[subschema #2]/projectSettings/vercelFlags` to the response with the `200` status
- **2026-10-23** `2060b55dc517`: 1 breaking, 1 info
  - added `subschema #2, subschema #3` to the response body `oneOf` list for the response status `200`
  - removed `subschema #2, subschema #3` from the response body `oneOf` list for the response status `200`
- **2026-10-22** `6c0e780b096e`: 1 info
  - added the non-success response with the status `401`

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v13/deployments/:idOrUrl/get.md)

---

[API](https://skmtc.dev/vercel/apis/vercel-api.md) - [All operations](https://skmtc.dev/vercel/apis/vercel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vercel/apis/vercel-api/revisions/60686c0e1f6a?raw)
