POST
Scale Plane

Authorizations

Authorization
string
header
required

Interactive user session: the login JWT, sent as Authorization: Bearer <token>.

Path Parameters

key
string
required

Body

application/json
desired_count
integer
required

Response

Successful Response

One plane's card for the SA GPU screen.

key
string
required
name
string
required
type
string
required
gpu_type
string
required
enabled
boolean
required
status
string
required
est_hourly_cost
number
required
capacity_per_pod
integer
required
datacenter
string | null
live_url
string | null
est_hourly_cost_source
string
default:registry_estimate
error
string | null
desired_count
integer
default:1
auto_scale
boolean
default:false
pods
PodInfo ┬╖ object[]
canary
CanaryStatusView ┬╖ object | null

The plane's active canary (Phase H6), or absent when none is configured. version is the OPERATOR'S label tying the rollout to the model/adapter they just trained (it must match the model_version the canary pod was launched with); pods/healthy count the plane's pods at that version.

workers_min
integer | null
workers_max
integer | null
co_hosted_on
string | null
pod_image
string | null
blockers
ServingBlockerView ┬╖ object[]
bake
BakeStatusView ┬╖ object | null

The pod's baked-store freshness verdict (services/voice-engine/scripts/bake_manifest.py).

A baked image pins its model set at BUILD time and the warm-store skip deliberately declines to re-sync it, so a pod can serve last week's weights indefinitely with no symptom but behaviour. status is fresh | stale | unknown (the bucket could not be listed тАФ never guessed).

pinned_datacenter
string | null
pinned_gpu_type
string | null
pinned_gpu_forced
boolean
default:false
hardware_source
string
default:auto
hardware_pinned_at
string<date-time> | null
hardware_drift
string | null
hardware_warning
string | null
direct_url
string | null
direct_url_in_use
boolean
default:false

Whether live traffic is actually being ROUTED at the direct address (VOICE_POD_DIRECT_URL). Knowing the address and using it are different facts, and this one is OFF by default on purpose. A RunPod direct TCP port is PLAINTEXT тАФ the engine terminates no TLS, so the hop is plain HTTP across the public internet тАФ and the bearer sent on it is the RunPod ACCOUNT api key, which creates and terminates pods and whose GET /v1/pods returns every pod's env including the workers' S3 credentials. Turning this on leaks that key, and the call audio and transcripts beside it, to any observer on the path, ~3 times per conversational turn. PREREQUISITES before it may carry live traffic: (1) the hop is encrypted тАФ the engine terminating TLS on the direct port, or a mutually-authenticated tunnel (WireGuard/Tailscale) between the api task and the pod; and (2) the bearer is a NARROW, pod-scoped token instead of the account key. Neither is in place today. Read pod_pool.prefer_direct_pod_urls before flipping it; use pod_rtt_probe compare to measure without routing anything.