Skip to main content
PATCH
Update a pod

Authorizations

Authorization
string
header
required

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

id
string
required

Pod identifier

Body

application/json

Reusable container configuration shared across templates, pods, and serverless endpoints. Adding a field here automatically propagates to all three resources.

args
string

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.

Examples:

"--model meta-llama/Llama-3-8B --max-model-len 8192"

"{\"entrypoint\":[\"/bin/bash\",\"-c\"],\"cmd\":[\"python -u main.py\"]}"

""

cmd
string[]

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.

Example:
entrypoint
string[]

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.

Example:
disk
integer

Container disk in GB (ephemeral, wiped on restart)

Required range: x >= 1
Example:

50

env
object

Environment variables as key-value pairs

Example:
image
string

Docker image reference

Example:

"runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404"

ports
string[]

Exposed ports, formatted as port/protocol

Example:
registry
string | null

Container registry credential ID (for private images)

Example:

null

globalNetworking
boolean

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.

locked
boolean

Lock the pod (true) or unlock it (false). Locked pods cannot be stopped or reset.

mounts
object

Storage mounts attached to a pod. persistent is mutually exclusive with both network and global (enforced at the handler with 400 if combined). The network field is an array for forward compatibility with eventual multi-network-volume support, but maxItems is 1 today.

PATCH semantics:

  • Omitting mounts or 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 volumeId of a network mount is immutable; a PATCH that names a different volumeId is rejected with 400.
  • Partial mounts are not supported — every mount entry must include the full schema (size + path for persistent, volumeId + path for network). Missing required fields → 422.
name
string
Minimum string length: 1
templateId
string

ID 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).

Example:

"30zmvf89kd"

Response

OK

Reusable container configuration shared across templates, pods, and serverless endpoints. Adding a field here automatically propagates to all three resources.

args
string
required

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.

Examples:

"--model meta-llama/Llama-3-8B --max-model-len 8192"

"{\"entrypoint\":[\"/bin/bash\",\"-c\"],\"cmd\":[\"python -u main.py\"]}"

""

disk
integer
required

Container disk in GB (ephemeral, wiped on restart)

Required range: x >= 1
Example:

50

env
object
required

Environment variables as key-value pairs

Example:
image
string
required

Docker image reference

Example:

"runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404"

ports
string[]
required

Exposed ports, formatted as port/protocol

Example:
registry
string | null
required

Container registry credential ID (for private images)

Example:

null

id
string
required
Example:

"pod_abc123"

name
string
required
Example:

"my-training-pod"

status
enum<string>
required

Lifecycle status of a pod.

  • PROVISIONING — pod is being allocated
  • STARTING — container is starting
  • RUNNING — container is healthy
  • EXITED — container exited (stopped)
  • ERROR — container is in an unrecoverable error state
  • TERMINATED — pod has been permanently deleted
Available options:
PROVISIONING,
STARTING,
RUNNING,
EXITED,
ERROR,
TERMINATED
actions
enum<string>[]
required

Valid state transitions for the current status.

State transition to trigger on a pod.

Available options:
start,
stop,
restart,
terminate
mounts
object
required

Storage mounts attached to a pod. persistent is mutually exclusive with both network and global (enforced at the handler with 400 if combined). The network field is an array for forward compatibility with eventual multi-network-volume support, but maxItems is 1 today.

PATCH semantics:

  • Omitting mounts or 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 volumeId of a network mount is immutable; a PATCH that names a different volumeId is rejected with 400.
  • Partial mounts are not supported — every mount entry must include the full schema (size + path for persistent, volumeId + path for network). Missing required fields → 422.
cloud
enum<string>
required

Cloud tier.

  • SECURE — Runpod-owned datacenter hardware
  • COMMUNITY — community-hosted hardware
Available options:
SECURE,
COMMUNITY
dataCenterId
string | null
required

Data center where the pod is running (assigned by scheduler)

Example:

"US-TX-3"

cudaVersion
string | null
required

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.

Example:

"12.8"

ssh
object
required

SSH connection details, via the Runpod proxy or directly to the pod's published 22/tcp port.

template
string | null
required

ID of the template this pod was created from

Example:

null

cost
number<float>
required

Current cost in USD per hour (0.0 when EXITED or TERMINATED)

Example:

0.35

locked
boolean
required

Whether the pod is locked (prevents stopping or resetting)

Example:

false

globalNetworking
object
required
runtime
object | null
required

Live utilization metrics. Null when the pod is not RUNNING.

createdAt
string<date-time>
required
Example:

"2026-03-13T20:00:00Z"

startedAt
string<date-time> | null
required
Example:

"2026-03-13T20:00:00Z"

cmd
string[]

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.

Example:
entrypoint
string[]

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.

Example:
gpu
object

Present for GPU pods; omitted from CPU pods.

cpu
object

Present for CPU pods; omitted from GPU pods.

cluster
object

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.

Last modified on September 17, 2026