---
title: "Patch Deployment Tier"
method: PATCH
path: "/v2/deployments/{deployment_id}/deployment-tier"
tags: ["Deployments (v2)"]
---

# Patch Deployment Tier

`PATCH /v2/deployments/{deployment_id}/deployment-tier`

Patch a deployment's fixed resource tier.

## Path parameters

- `deployment_id` string, uuid, required

## Request body

- DeploymentTierUpdateRequest — Request body for updating a deployment's fixed resource tier.
  - `deployment_tier` 'SERVERLESS_S' | 'SERVERLESS_M' | 'SERVERLESS_L' | 'DEDICATED_S' | 'DEDICATED_M' | 'DEDICATED_L', required

## Response `200`

Successful Response

- Deployment — Deployment resource.
  - `name` string, required — Name of the deployment.<br><br>A LangSmith tracing project with the same name will also automatically be created. This cannot be changed once the deployment is created.
  - `source` 'github' | 'external_docker' | 'internal_docker' | 'internal_source' | 'internal_template', required — Deploy from a GitHub repository (`github`), an external Docker image (`external_docker`), a CLI-pushed image (`internal_docker`), uploaded source (`internal_source`), or a prebuilt LangChain template (`internal_template`).<br><br>Deploying from GitHub, internal Docker, internal source, or a template is only available for Cloud SaaS deployments. Deploying from an external Docker image is only available for self-hosted deployments. This cannot be changed once the deployment is created.
  - `source_config` SourceConfig, required — Source configuration.
    - `integration_id` string, uuid, nullable — The ID of the integration used for the deployment.<br><br>Retrieve this value from the `GET /v1/integrations/github/install` endpoint. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `github` source.
    - `repo_url` string, nullable — The URL of the git repository used for the deployment.<br><br>This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `github` source.
    - `deployment_type` 'dev_free' | 'dev' | 'prod' | 'dev_zero' | 'dev_free_zero', nullable — The type of deployment to create.<br><br>See [Deployment Types](https://langchain-ai.github.io/langgraph/concepts/langgraph_control_plane/#deployment-types) for more details. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `github` source.
    - `build_on_push` boolean, nullable — Whether to build a new revision for the deployment on push to the `source_revision_config.repo_ref` (e.g. git branch).<br><br>Cannot be enabled when `source_revision_config.repo_ref` specifies a tag (starts with `refs/tags/`). Tags are immutable and cannot trigger automatic builds on push.<br><br>Only applicable for `github` source.
    - `custom_url` string, nullable — The custom URL of the deployment.<br><br>This field can only be set for `external_docker` source deployments. However, it will be set automatically for `github` source deployments (read only).
    - `resource_spec` ResourceSpecOutput — Resource specification for the deployment.<br> <br> When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision and overwrite the existing resource_spec for the deployment. Only applicable for `external_docker` source.
      - `min_scale` integer, nullable — The minimum scale (number of replicas) of the deployment.
      - `max_scale` integer, nullable — The maximum scale (number of replicas) of the deployment.
      - `cpu` number, nullable — CPU request in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If cpu_limit is not set, limit defaults to 2x this value.
      - `cpu_limit` number, nullable — CPU limit in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x cpu.
      - `memory_mb` integer, nullable — Memory request (MB) of a single replica of the deployment. If memory_limit_mb is not set, limit defaults to 2x this value.
      - `memory_limit_mb` integer, nullable — Memory limit (MB) of a single replica of the deployment. If not set, defaults to 2x memory_mb.
      - `queue_min_scale` integer, nullable — The minimum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `min_scale`.
      - `queue_max_scale` integer, nullable — The maximum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `max_scale`.
      - `queue_cpu` number, nullable — CPU request in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not provided, defaults to the same value as `cpu`. If queue_cpu_limit is not set, limit defaults to 2x this value.
      - `queue_cpu_limit` number, nullable — CPU limit in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x queue_cpu.
      - `queue_memory_mb` integer, nullable — Memory request (MB) of a single replica of the queue deployment. If not provided, defaults to the same value as `memory_mb`. If queue_memory_limit_mb is not set, limit defaults to 2x this value.
      - `queue_memory_limit_mb` integer, nullable — Memory limit (MB) of a single replica of the queue deployment. If not set, defaults to 2x queue_memory_mb.
      - `redis_cpu` number, nullable — CPU request in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If redis_cpu_limit is not set, limit defaults to 2x this value.
      - `redis_cpu_limit` number, nullable — CPU limit in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x redis_cpu.
      - `redis_memory_mb` integer, nullable — Memory request (MB) of the Redis deployment. If redis_memory_limit_mb is not set, limit defaults to this value.
      - `redis_memory_limit_mb` integer, nullable — Memory limit (MB) of the Redis deployment. If not set, defaults to redis_memory_mb.
      - `core_cpu` number, nullable — CPU request in cores for the core API process (only used when the deployment runs the core API as a sidecar). If core_cpu_limit is not set, limit defaults to 2x this value.
      - `core_cpu_limit` number, nullable — CPU limit in cores for the core API process. If not set, defaults to 2x core_cpu.
      - `core_memory_mb` integer, nullable — Memory request (MB) for the core API process. If core_memory_limit_mb is not set, limit defaults to 2x this value.
      - `core_memory_limit_mb` integer, nullable — Memory limit (MB) for the core API process. If not set, defaults to 2x core_memory_mb.
      - `labels` object, nullable — Additional labels to apply to resources created for the deployment.
      - `annotations` object, nullable — Additional annotations to apply to resources created for the deployment.
      - `service_account_name` string, nullable — The name of the service account to use for the deployment.<br><br>This must already exist in the Kubernetes namespace where the deployment will be deployed to.
      - `image_pull_secrets` LocalObjectReference[], nullable — List of references to secrets in the same namespace to use for pulling container images. Each entry is a LocalObjectReference to a Secret of type kubernetes.io/dockerconfigjson.
        - `name` string, required — Name of the referent (e.g., name of a Secret for imagePullSecrets).
      - `volumes` Volume[], nullable — List of volumes that can be mounted by containers belonging to the pod. Reference the kubernetes documentation for more details on how to configure volumes.
        - `name` string — Volume's name. Must be a DNS_LABEL and unique within the pod.
        - `configMap` object, nullable — ConfigMap represents a configMap that should populate this volume.
        - `secret` object, nullable — Secret represents a secret that should populate this volume.
        - `emptyDir` object, nullable — EmptyDir represents a temporary directory that shares a pod's lifetime.
        - `persistentVolumeClaim` object, nullable — PersistentVolumeClaim represents a reference to a PersistentVolumeClaim.
        - `nfs` object, nullable — NFS represents an NFS mount on the host that shares a pod's lifetime.
        - `projected` object, nullable — Projected represents a volume that projects several volume sources into the same directory.
        - `downwardAPI` object, nullable — DownwardAPI represents downward API about the pod that should populate this volume.
        - `csi` object, nullable — CSI represents a volume that should be handled by an external CSI driver.
      - `volume_mounts` VolumeMount[], nullable — Pod volumes to mount into the container's filesystem. Reference the kubernetes documentation for more details on how to configure volume mounts.
        - `name` string — This must match the Name of a Volume.
        - `mountPath` string — Path within the container at which the volume should be mounted.
        - `subPath` string, nullable — Path within the volume from which the container's volume should be mounted.
        - `mountPropagation` string, nullable — Determines how mounts are propagated from the host to container and the other way around.
        - `readOnly` boolean, nullable — Mounted read-only if true, read-write otherwise.
        - `subPathExpr` string, nullable — Expanded path within the volume from which the container's volume should be mounted.
      - `init_containers` Container[], nullable — List of initialization containers belonging to the pod. Init containers are set as initContainers in the pod spec and run to completion before the main application container starts.
        - `name` string, required — Name of the container. Must be a DNS_LABEL.
        - `image` string, required — Container image name.
        - `imagePullPolicy` string, nullable — Image pull policy. One of Always, Never, IfNotPresent.
        - `command` string[], nullable — Entrypoint array. Not executed within a shell.
        - `args` string[], nullable — Arguments to the entrypoint.
        - `workingDir` string, nullable — Container's working directory.
        - `env` EnvVar[], nullable — List of environment variables to set in the container.
          - `name` string, required — Name of the environment variable. Must be a C_IDENTIFIER.
          - `value` string, nullable — Variable value. Defaults to empty string.
          - `valueFrom` object, nullable — Source for the environment variable's value. Cannot be used if value is not empty.
        - `envFrom` object[], nullable — List of sources to populate environment variables in the container.
        - `resources` ResourceRequirements — Compute resource requirements.
          - `limits` object, nullable — Limits describes the maximum amount of compute resources allowed.
          - `requests` object, nullable — Requests describes the minimum amount of compute resources required.
        - `volumeMounts` VolumeMount[], nullable — Pod volumes to mount into the container's filesystem.
          - `name` string — This must match the Name of a Volume.
          - `mountPath` string — Path within the container at which the volume should be mounted.
          - `subPath` string, nullable — Path within the volume from which the container's volume should be mounted.
          - `mountPropagation` string, nullable — Determines how mounts are propagated from the host to container and the other way around.
          - `readOnly` boolean, nullable — Mounted read-only if true, read-write otherwise.
          - `subPathExpr` string, nullable — Expanded path within the volume from which the container's volume should be mounted.
        - `securityContext` object, nullable — Security options the pod should run with.
        - `restartPolicy` string, nullable — RestartPolicy for the container (for sidecar containers). One of Always, OnFailure.
      - `sidecars` Container[], nullable — List of sidecar containers that run alongside the main application container. These will be added to the pod spec as additional containers.
        - `name` string, required — Name of the container. Must be a DNS_LABEL.
        - `image` string, required — Container image name.
        - `imagePullPolicy` string, nullable — Image pull policy. One of Always, Never, IfNotPresent.
        - `command` string[], nullable — Entrypoint array. Not executed within a shell.
        - `args` string[], nullable — Arguments to the entrypoint.
        - `workingDir` string, nullable — Container's working directory.
        - `env` EnvVar[], nullable — List of environment variables to set in the container.
          - `name` string, required — Name of the environment variable. Must be a C_IDENTIFIER.
          - `value` string, nullable — Variable value. Defaults to empty string.
          - `valueFrom` object, nullable — Source for the environment variable's value. Cannot be used if value is not empty.
        - `envFrom` object[], nullable — List of sources to populate environment variables in the container.
        - `resources` ResourceRequirements — Compute resource requirements.
          - `limits` object, nullable — Limits describes the maximum amount of compute resources allowed.
          - `requests` object, nullable — Requests describes the minimum amount of compute resources required.
        - `volumeMounts` VolumeMount[], nullable — Pod volumes to mount into the container's filesystem.
          - `name` string — This must match the Name of a Volume.
          - `mountPath` string — Path within the container at which the volume should be mounted.
          - `subPath` string, nullable — Path within the volume from which the container's volume should be mounted.
          - `mountPropagation` string, nullable — Determines how mounts are propagated from the host to container and the other way around.
          - `readOnly` boolean, nullable — Mounted read-only if true, read-write otherwise.
          - `subPathExpr` string, nullable — Expanded path within the volume from which the container's volume should be mounted.
        - `securityContext` object, nullable — Security options the pod should run with.
        - `restartPolicy` string, nullable — RestartPolicy for the container (for sidecar containers). One of Always, OnFailure.
      - `db_cpu` number, nullable — CPU request of the Postgres database deployment. If db_cpu_limit is not set, limit defaults to 2x this value.
      - `db_cpu_limit` number, nullable — CPU limit of the Postgres database deployment. If not set, defaults to 2x db_cpu.
      - `db_memory_mb` integer, nullable — Memory request (MB) of the Postgres database deployment. If db_memory_limit_mb is not set, limit defaults to 2x this value.
      - `db_memory_limit_mb` integer, nullable — Memory limit (MB) of the Postgres database deployment. If not set, defaults to 2x db_memory_mb.
      - `db_storage_gi` integer, nullable — Storage (GiB) of the Postgres database deployment.
      - `db_max_connections` integer, nullable — Maximum number of connections allowed to the Postgres database.
    - `listener_id` string, uuid, nullable — The ID of the listener used for the deployment.<br><br>Retrieve this value from the `GET /v2/listeners` endpoint. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `external_docker` source.
    - `listener_config` ListenerConfig — Listener configuration for the deployment.<br> <br> All fields are nullable, but are validated based on `compute_type` of the listener ID. Only applicable for `external_docker` source.
      - `k8s_namespace` string, nullable — Kubernetes namespace where the deployment will be deployed to.<br><br>This cannot be changed (`PATCH`) once the deployment is created. Only applicable for deployments of listeners with `k8s` compute type.
    - `install_command` string, nullable — The custom install command to run for your deployment. This only applies to JS deployments. This command will be run from the root of your repository - NOT where your langgraph.json file lives (unless these are the same place). If not provided, we will autodetect the command based on the presence of yarn/npm/etc. files.
    - `build_command` string, nullable — The custom build command to run for your deployment. This only applies to JS deployments. This command will be run from where your langgraph.json file lives. This is helpful for using shared workspaces in your deployments, without having to provide a postinstall command or something similar in your package.json.
  - `source_revision_config` SourceRevisionConfig, required — Source revision configuration.<br> <br> For a `Deployment` resource, the field values refer to the latest revision of the `Deployment`. For a `Revision` resource, the field values refer to the `Revision` itself.
    - `repo_ref` string, nullable — The git ref of the repository used for the deployment.<br><br>Supports:<br>- **Branches**: Specify just the branch name (e.g., `main`, `develop`)<br>- **Tags**: Specify the full ref path (e.g., `refs/tags/v1.0.0`)<br><br>When using a tag, `source_config.build_on_push` must be set to `false` since tags are immutable.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `github` source.
    - `langgraph_config_path` string, nullable — The path to the LangGraph configuration file (`langgraph.json`) used for the deployment.<br><br>Required on create for buildable sources (`github`, `internal_source`). Must be `null` for all other sources.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision.
    - `image_uri` string, nullable — The URI of the Docker image used for the deployment.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Applicable for `external_docker` source.
    - `source_tarball_path` string, nullable — The object path of the uploaded source tarball.<br><br>Must be an object path obtained from the `POST /deployments/{deployment_id}/upload-url` endpoint. Arbitrary paths are not accepted.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `internal_source` source.
    - `repo_commit_sha` string, nullable — The commit SHA of the git repository used for the deployment.<br><br>This is a read-only field. Only applicable for `github` source.
  - `secrets` Secret[], required
    - `name` string, required — Name of the secret
    - `value` string, required — Value of the secret
  - `secret_references` SecretReference[], nullable — List of Kubernetes Secret references.<br><br>Only applicable for `external_docker` source.
    - `name` string, required — Name of the environment variable to populate.
    - `secret_name` string, required — Name of the Kubernetes Secret that already exists in the same namespace as the deployment.
    - `secret_key` string, required — Key within the Kubernetes Secret whose value should be populated to the environment variable.
  - `id` string, uuid, required — The ID of the deployment.<br><br>This is a read-only field.
  - `tenant_id` string, uuid, required — The ID of the tenant that owns the deployment.<br><br>This is a read-only field.
  - `created_at` string, date-time, required — The creation time of the deployment.<br><br>This is a read-only field.
  - `updated_at` string, date-time, required — The last update time of the deployment.<br><br>This is a read-only field.
  - `status` 'AWAITING_DATABASE' | 'READY' | 'UNUSED' | 'AWAITING_DELETE' | 'UNKNOWN', required — The status of the deployment.<br><br>This is a read-only field.
  - `latest_revision_id` string, uuid, nullable, required — The ID of the latest revision of the deployment.<br><br>This is a read-only field.
  - `active_revision_id` string, uuid, nullable, required — The ID of the current (actively deployed) revision of the deployment.<br><br>This is a read-only field.
  - `image_version` string, nullable — Image version of the deployment.
  - `display_name` string, nullable — Human-readable display name for the deployment.
  - `is_managed_deep_agent` boolean — Whether this deployment is a Managed Deep Agent deployment.<br><br>This is a read-only field.
  - `deployment_tier` 'SERVERLESS_S' | 'SERVERLESS_M' | 'SERVERLESS_L' | 'DEDICATED_S' | 'DEDICATED_M' | 'DEDICATED_L'
  - `compute_tier` 'SERVERLESS_S' | 'SERVERLESS_M' | 'SERVERLESS_L' | 'DEDICATED_S' | 'DEDICATED_M' | 'DEDICATED_L'
  - `database_tier` 'SERVERLESS_S' | 'SERVERLESS_M' | 'SERVERLESS_L' | 'DEDICATED_S' | 'DEDICATED_M' | 'DEDICATED_L'

## Other responses

- `400` — Bad Request
- `404` — Not Found
- `422` — Validation Error

---

[API](https://skmtc.net/langchain-ai/apis/langsmith-deployment-control-plane-api.md) · [All operations](https://skmtc.net/langchain-ai/apis/langsmith-deployment-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/langchain-ai/langsmith-deployment-control-plane-api/versions/a0cd098699b4/schema)
