v

latestOpenAPI 3.1.02026-08-08139159197.8 KB
Internal

Create a self-hosted serving deployment (platform admin)

Records the operator's intent to run N replicas of an inference engine for one public catalog model. The spec is validated hard at admission (the engine must exist and the replica must plan) so a row that could never dispatch is rejected here instead of failing later. The new deployment starts in status pending; the serving reconcile loop admits replicas, stages weights, probes readiness, and registers the pool backend from there.

post/v1/admin/inference/deployments

Request body

acknowledgeLaneJoinboolean

Required (true) to create an independent deployment into a lane that already has live deployments. Without it such a create is rejected with LANE_INTENT_REQUIRED naming the lane's current members, because "add capacity beside the live lane" and "replace the live lane" must never be the same request body. Not stored: it describes this request, not the deployment.

backendWeightinteger

Initial routing weight; defaults to 0 (standby)

dtypestring
enginestring required

Must resolve to a known engine (e.g. vllm, sglang)

engineImagestring

Engine container image override

envobject
extraArgsstring[]
gpuCountPerReplicainteger required
gpuModelIdstring required
isolatedboolean

Launch and health-check replicas without ever publishing their pool as a catalog backend. Requires backendWeight 0.

maxConcurrencyPerReplicainteger
maxModelLeninteger
maxPromptBytesinteger

Exclusive text-request byte ceiling for this deployment's routing lane; 0 or absent = unbounded

minPromptBytesinteger

Inclusive text-request byte floor for this deployment's routing lane; 0 or absent = unbounded

nativeFamiliesstring[]

Defaults to chat_completions at registration

nodePoolstring

Stable logical capacity lane, e.g. rtx5090 or h100. Deployments in different node pools keep independent routing weights.

organizationIdstring required

Org the managed replicas run (and meter) under

publicModelIdstring required

Catalog model the pool backend registers on. Must already be seeded, with pricing

quantizationstring
replicasDesiredinteger required

Must lie within replicasMin..replicasMax

replicasMaxinteger required
replicasMininteger required
rolloutRole'' | 'green'

Omit (or "") to create an INDEPENDENT weighted capacity member of the lane. Set "green" to start a blue/green rollout that ramps traffic onto this version and eventually demotes the lane's older deployments. A green must start at backendWeight 0, and only one may be live per lane.

servedModelIdstring required

Must equal the catalog backend ref the gateway rewrites to

versionstring
weightsRefstring

Staged-checkpoint reference; omit to let the engine load from its own source

Response

Created

backendCatalogWeightinteger

Live catalog routing weight of this deployment's backend. Only present when backendRegistered is true. May differ from backendWeight (the row mirror) while a rollout ramp is in flight.

backendHealthyboolean

Live catalog health of this deployment's backend (the kill switch). Only present when backendRegistered is true.

backendRegisteredboolean

Whether this deployment's pool:// backend is currently present on the catalog model row. Absent when the live catalog state could not be read; false until the first replica passes readiness.

backendVersionstring

The rollout tag this deployment's backend reports to the gateway as the version metric label on ig_model_requests_total and ig_stream_ttft_seconds. Use it to separate the two sides of a rollout in a dashboard query. Only present when backendRegistered is true.

backendWeightinteger required

Routing weight of the catalog backend. 0 = standby (blue/green starts here)

createdAtstring required
dtypestring
enginestring required

Inference engine, e.g. vllm or sglang

engineImagestring

Engine container image override; absent = the engine's default

envobject
extraArgsstring[]
gpuCountPerReplicainteger required
gpuModelIdstring required
idstring required
isolatedboolean required

True when replicas and their private endpoint pool are for direct operator testing only. Isolated deployments never register a catalog backend, never participate in blue/green rollout, and cannot receive gateway traffic.

maxConcurrencyPerReplicainteger
maxModelLeninteger
maxPromptBytesinteger

Exclusive text-request byte ceiling for routing eligibility; 0 or absent = unbounded. Routing hint only, not a context limit.

minPromptBytesinteger

Inclusive text-request byte floor for routing eligibility; 0 or absent = unbounded. Routing hint only, not a context limit.

nativeFamiliesstring[]
nodePoolstring

Stable logical capacity lane within the public model. Blue/green only replaces versions in the same node pool; empty preserves legacy model-wide grouping.

organizationIdstring required

Org that owns the managed replicas (and their metering)

poolIdstring

Endpoint pool the deployment's replicas register in

publicModelIdstring required

Catalog model this deployment serves capacity for

quantizationstring
readyReplicasinteger required
replicaVmIdsstring[]
replicasDesiredinteger required
replicasMaxinteger required
replicasMininteger required
rolloutRole'' | 'green'

Opt-in blue/green role. Empty (default) = an INDEPENDENT weighted capacity member of its lane, never blue or green. "green" = the lane's successor generation: the controller ramps it against the older members under a capacity guard and cuts them over once it reaches capacity parity. Rollouts are never implicit.

servedModelIdstring required

Model id the engine serves; must equal the catalog backend ref

status'pending' | 'deploying' | 'ready' | 'degraded' | 'scaling' | 'draining' | 'stopped' | 'failed' required
statusReasonstring

Human-readable cause for degraded/failed states

updatedAtstring required
versionstring

Generation marker for blue/green within one public model and node pool

weightsRefstring

Staged-checkpoint reference; absent = the engine loads from its own source