Update a pod
Partially updates a pod’s configuration. This is a PATCH: only the
fields present in the body are changed, and omitted fields are left
untouched. Use empty values only when you explicitly mean to clear a
field (for example, set registry to null or set ports to []).
See UpdatePodRequest for the full body.
Mutable fields: name, image, args, disk, ports, env,
registry, mounts, locked, and globalNetworking. Some changes
apply immediately while others (e.g. globalNetworking) take effect
on the pod’s next start/restart, as noted on the individual fields.
Pods that belong to a Cluster cannot be updated here — manage them
through /v2/clusters/{id}.
Returns 200 with the full updated pod.
Authorizations
Runpod API key authentication. Generate an API key in the Runpod console and send it in the Authorization header as Bearer <api_key>. Keys are scoped to the permissions granted when created; requests may return 403 when a valid key lacks access to the requested resource or action.
Path Parameters
Pod identifier
Body
Reusable container configuration shared across templates, pods, and serverless endpoints. Adding a field here automatically propagates to all three resources.
Docker image reference
"runpod/pytorch:2.8.0-py3.11-cuda12.8.1"
Arguments passed to the container entrypoint
""
Container disk in GB (ephemeral, wiped on restart)
x >= 150
Exposed ports, formatted as port/protocol
Environment variables as key-value pairs
Container registry credential ID (for private images)
null
1ID of a pod template whose container settings are applied as
if they were provided in this PATCH body (image, args, disk,
ports, env, registry — mounts are not applied on update).
Explicit body fields override the template's; env merges
template and body per key (body wins) and, per PATCH
semantics, replaces the pod's env. One-time application —
no link to the template is retained. Must be one of your
templates or a public template (unknown or inaccessible ID
→ 404); must not be a serverless template (→ 422).
"30zmvf89kd"
Storage mounts attached to a pod. At-most-one of persistent or
network may be set today (mutually exclusive, enforced at the
handler with 400 if both are present). The network field is an
array for forward compatibility with eventual multi-network-volume
support, but maxItems is 1 today.
PATCH semantics:
- Omitting
mountsor sending{}leaves the existing mount unchanged. - An explicit
network: []is rejected with 400 (clearing mounts is not supported). - Mount kind is fixed at create — a PATCH that introduces a kind not present at create (persistent on a network pod, network on a persistent pod, or any mount on a previously-mountless pod) is rejected with 400.
- The
volumeIdof a network mount is immutable; a PATCH that names a differentvolumeIdis rejected with 400. - Partial mounts are not supported — every mount entry must
include the full schema (
size+pathfor persistent,volumeId+pathfor network). Missing required fields → 422.
Lock the pod (true) or unlock it (false). Locked pods cannot be stopped or reset.
Enable (true) or disable (false) global networking. Takes effect on the next pod start/restart, not live. Requires an NVIDIA GPU and a global-networking-enabled data center (both enforced upstream). See GET /v2/catalog/datacenters (globalNetwork) for eligible data centers.
Response
OK
Reusable container configuration shared across templates, pods, and serverless endpoints. Adding a field here automatically propagates to all three resources.
Docker image reference
"runpod/pytorch:2.8.0-py3.11-cuda12.8.1"
Arguments passed to the container entrypoint
""
Container disk in GB (ephemeral, wiped on restart)
x >= 150
Exposed ports, formatted as port/protocol
Environment variables as key-value pairs
Container registry credential ID (for private images)
null
"pod_abc123"
"my-training-pod"
Lifecycle status of a pod.
PROVISIONING— pod is being allocatedSTARTING— container is startingRUNNING— container is healthyEXITED— container exited (stopped)ERROR— container is in an unrecoverable error stateTERMINATED— pod has been permanently deleted
PROVISIONING, STARTING, RUNNING, EXITED, ERROR, TERMINATED Valid state transitions for the current status.
State transition to trigger on a pod.
start, stop, restart, terminate Storage mounts attached to a pod. At-most-one of persistent or
network may be set today (mutually exclusive, enforced at the
handler with 400 if both are present). The network field is an
array for forward compatibility with eventual multi-network-volume
support, but maxItems is 1 today.
PATCH semantics:
- Omitting
mountsor sending{}leaves the existing mount unchanged. - An explicit
network: []is rejected with 400 (clearing mounts is not supported). - Mount kind is fixed at create — a PATCH that introduces a kind not present at create (persistent on a network pod, network on a persistent pod, or any mount on a previously-mountless pod) is rejected with 400.
- The
volumeIdof a network mount is immutable; a PATCH that names a differentvolumeIdis rejected with 400. - Partial mounts are not supported — every mount entry must
include the full schema (
size+pathfor persistent,volumeId+pathfor network). Missing required fields → 422.
Cloud tier.
SECURE— Runpod-owned datacenter hardwareCOMMUNITY— community-hosted hardware
SECURE, COMMUNITY Data center where the pod is running (assigned by scheduler)
"US-TX-3"
SSH connection details, via the Runpod proxy or directly to the pod's published 22/tcp port.
ID of the template this pod was created from
null
Current cost in USD per hour (0.0 when EXITED or TERMINATED)
0.35
Whether the pod is locked (prevents stopping or resetting)
false
Live utilization metrics. Null when the pod is not RUNNING.
"2026-03-13T20:00:00Z"
"2026-03-13T20:00:00Z"
Present for GPU pods; omitted from CPU pods.
Present for CPU pods; omitted from GPU pods.
CUDA version reported by the host machine. Retained while the pod is stopped — a stopped pod keeps its machine assignment and resumes onto the same host. Null means unknown or not applicable (CPU pods, or a host that has not reported one), not that CUDA is absent.
"12.8"
Cluster membership; omitted from a standalone pod. Member pods are managed through /v2/clusters/{id} — they are excluded from GET /v2/pods by default (pass includeClusterPods=true to include them) and cannot be modified or deleted via the pod endpoints.