Trigger a pod state transition
Triggers a state transition on a pod. Send a JSON body with a single
action field, e.g. { "action": "stop" }.
Valid actions:
start— boot a stopped pod (EXITEDorERROR) back towardRUNNING.stop— stop a running or provisioning pod, releasing GPU/CPU compute while keeping its disk. The pod moves toEXITED.restart— restart aRUNNINGpod’s container in place.terminate— permanently delete the pod and release its resources (equivalent todeletePod).
Which actions are valid depends on the pod’s current status, and the
currently permitted set is published in the pod’s actions field:
RUNNING allows stop/restart/terminate; EXITED and ERROR
allow start/terminate; PROVISIONING and STARTING allow
stop/terminate.
start, stop, and restart return 200 with the updated pod.
terminate returns 204 with no body. Requesting an action that is
not valid for the pod’s current status returns 409.
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
Body
State transition to trigger on a pod.
start, stop, restart, terminate Response
Action applied — returns updated pod
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"
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.