Update a pod
Update selected settings on an existing Runpod Pod while preserving omitted fields, with guidance on mutable fields and restart behavior.
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.
Console sessions (Clerk JWTs) act for the signed-in user. To act for a team instead, also send X-Team-Id: <team_id>; it applies only when the user owns or belongs to that team, otherwise the request runs against the user's own account. API keys created inside a team already act for that team and do not need the header.
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.
The container's command, as a single raw string. This is the field entrypoint and cmd encode into, exposed in its stored form.
Two shapes are accepted. A bare shell string is treated as CMD and split into arguments, which is what the console's "Container start command" field writes. A JSON object of the form {"entrypoint":[...],"cmd":[...]} sets either or both explicitly.
Responses always return both representations: args exactly as stored, plus the deconstructed entrypoint and cmd. Supplying args together with entrypoint or cmd is allowed only when they describe the same command, so a read-modify-write client can send back everything it received. Send "" to clear, omit to leave unchanged.
"--model meta-llama/Llama-3-8B --max-model-len 8192"
"{\"entrypoint\":[\"/bin/bash\",\"-c\"],\"cmd\":[\"python -u main.py\"]}"
""
Container CMD in exec form. When the image defines an ENTRYPOINT, this is the argument list passed to it. Encoded into the args field; supplying both is allowed only when they describe the same command. Send [] to clear, omit to leave unchanged.
Container ENTRYPOINT in exec form, overriding the image's own. Encoded into args field; supplying both is allowed only when they describe the same command. Send [] to clear, omit to leave unchanged.
Container disk in GB (ephemeral, wiped on restart)
x >= 150
Environment variables as key-value pairs
Docker image reference
"runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404"
Exposed ports, formatted as port/protocol
Container registry credential ID (for private images)
null
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. See GET /v2/catalog/datacenters (globalNetwork) for eligible data centers.
Lock the pod (true) or unlock it (false). Locked pods cannot be stopped or reset.
Changes to a pod's mounts. Each entry names one volume by volumeId
and changes only that volume; volumes that are not listed, and kinds
that are omitted, are left as they are. Omitting mounts or sending
{} changes nothing.
- A listed volume the pod does not have is mounted at
path. - A listed volume the pod already has moves to
path(or stays put whenpathis omitted). remove: trueunmounts the volume. It cannot be combined withpath, and the volume must be mounted on the pod.- To swap a volume, remove the old one and add the new one in the same request.
Limits are checked against the pod as it would be after the request and rejected with 400: at most 4 network volumes and 1 global volume, and a volume disk cannot share a pod with network or global volumes. A volume disk can be added to a pod that has no volumes mounted (or unmounts them all in the same request), and it can only grow. Removing a volume disk is not supported yet.
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"
Response
OK
Reusable container configuration shared across templates, pods, and serverless endpoints. Adding a field here automatically propagates to all three resources.
The container's command, as a single raw string. This is the field entrypoint and cmd encode into, exposed in its stored form.
Two shapes are accepted. A bare shell string is treated as CMD and split into arguments, which is what the console's "Container start command" field writes. A JSON object of the form {"entrypoint":[...],"cmd":[...]} sets either or both explicitly.
Responses always return both representations: args exactly as stored, plus the deconstructed entrypoint and cmd. Supplying args together with entrypoint or cmd is allowed only when they describe the same command, so a read-modify-write client can send back everything it received. Send "" to clear, omit to leave unchanged.
"--model meta-llama/Llama-3-8B --max-model-len 8192"
"{\"entrypoint\":[\"/bin/bash\",\"-c\"],\"cmd\":[\"python -u main.py\"]}"
""
Container disk in GB (ephemeral, wiped on restart)
x >= 150
Environment variables as key-value pairs
Docker image reference
"runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404"
Exposed ports, formatted as port/protocol
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. persistent (the volume disk) is
mutually exclusive with both network and global (enforced at the
handler with 400 if combined). A pod takes up to 4 network volumes
and 1 global volume. Every network volume must be in the pod's data
center, each volume may be listed once, and mount paths must not
overlap; a request that breaks one of these is rejected. To change a
pod's mounts after creation, see UpdatePodMounts.
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"
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"
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
The pod's hourly compute rate in USD. It's returned in every status, including EXITED, so it isn't what you're paying right now: a stopped pod isn't billed for compute, only for its volume disk.
0.35
Whether the pod is locked (prevents stopping or resetting)
false
Live utilization metrics. Null when the pod is not RUNNING, and when listing pods with GET /v2/pods; fetch a single pod by ID to obtain metrics.
"2026-03-13T20:00:00Z"
"2026-03-13T20:00:00Z"
Container CMD in exec form. When the image defines an ENTRYPOINT, this is the argument list passed to it. Encoded into the args field; supplying both is allowed only when they describe the same command. Send [] to clear, omit to leave unchanged.
Container ENTRYPOINT in exec form, overriding the image's own. Encoded into args field; supplying both is allowed only when they describe the same command. Send [] to clear, omit to leave unchanged.
Cost center this resource's spend is attributed to. Absent when the resource is not attributed to a cost center, or when the caller lacks permission to view cost centers. Managed through /v2/cost-centers.
The tags on this resource that are visible to the caller. Keys and values are returned exactly as stored. Tags under the reserved runpod: prefix, such as the cost center, are never listed here. Absent when the resource's tags are unavailable to the caller; an empty array means none are visible.
Present for GPU pods; omitted from CPU pods.
Present for CPU pods; omitted from GPU pods.
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.