{"openapi":"3.0.0","info":{"description":"RunPod AI developer cloud API (REST v2) — manage GPU pods, serverless endpoints, clusters, network volumes, templates, container registries, catalog and billing on api.runpod.io. Verified live 2026-09-04 (Bearer API key, live OpenAPI 3.1 spec). REST v1 (rest.runpod.io) retires 2026-11-15 and is deliberately not used.","version":"v2"},"servers":[{"description":"RunPod AI developer cloud API (REST v2) — manage GPU pods, serverless endpoints, clusters, network volumes, templates, container registries, catalog and billing on api.runpod.io. Verified live 2026-09-04 (Bearer API key, live OpenAPI 3.1 spec). REST v1 (rest.runpod.io) retires 2026-11-15 and is deliberately not used.","url":"https://api.apirails.com/runpod"}],"paths":{"/v2/account/ssh-keys":{"get":{"tags":["Account"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/account/list-registered-ssh-public-keys","api_endpoint":"https://api.runpod.io/v2/account/ssh-keys"},"summary":"List registered SSH public keys","description":"List registered SSH public keys | Returns the account's registered SSH public keys — the keys provisioned into pods created with `startSsh` and used to authenticate the SSH connections reported in a pod's `ssh` block. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"put":{"tags":["Account"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/account/replace-registered-ssh-public-keys","api_endpoint":"https://api.runpod.io/v2/account/ssh-keys"},"summary":"Replace registered SSH public keys","description":"Replace registered SSH public keys | Replaces the account's full set of registered SSH public keys. Existing keys not present in the request are removed; send `[]` to remove all keys. Keys take effect for pods created afterwards with `startSsh` — running pods are not updated. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"keys":{"type":"array","description":"The full set of SSH public keys to register — this is a complete\nreplacement, not a merge. Each entry is an authorized_keys-style\nline: `  [comment]`, e.g. from\n`~/.ssh/id_ed25519.pub`. Send `[]` to remove all keys. These keys\nare provisioned into pods created with `startSsh` and\nauthenticate both SSH paths reported in the pod's `ssh` block.","required":true,"items":{"type":"string"}}}},"example":{"keys":[["string"]]}}}}}},"/v2/pods":{"get":{"tags":["Pods"],"parameters":[{"name":"includeClusterPods","in":"query","description":"Include cluster member pods in the result. Defaults to false.","required":false,"schema":{"type":"boolean","example":"","items":{"type":"string","enum":[true,false]}}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/list-pods","api_endpoint":"https://api.runpod.io/v2/pods"},"summary":"List pods","description":"List pods | Returns pods owned by the authenticated user. Cluster member\npods are excluded by default; set `includeClusterPods=true` to include\nthem (each carries a non-null `cluster` membership block). | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Pods"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/create-a-pod","api_endpoint":"https://api.runpod.io/v2/pods"},"summary":"Create a pod","description":"Create a pod | Creates a new pod. `name` is always required; supply exactly one of\n`gpu` or `cpu` to select compute (a GPU or a CPU pod). Container\nsettings come from the body, from a template referenced by\n`templateId` (body fields override the template's), or both; `image`\nis required unless `templateId` is set. See `CreatePodRequest` for\nthe full body.\nReturns `201` with the created pod. Provisioning is asynchronous: the\npod starts in `PROVISIONING`, transitions through `STARTING`, and\nreaches `RUNNING` once its container is healthy. Poll `getPod` (or\nwatch the pod's `status`) to observe readiness rather than assuming\nthe pod is running when this call returns.\n## Checking what you can deploy\nThis endpoint places one specific GPU type. It does not search for\ncapacity, and it does not fall back to a different GPU. To find out\nwhat is deployable before you call it, read the catalog:\n- [List GPU types](https://docs.runpod.io/api-reference-v2/catalog/list-gpu-types)\n  — GPU types with pricing, per-cloud ceilings, and, with\n  `include=AVAILABILITY&product=POD`, current pod stock.\n- [List data centers](https://docs.runpod.io/api-reference-v2/catalog/list-data-centers)\n  — locations, with `include=GPU_AVAILABILITY` for stock per data\n  center.\nBoth accept filters that combine, so you can narrow by location and by\ncompute in one request — for example\n`GET /v2/catalog/datacenters?regions=EUROPE&include=GPU_AVAILABILITY`\nreturns only European data centers, each carrying the GPU types\ncurrently available there.\n## Deploying under region and GPU constraints\nIf you need a particular GPU in a particular geography, the working\npattern is read-then-create: narrow the catalog to an acceptable\n(data center, GPU) set, then call this endpoint once per candidate in\nyour order of preference until one returns `201`. The runnable sample\nalongside this operation does exactly that.\nAvailability can change between the catalog read and the create call,\nso treat the catalog as a way to order your candidates, not as a\nreservation — a create can still fail for capacity on a GPU the\ncatalog just reported as available.\nWhich failures are worth retrying:\n| Status | Meaning | Do |\n| --- | --- | --- |\n| `422` | The body does not match the contract. `errors` lists each violation. | Fix the request. Never retry. |\n| `400` | The body matches the contract but was rejected — either it breaks a cross-field rule, or this GPU and data center combination could not be placed. | Try your next candidate. |\n| `402` | Insufficient balance. | Stop; no candidate will succeed. |\n| `403` | Your account cannot access the requested pool. | Skip this candidate, keep going. |\n| `429` | Rate limited. | Back off using `Retry-After`, then resume. |\n| `5xx` | Transient upstream failure. | Retry the same candidate with backoff. |\n`400` covers both \"your request breaks a rule\" and \"no capacity\",\nbecause capacity exhaustion currently carries no machine-readable code\nof its own — only a human-readable `detail`. A rule violation is\ndeterministic, so it fails identically on every candidate: if *every*\ncandidate returns `400`, read the last `detail` as a problem with the\nrequest rather than as absent capacity. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}}},"/v2/pods/{id}":{"get":{"tags":["Pods"],"parameters":[{"name":"id","in":"path","description":"Pod identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/get-a-pod","api_endpoint":"https://api.runpod.io/v2/pods/{id}"},"summary":"Get a pod","description":"Get a pod | Returns a single pod by ID. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"patch":{"tags":["Pods"],"parameters":[{"name":"id","in":"path","description":"Pod identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/update-a-pod","api_endpoint":"https://api.runpod.io/v2/pods/{id}"},"summary":"Update a pod","description":"Update a pod | Partially updates a pod's configuration. This is a PATCH: only the\nfields present in the body are changed, and omitted fields are left\nuntouched. Use empty values only when you explicitly mean to clear a\nfield (for example, set `registry` to `null` or set `ports` to `[]`).\nSee `UpdatePodRequest` for the full body.\nMutable fields: `name`, `image`, `args`, `disk`, `ports`, `env`,\n`registry`, `mounts`, `locked`, and `globalNetworking`. Some changes\napply immediately while others (e.g. `globalNetworking`) take effect\non the pod's next start/restart, as noted on the individual fields.\nPods that belong to a Cluster cannot be updated here — manage them\nthrough `/v2/clusters/{id}`.\nReturns `200` with the full updated pod. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}},"delete":{"tags":["Pods"],"parameters":[{"name":"id","in":"path","description":"Pod identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/terminate-a-pod","api_endpoint":"https://api.runpod.io/v2/pods/{id}"},"summary":"Terminate a pod","description":"Terminate a pod | Permanently terminates and deletes a pod. This is irreversible:\ncompute is released, any `mounts.persistent` host-local storage is\ndestroyed with it (a `mounts.network` volume is only detached — the\nvolume itself is not deleted), and the pod no longer appears in\n`listPods`.\nPods that belong to a Cluster cannot be terminated here — delete the\ncluster via `DELETE /v2/clusters/{id}`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/pods/{id}/logs":{"get":{"tags":["Pods"],"parameters":[{"name":"id","in":"path","description":"Pod identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/stream-pod-logs","api_endpoint":"https://api.runpod.io/v2/pods/{id}/logs"},"summary":"Stream pod logs","description":"Stream pod logs | Streams pod logs as Server-Sent Events. The `source` query parameter\nselects which log source to include.\nThe SSE `data` payload shape is:\n`{ \"source\": \"container\", \"line\": \"...\", \"ts\": \"...\" }`.\nLog-event `id` values are the event `ts` timestamp so\nbrowser/EventSource reconnects can resume with `Last-Event-ID`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/pods/{id}/action":{"post":{"tags":["Pods"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/pods/trigger-a-pod-state-transition","api_endpoint":"https://api.runpod.io/v2/pods/{id}/action"},"summary":"Trigger a pod state transition","description":"Trigger a pod state transition | Triggers a state transition on a pod. Send a JSON body with a single\n`action` field, e.g. `{ \"action\": \"stop\" }`.\nValid actions:\n- `start`     — boot a stopped pod (`EXITED` or `ERROR`) back toward\n  `RUNNING`.\n- `stop`      — stop a running or provisioning pod, releasing GPU/CPU\n  compute while keeping its disk. The pod moves to `EXITED`.\n- `restart`   — restart a `RUNNING` pod's container in place.\n- `terminate` — permanently delete the pod and release its resources\n  (equivalent to `deletePod`).\nWhich actions are valid depends on the pod's current status, and the\ncurrently permitted set is published in the pod's `actions` field:\n`RUNNING` allows `stop`/`restart`/`terminate`; `EXITED` and `ERROR`\nallow `start`/`terminate`; `PROVISIONING` and `STARTING` allow\n`stop`/`terminate`.\n`start`, `stop`, and `restart` return `200` with the updated pod.\n`terminate` returns `204` with no body. Requesting an action that is\nnot valid for the pod's current status returns `409`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"action":{"type":"string","description":"State transition to trigger on a pod.","required":true}}},"example":{"action":["start"]}}}}}},"/v2/clusters":{"get":{"tags":["Clusters"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/list-clusters","api_endpoint":"https://api.runpod.io/v2/clusters"},"summary":"List clusters","description":"List clusters | Returns all clusters owned by the authenticated user. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Clusters"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/create-a-cluster","api_endpoint":"https://api.runpod.io/v2/clusters"},"summary":"Create a cluster","description":"Create a cluster | Creates a multi-node cluster. `compute` sets the homogeneous\npod shape; the container configuration applies to every pod and can be spread\nfrom a template response. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}}},"/v2/clusters/{id}":{"get":{"tags":["Clusters"],"parameters":[{"name":"id","in":"path","description":"Cluster identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/get-a-cluster","api_endpoint":"https://api.runpod.io/v2/clusters/{id}"},"summary":"Get a cluster","description":"Get a cluster | Returns a single cluster by ID. The pods field is an aggregate summary (total + count by status); fetch the member pods themselves from /v2/clusters/{id}/pods. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"patch":{"tags":["Clusters"],"parameters":[{"name":"id","in":"path","description":"Cluster identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/rename-a-cluster","api_endpoint":"https://api.runpod.io/v2/clusters/{id}"},"summary":"Rename a cluster","description":"Rename a cluster | Renames a cluster. This endpoint only changes the cluster\nname — compute shape, type, and container configuration are fixed at\ncreation and cannot be updated. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"body.name (string field from the documented request schema)"}}},"example":{"name":["string"]}}}}},"delete":{"tags":["Clusters"],"parameters":[{"name":"id","in":"path","description":"Cluster identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/delete-a-cluster","api_endpoint":"https://api.runpod.io/v2/clusters/{id}"},"summary":"Delete a cluster","description":"Delete a cluster | Permanently deletes a cluster and terminates all of its member pods. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/clusters/{id}/pods":{"get":{"tags":["Clusters"],"parameters":[{"name":"id","in":"path","description":"Cluster identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/clusters/list-a-clusters-pods","api_endpoint":"https://api.runpod.io/v2/clusters/{id}/pods"},"summary":"List a cluster's pods","description":"List a cluster's pods | Returns the full member pods of a cluster. The cluster summary (`GET /v2/clusters/{id}`) carries only aggregate pod counts; this endpoint returns each member as a complete Pod object. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/serverless":{"get":{"tags":["Serverless"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/list-serverless-endpoints","api_endpoint":"https://api.runpod.io/v2/serverless"},"summary":"List serverless endpoints","description":"List serverless endpoints | Returns all serverless endpoints owned by the authenticated user. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Serverless"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/create-a-serverless-endpoint","api_endpoint":"https://api.runpod.io/v2/serverless"},"summary":"Create a serverless endpoint","description":"Create a serverless endpoint | Creates a serverless endpoint. Callers specify exactly one of `gpu` or\n`cpu`; neither or both returns 400. Container settings come from the\nbody, from a serverless template referenced by `templateId` (body\nfields override the template's), or both; `image` is required unless\n`templateId` is set. See `CreateEndpointRequest` for the full body.\nThe CUDA constraints live on `gpu` — `gpu.allowedCudaVersions` and\n`gpu.minCudaVersion` — so a CPU create cannot express them and the\nschema rejects the attempt with a 422. A non-empty set and a floor are\nmutually exclusive (400 if both are sent); an explicit empty set states\nno constraint and may accompany a floor.\nReturns `201` with the created endpoint. The endpoint can accept jobs\nimmediately, but starts with no active workers unless `workers.min`\nis greater than 0. Workers are provisioned on demand and autoscaled\nbetween `workers.min` and `workers.max` according to the `scaling`\npolicy, so the first request to an idle endpoint may incur cold-start\nlatency while a worker pulls its image and boots.\n## Checking what you can deploy\n`gpu.pools` takes serverless GPU **pool** IDs, not the GPU type IDs\nused for pods. `gpu.excludedTypes` takes the type IDs — it subtracts\nspecific cards from the pools you picked. Read both from the catalog\nbefore you create:\n- [List GPU types](https://docs.runpod.io/api-reference-v2/catalog/list-gpu-types)\n  — the `pool` field carries the pool ID for each GPU type (`null`\n  means that type is not in a serverless pool). Add\n  `include=AVAILABILITY&product=SERVERLESS` for current serverless\n  stock.\n- [List data centers](https://docs.runpod.io/api-reference-v2/catalog/list-data-centers)\n  — locations to constrain with `dataCenterIds`, with\n  `include=GPU_AVAILABILITY` for stock per data center.\nUnlike pod creation, you do not need to retry across GPUs yourself:\nlist every pool you are willing to run on and workers are placed on\nwhichever one has capacity. Listing more pools — and leaving\n`dataCenterIds` unset — gives the scheduler more room and reduces the\nchance of workers failing to start when a single pool is exhausted.\nIf your workload needs a specific card, pick the pool that holds it and\nexclude the rest of that pool with `gpu.excludedTypes`. Keep at least\none type in the selection — upstream rejects a selection that leaves\nnone. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}}},"/v2/serverless/{id}":{"get":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/get-a-serverless-endpoint","api_endpoint":"https://api.runpod.io/v2/serverless/{id}"},"summary":"Get a serverless endpoint","description":"Get a serverless endpoint | Returns a single serverless endpoint by ID. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"patch":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/update-a-serverless-endpoint","api_endpoint":"https://api.runpod.io/v2/serverless/{id}"},"summary":"Update a serverless endpoint","description":"Update a serverless endpoint | Partially updates a serverless endpoint. This is a PATCH: only the\nfields present in the body are changed; omitted fields are left\nuntouched. See `UpdateEndpointRequest` for the full body.\nMutable fields: `name`, `gpu`, `cpu`, `workers` (`min`/`max`),\n`scaling` (`type`/`value`/`idleTimeout`), `dataCenterIds`,\n`networkVolumes`, `timeout`, `flashboot`, and the container settings\n(`image`, `args`, `disk`, `ports`, `env`, `registry`).\nOmitted compute preserves the current selection. `cpu` completely\nreplaces a CPU endpoint's selection; compute family is immutable.\n`gpu` on CPU, `cpu` on GPU, or both fields returns 400.\nReturns `200` with the full updated endpoint. Effect timing differs\nby field: scaling and worker-bound settings (`workers`, `scaling`,\n`timeout`) are applied to the autoscaler promptly, while\ncontainer-affecting changes (e.g. `image`, `env`) create a new\nendpoint release that rolls out as workers cycle — in-flight workers\nkeep the previous version until they are replaced. Track rollout via\n`listEndpointReleases`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}},"delete":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/delete-a-serverless-endpoint","api_endpoint":"https://api.runpod.io/v2/serverless/{id}"},"summary":"Delete a serverless endpoint","description":"Delete a serverless endpoint | Permanently deletes a serverless endpoint and its bound template.\nThis is irreversible: all workers are terminated and any queued or\nin-progress jobs are cancelled. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/serverless/{id}/workers":{"get":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/list-serverless-endpoint-workers","api_endpoint":"https://api.runpod.io/v2/serverless/{id}/workers"},"summary":"List serverless endpoint workers","description":"List serverless endpoint workers | Lists the active workers for a serverless endpoint.\n**Returns.** A `200` with a `ListEndpointWorkersResponse`: a\n`workers` array (one entry per active worker, each carrying its `id`,\n`status`, and runtime details) plus a `summary` of worker counts\ngrouped by status. Only currently active workers are included;\nscaled-down workers are not returned.\n**How `status` is determined.** Each worker's `status` is derived by\nreconciling the worker pod's lifecycle status with the endpoint's\nlive job-queue view (which workers are actively serving requests).\nWhen the job-queue view is unavailable, the response degrades\ngracefully: the shape is unchanged, but each `status` and the summary\ncounts fall back to pod lifecycle alone. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/serverless/{id}/releases":{"get":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/list-serverless-endpoint-releases","api_endpoint":"https://api.runpod.io/v2/serverless/{id}/releases"},"summary":"List serverless endpoint releases","description":"List serverless endpoint releases | Returns the endpoint's release history (newest first) plus a rollout\nsummary of how many workers are running the current version. Each\nrelease is a versioned configuration snapshot with a `diff` of what\nchanged; build-driven releases carry a `buildId` (fetch build detail via\nthe builds sub-routes). | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/serverless/{id}/builds":{"get":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/list-serverless-endpoint-builds","api_endpoint":"https://api.runpod.io/v2/serverless/{id}/builds"},"summary":"List serverless endpoint builds","description":"List serverless endpoint builds | Returns the endpoint's GitHub build history, newest first (RunPod\nGitHub-build integration). At most the 100 most recent builds are\nreturned; any older build can still be fetched by id via\n`GET /v2/serverless/{id}/builds/{buildId}`. Stream a build's logs via\n`/v2/serverless/{id}/builds/{buildId}/logs`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/serverless/{id}/builds/{buildId}":{"get":{"tags":["Serverless"],"parameters":[{"name":"buildId","in":"path","description":"GitHub build identifier (from GET /v2/serverless/{id}/builds or a release's `buildId`)","required":true,"schema":{"type":"string","example":""}},{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/get-a-serverless-endpoint-build","api_endpoint":"https://api.runpod.io/v2/serverless/{id}/builds/{buildId}"},"summary":"Get a serverless endpoint build","description":"Get a serverless endpoint build | Returns one of the endpoint's GitHub builds by id, regardless of age —\nunlike the list, which is capped to recent history. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/serverless/{id}/workers/{workerId}/logs":{"get":{"tags":["Serverless"],"parameters":[{"name":"id","in":"path","description":"Serverless endpoint identifier","required":true,"schema":{"type":"string","example":""}},{"name":"workerId","in":"path","description":"Worker identifier (from GET /v2/serverless/{id}/workers)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/serverless/stream-serverless-worker-logs","api_endpoint":"https://api.runpod.io/v2/serverless/{id}/workers/{workerId}/logs"},"summary":"Stream serverless worker logs","description":"Stream serverless worker logs | Streams a serverless worker's logs as Server-Sent Events. The `source`\nquery parameter selects which log source to include.\nThe SSE `data` payload shape is:\n`{ \"source\": \"container\", \"line\": \"...\", \"ts\": \"...\" }`.\nLog-event `id` values are the event `ts` timestamp so browser/EventSource\nreconnects can resume with `Last-Event-ID`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/templates":{"get":{"tags":["Templates"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/templates/list-templates","api_endpoint":"https://api.runpod.io/v2/templates"},"summary":"List templates","description":"List templates | Returns all templates owned by the authenticated user. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Templates"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/templates/create-a-template","api_endpoint":"https://api.runpod.io/v2/templates"},"summary":"Create a template","description":"Create a template | Creates a reusable container-configuration preset — image, disk,\nports, env, registry, and mount settings — for pods and serverless\nendpoints. Pass its ID as `templateId` to `createPod` or\n`createEndpoint`, or spread its fields into the request body\ndirectly. Returns the created template. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference","required":true},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}}},"/v2/templates/{id}":{"get":{"tags":["Templates"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/templates/get-a-template","api_endpoint":"https://api.runpod.io/v2/templates/{id}"},"summary":"Get a template","description":"Get a template | Returns the full configuration of a single template by ID. Serves\nboth templates you own and public catalog templates — everything you\ncan read. Updates and deletes remain restricted to templates you own. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"patch":{"tags":["Templates"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/templates/update-a-template","api_endpoint":"https://api.runpod.io/v2/templates/{id}"},"summary":"Update a template","description":"Update a template | Partially updates a template. This is a PATCH: only the fields\npresent in the body are changed; omitted fields are left untouched.\nSee `UpdateTemplateRequest` for the full body.\nMutable fields: `name`, `image`, `args`, `disk`, `ports`, `env`,\n`registry`, `mounts`, `serverless`, `public`, and `category`.\nOnly the template's owner can update it (authenticated via the\nrequest's API key); public catalog templates are readable via GET\nbut return `404` here. Returns `200` with the full updated template. Pods and\nendpoints already created from this template are not changed\nretroactively — the template is a snapshot applied at creation time. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"args":{"type":"string","description":"Arguments passed to the container entrypoint"},"disk":{"type":"number","description":"Container disk in GB (ephemeral, wiped on restart)"},"env":{"type":"object","description":"Environment variables as key-value pairs","properties":{}},"image":{"type":"string","description":"Docker image reference"},"ports":{"type":"array","description":"Exposed ports, formatted as port/protocol","items":{"type":"string"}}}},"example":{"args":["string"],"disk":[0],"env":[{}],"image":["string"],"ports":[["string"]]}}}}},"delete":{"tags":["Templates"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/templates/delete-a-template","api_endpoint":"https://api.runpod.io/v2/templates/{id}"},"summary":"Delete a template","description":"Delete a template | Permanently deletes a template by ID. Only the template's owner can\ndelete it — public catalog templates return `404` here. Rejected if\nthe template is currently referenced by a pod (see that pod's\n`template` field) or bound to a serverless endpoint. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/network-volumes":{"get":{"tags":["Network Volumes"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/network-volumes/list-network-volumes","api_endpoint":"https://api.runpod.io/v2/network-volumes"},"summary":"List network volumes","description":"List network volumes | Returns all network volumes owned by the authenticated user. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Network Volumes"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/network-volumes/create-a-network-volume","api_endpoint":"https://api.runpod.io/v2/network-volumes"},"summary":"Create a network volume","description":"Create a network volume | Provisions a new network volume — persistent, network-attached\nstorage that can be mounted into pods and serverless workers.\nRequired inputs are `name`, `size` (in GB), and `dataCenter`; an\noptional `type` selects the storage tier and is immutable after\ncreation. See `CreateNetworkVolumeRequest` for the size bounds and\ntier options.\nThis creates a billable persistent resource that keeps incurring\nstorage charges until it is deleted. Returns `201` with the created\nnetwork volume, including its assigned `id`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"type":{"type":"string","description":"Data center network volume storage type."},"dataCenter":{"type":"string","description":"Data center in which to create the volume","required":true},"name":{"type":"string","description":"Human-readable name","required":true},"size":{"type":"number","description":"Storage to allocate in GB","required":true}}},"example":{"type":["STANDARD"],"dataCenter":["string"],"name":["string"],"size":[0]}}}}}},"/v2/network-volumes/{id}":{"get":{"tags":["Network Volumes"],"parameters":[{"name":"id","in":"path","description":"Network volume identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/network-volumes/get-a-network-volume","api_endpoint":"https://api.runpod.io/v2/network-volumes/{id}"},"summary":"Get a network volume","description":"Get a network volume | Returns a single network volume by ID. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"patch":{"tags":["Network Volumes"],"parameters":[{"name":"id","in":"path","description":"Network volume identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/network-volumes/update-a-network-volume","api_endpoint":"https://api.runpod.io/v2/network-volumes/{id}"},"summary":"Update a network volume","description":"Update a network volume | Updates mutable fields on a network volume. Only provided fields are changed.\nNote: `size` may only increase; attempts to reduce size will be rejected. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"New human-readable name"},"size":{"type":"number","description":"New size in GB. Must be greater than or equal to the current size —\nnetwork volume storage cannot be reduced."}}},"example":{"name":["string"],"size":[0]}}}}},"delete":{"tags":["Network Volumes"],"parameters":[{"name":"id","in":"path","description":"Network volume identifier","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/network-volumes/delete-a-network-volume","api_endpoint":"https://api.runpod.io/v2/network-volumes/{id}"},"summary":"Delete a network volume","description":"Delete a network volume | Permanently deletes a network volume and releases its storage. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/registries":{"get":{"tags":["Registries"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/list-container-registries","api_endpoint":"https://api.runpod.io/v2/registries"},"summary":"List container registries","description":"List container registries | Returns all container registry credentials owned by the authenticated user. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Registries"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/create-a-container-registry-credential","api_endpoint":"https://api.runpod.io/v2/registries"},"summary":"Create a container registry credential","description":"Create a container registry credential | Stores credentials for a private container registry. Credentials are write-only. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"body.name (string field from the documented request schema)","required":true},"password":{"type":"string","description":"Registry password (write-only, not returned in responses)","required":true},"username":{"type":"string","description":"Registry username (write-only, not returned in responses)","required":true}}},"example":{"name":["string"],"password":["string"],"username":["string"]}}}}}},"/v2/registries/{id}":{"get":{"tags":["Registries"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/get-a-container-registry-credential","api_endpoint":"https://api.runpod.io/v2/registries/{id}"},"summary":"Get a container registry credential","description":"Get a container registry credential | Returns a single container registry credential by ID. `username` and\n`password` are never included in the response — credentials are\nwrite-only, matching `createRegistry`. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"delete":{"tags":["Registries"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/delete-a-container-registry-credential","api_endpoint":"https://api.runpod.io/v2/registries/{id}"},"summary":"Delete a container registry credential","description":"Delete a container registry credential | Permanently deletes a container registry credential by ID. Rejected\nif any pod currently uses this credential to pull its image.\nTemplates that reference it are not part of that check — they\nsilently lose the reference (`registry` becomes null) instead of\nblocking the delete. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/registries/delegations":{"get":{"tags":["Registries"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/list-all-ecr-delegations","api_endpoint":"https://api.runpod.io/v2/registries/delegations"},"summary":"List all ECR delegations","description":"List all ECR delegations | List all ECR delegations | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]},"post":{"tags":["Registries"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/register-an-ecr-delegation","api_endpoint":"https://api.runpod.io/v2/registries/delegations"},"summary":"Register an ECR delegation","description":"Register an ECR delegation | Register an ECR delegation | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"Optional name for the delegation"},"resource":{"type":"string","description":"ECR resource ARN","required":true}}},"example":{"name":["string"],"resource":["string"]}}}}}},"/v2/registries/delegations/{id}":{"delete":{"tags":["Registries"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/registries/revoke-an-ecr-delegation","api_endpoint":"https://api.runpod.io/v2/registries/delegations/{id}"},"summary":"Revoke an ECR delegation","description":"Revoke an ECR delegation | Revoke an ECR delegation | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v2/catalog/gpus":{"get":{"tags":["Catalog"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/list-gpu-types","api_endpoint":"https://api.runpod.io/v2/catalog/gpus"},"summary":"List GPU types","description":"List GPU types | Returns available GPU types with pricing. Availability is included only when requested with include=AVAILABILITY, which requires `product` — stock differs by product context. With countryCodes, the list is narrowed to GPU types deployable in those countries, so \"this geography + this chip\" resolves in one read. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/gpus/{id}":{"get":{"tags":["Catalog"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/get-a-gpu-type","api_endpoint":"https://api.runpod.io/v2/catalog/gpus/{id}"},"summary":"Get a GPU type","description":"Get a GPU type | Returns a single GPU type with pricing. Availability details are included only when requested with include=AVAILABILITY, which requires `product` — stock differs by product context. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/cpus":{"get":{"tags":["Catalog"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/list-cpu-types","api_endpoint":"https://api.runpod.io/v2/catalog/cpus"},"summary":"List CPU types","description":"List CPU types | Returns available CPU flavors. Availability is included only when requested with include=AVAILABILITY, which requires `product` — stock differs by product context. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/cpus/{id}":{"get":{"tags":["Catalog"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/get-a-cpu-type","api_endpoint":"https://api.runpod.io/v2/catalog/cpus/{id}"},"summary":"Get a CPU type","description":"Get a CPU type | Returns a single CPU type with pricing. Availability details are included only when requested with include=AVAILABILITY, which requires `product` — stock differs by product context. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/datacenters":{"get":{"tags":["Catalog"],"parameters":[{"name":"compliance","in":"query","description":"Comma-separated Compliance enum values. Values within this filter use AND semantics; compliance=GDPR,SOC_2_TYPE_2 requires both certifications. Different filter families combine with AND.","required":false,"schema":{"type":"array","example":""}},{"name":"globalNetwork","in":"query","description":"Filter by global networking support. true returns only data centers that support global networking; false only those that do not. Different filter families combine with AND.","required":false,"schema":{"type":"boolean","example":"","items":{"type":"string","enum":[true,false]}}},{"name":"include","in":"query","description":"Comma-separated optional expansions. Supported value: GPU_AVAILABILITY, CPU_AVAILABILITY.","required":false,"schema":{"type":"array","example":""}},{"name":"networkVolumeTypes","in":"query","description":"Comma-separated volume types. Supported values: STANDARD, HIGH_PERFORMANCE. Values within this filter use AND semantics; volumes=STANDARD,HIGH_PERFORMANCE requires both storage types. Different filter families combine with AND.","required":false,"schema":{"type":"array","example":""}},{"name":"regions","in":"query","description":"Comma-separated DataCenterRegion enum values. Values within this filter use OR semantics. Different filter families combine with AND.","required":false,"schema":{"type":"array","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/list-data-centers","api_endpoint":"https://api.runpod.io/v2/catalog/datacenters"},"summary":"List data centers","description":"List data centers | Returns available data center locations with region, compliance, supported network volume tiers, and global networking support. Use include=GPU_AVAILABILITY or include=CPU_AVAILABILITY to add per-resource availability arrays to each data center. The regions, networkVolumeTypes, compliance, and globalNetwork query parameters filter the list before it is returned. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/datacenters/{id}":{"get":{"tags":["Catalog"],"parameters":[{"name":"id","in":"path","description":"id (path parameter from the official API reference)","required":true,"schema":{"type":"string","example":""}},{"name":"include","in":"query","description":"Comma-separated optional expansions. Supported value: GPU_AVAILABILITY, CPU_AVAILABILITY.","required":false,"schema":{"type":"array","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/get-a-data-center","api_endpoint":"https://api.runpod.io/v2/catalog/datacenters/{id}"},"summary":"Get a data center","description":"Get a data center | Returns a single data center. Availability is included only when requested with include=GPU_AVAILABILITY or include=CPU_AVAILABILITY. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/catalog/templates":{"get":{"tags":["Catalog"],"parameters":[{"name":"source","in":"query","description":"Which slice of the catalog to return: `official` for\nRunpod-curated templates (default), `verified` for\nRunpod-verified community templates, or `community` for all other\npublicly shared templates.","required":false,"schema":{"type":"string","example":"","items":{"type":"string","enum":["official","verified","community"]}}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/catalog/list-public-templates","api_endpoint":"https://api.runpod.io/v2/catalog/templates"},"summary":"List public templates","description":"List public templates | Returns the public template catalog. `source` selects which slice:\n`official` (the default) is Runpod-curated templates, `verified` is\ncommunity templates Runpod has verified, and `community` is everything\nelse other users have shared publicly. Both pod and serverless\ntemplates appear — use each entry's `serverless` flag to tell them\napart. `registry` is always null for templates you don't own. Your own\ntemplates (public or private) are managed under `/v2/templates`; fetch\nany individual template — catalog or owned — via `/v2/templates/{id}`.\nAt most 100 templates are returned. Pagination is not yet supported. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing":{"get":{"tags":["Billing"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-aggregated-billing-history","api_endpoint":"https://api.runpod.io/v2/billing"},"summary":"Get aggregated billing history","description":"Get aggregated billing history | Returns time-bucketed total spend across all billable Runpod resources for the authenticated user. Use startTime/endTime with bucketSize for an explicit range, or lastN with bucketSize for the most recent buckets. Each record reports one bucket's total plus pod, serverless, storage, public endpoint, and Instant Cluster cost components. The metadata block echoes the resolved query window, record count, and totals across all returned buckets. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing/pods":{"get":{"tags":["Billing"],"parameters":[{"name":"podId","in":"query","description":"Filter to a specific pod (GPU or CPU).","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-pod-billing-history","api_endpoint":"https://api.runpod.io/v2/billing/pods"},"summary":"Get pod billing history","description":"Get pod billing history | Returns pod-only billing detail for the authenticated user, split into time buckets by startTime/endTime with bucketSize or by lastN recent buckets. Use podId to narrow the response to one GPU or CPU pod; without it, records are emitted per pod per bucket. Each record includes podId, GPU, CPU, disk, and total amounts, while metadata echoes the resolved query and totals across the pod records. Use listBilling when you need aggregate spend across every billable resource family. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing/serverless":{"get":{"tags":["Billing"],"parameters":[{"name":"serverlessId","in":"query","description":"Filter to a specific serverless endpoint.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-serverless-billing-history","api_endpoint":"https://api.runpod.io/v2/billing/serverless"},"summary":"Get serverless billing history","description":"Get serverless billing history | Returns serverless endpoint billing detail for the authenticated user, split into time buckets by startTime/endTime with bucketSize or by lastN recent buckets. Use serverlessId to filter to one endpoint; without it, records are emitted per serverless endpoint per bucket. Each record reports endpoint-level GPU, CPU, disk, platform fee, and total amounts. This is distinct from pod billing, which covers standalone GPU and CPU pod costs rather than serverless endpoint workloads. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing/endpoints":{"get":{"tags":["Billing"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-public-endpoint-billing-history","api_endpoint":"https://api.runpod.io/v2/billing/endpoints"},"summary":"Get public endpoint billing history","description":"Get public endpoint billing history | Returns Runpod public endpoint billing history for the authenticated user, split into time buckets by startTime/endTime with bucketSize or by lastN recent buckets. Each record reports the endpoint total for one bucket, and metadata echoes the resolved query window, record count, and total endpoint amount across all returned records. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing/network-volumes":{"get":{"tags":["Billing"],"parameters":[{"name":"networkVolumeId","in":"query","description":"Filter to a specific network volume.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-network-volume-billing-history","api_endpoint":"https://api.runpod.io/v2/billing/network-volumes"},"summary":"Get network volume billing history","description":"Get network volume billing history | Returns network volume billing history for the authenticated user, split into time buckets by startTime/endTime with bucketSize or by lastN recent buckets. Use networkVolumeId to filter to one volume; without it, records are emitted per volume per bucket. Each record includes standard storage, high-performance storage, and total amounts, while metadata reports the resolved query, distinct volume count, and totals across the returned records. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}},"/v2/billing/clusters":{"get":{"tags":["Billing"],"parameters":[{"name":"clusterId","in":"query","description":"Filter to a specific cluster.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.runpod.io/api-reference-v2/billing/get-cluster-billing-history","api_endpoint":"https://api.runpod.io/v2/billing/clusters"},"summary":"Get cluster billing history","description":"Get cluster billing history | Returns Cluster billing history for the authenticated user, split into time buckets by startTime/endTime with bucketSize or by lastN recent buckets. Use clusterId to filter to one cluster; without it, records are emitted per cluster per bucket. Each record includes GPU compute, disk, inter-node networking, and total amounts. Clusters are GPU-only, so no CPU cost component is returned. | Source: official OpenAPI spec at https://api.runpod.io/v2/openapi.json","security":[{"bearerAuth":[]}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}]}