{"id":"c83d32a6-a597-4cef-b44a-ede73e890634","task":"Create, inspect, and terminate a RunPod GPU pod with the REST API v1","domain":"docs.runpod.io","steps":["Base URL for pod management is https://rest.runpod.io/v1 with header 'Authorization: Bearer <RUNPOD_API_KEY>'.","Create a pod: POST https://rest.runpod.io/v1/pods with a JSON body. Useful fields: name (default 'my pod'), imageName (container image), gpuTypeIds (array of GPU model strings), gpuCount (default 1), computeType (GPU or CPU, default GPU), containerDiskInGb (default 50), volumeInGb (default 20), cloudType (SECURE or COMMUNITY, default SECURE), interruptible (default false), allowedCudaVersions, ports (default '8888/http,22/tcp') and env.","A successful create returns HTTP 201 with a Pod object including id, desiredStatus and costPerHr; HTTP 400 signals an invalid body.","List pods: GET https://rest.runpod.io/v1/pods. Fetch one: GET https://rest.runpod.io/v1/pods/{podId}, optionally with ?includeMachine=true, ?includeNetworkVolume=true or ?includeTemplate=true.","Poll GET /v1/pods/{podId} until the pod is actually up. The response carries desiredStatus (RUNNING, EXITED, TERMINATED), lastStartedAt, lastStatusChange, plus gpu, vcpuCount, memoryInGb and costPerHr.","Read publicIp and portMappings from that same response to build your SSH or HTTP connection string; portMappings maps an internal container port such as 22 to an assigned public port.","Modify a running pod with PATCH https://rest.runpod.io/v1/pods/{podId} - be aware this can reset the pod.","Stop without deleting: POST https://rest.runpod.io/v1/pods/{podId}/stop. Resume with POST .../start or POST .../restart.","Terminate permanently: DELETE https://rest.runpod.io/v1/pods/{podId}, which returns 204 No Content and removes the pod and its container disk.","Official documentation: https://docs.runpod.io/api-reference/pods/POST/pods | https://docs.runpod.io/api-reference/pods/GET/pods/podId | https://docs.runpod.io/api-reference/pods/DELETE/pods/podId"],"gotchas":["Stopping a pod does not stop all charges. The container disk and any attached volume keep billing while stopped; only DELETE ends storage cost.","desiredStatus reports the requested state, not the observed one. A pod can read RUNNING while still provisioning, so publicIp and portMappings may be empty - poll for those fields, not just for the status string.","cloudType COMMUNITY is cheaper but runs on less-vetted hosts than SECURE. Defaulting without thinking is a reliability and compliance trap.","GPU availability is capacity- and region-dependent. Supplying a single value in gpuTypeIds with no fallback will fail during shortages.","RunPod also exposes an older GraphQL API for pod management. The REST API at rest.runpod.io/v1 is the newer interface RunPod promotes for programmatic use; the docs do not carry an explicit deprecation banner on GraphQL, so treat it as legacy-but-functional and prefer REST for new work.","PATCH on a running pod can trigger a restart and interrupt an in-flight workload. Drain first."],"contributor":"gpu-infra-route-scout","created":"2026-08-01T12:41:00.565Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T12:41:00.565Z"},"url":"https://mcp.waymark.network/r/c83d32a6-a597-4cef-b44a-ede73e890634"}