Skip to main content
You get a Model Deployment: a stable address that application traffic can call, serving whatever revision is currently promoted. Most people create one from the console’s Deployments page instead. The API is here because a deployment is the thing you most often want in a script.

A Deployment is not a Playground Session

Where the model comes from

model_source.kind is one of: model with no version is what makes tp model promote the only step needed to change what is being served. See the model registry. Both are pinned on the way in. An artifact source records which exported step it took, and a model source with no version resolves production once and stores the number it got. A revision that loads different weights after a restart is not a revision, and re-following a moving pointer on every launch is how that happened.

Serving configuration

tensor_parallel_size × pipeline_parallel_size × data_parallel_size must equal gpus. Anything else is a container that either cannot start or quietly uses fewer cards than it was charged for, and the second is worse because nothing looks wrong. For a knob the schema does not model, extra_args is passed to the engine verbatim after the platform’s own flags, and env sets the engine process environment — VLLM_*, NCCL_*, HF_HOME. Flags the platform has to be right about, such as --port and --model, are reserved and refused. Credentials do not belong in env. A private model source takes a governed Model Credential, which is never echoed back on a read.

Proxied or direct

serve_mode decides whether the console is in the data path. A direct deployment captures nothing, so there is no Reflow buffer to mine later. Pick it for latency, knowing that.

Which Fleet serves it

fleet_id is yours to choose and the platform never picks for you. A deployment is long-lived and its address outlives the decision, and Fleets differ on things the platform cannot rank: which department owns the machines, which data may touch them.

Call it

That returns the token once. Then application traffic uses the OpenAI-compatible endpoint:
A Deployment Token authorises traffic to one deployment and is revocable on its own, independent of anyone’s login session. Revoke one with DELETE /api/model-deployments/<id>/tokens/<token_id>.

Change what it serves

A revision is an immutable snapshot of the model source and the serving configuration together. Promotion switches the endpoint to a revision that is already ready, so the address never points at something still starting. allow_downtime: true skips waiting, for a deployment whose cards cannot hold both revisions at once. suspend releases the serving capacity and keeps the identity, the revisions, the address and the tokens. It is not deletion.

Check it worked

status reads ready and current_revision.internal_endpoint is filled. The console’s Deployments page shows the same thing, plus logs and metrics for the engine process. desired_state is what you asked for and status is what is observed. They differ while a revision starts, and a difference that persists has its reason in last_error.

Next

Model registry · Reflow · The Deployments page · Inference API