> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Routing and versions

> Control target weights and parameters, and isolate changes before production rollout.

Routing defines which model serves a task version. Every target contains a model reference, non-negative weight, and optional parameter overrides.

## Weights are relative

Weights do not need to add to 100. A configuration with weights `3` and `1` sends approximately 75% and 25%. A zero-weight target stays available in the configuration but receives no new weighted traffic.

Use zero weight to preserve the previous model for visibility and easy rollback after a full promotion.

## Sticky routing

When a request supplies `wandb.thread_id` or `gen_ai.conversation.id`, the proxy deterministically keeps that conversation on one target for the routing revision. Without a conversation ID, each request is selected independently.

## Target parameters

Expand **Parameters** under a model to add values such as temperature, reasoning effort, response format, or provider-specific controls. Numbers, booleans, arrays, and objects are parsed from JSON; other text remains a string.

The stored override wins over the same field supplied by the caller.

## Save to an existing or new version

Open the task's **Routing** page. Add or edit targets, choose the destination in the version bar, and select **Save routing**. The version bar is part of the same save action:

* choose an existing version to replace its desired routing;
* choose the new-version option to create it only when you click **Save routing**;
* call the new version with `task@vN`.

Publishing is asynchronous. A saved desired configuration is serving only after its deployment status becomes **Applied** at the same revision.

<Warning>
  Deleting a version makes callers pinned to it receive 404 responses. Version 1 cannot be deleted.
</Warning>

<Accordion title="API: Replace routing for a task version (PUT /tasks/{alias}/versions/{version}/routing)">
  Routing updates replace the whole target list. Keep the previous model at weight `0` when you want it available for rollback:

  ```bash theme={"system"}
  curl --request PUT \
    --url "https://distillation.training.wandb.ai/v1/tasks/ticket-classifier/versions/2/routing" \
    --header "Authorization: Bearer $WANDB_API_KEY" \
    --header "Wandb-Entity: your-team" \
    --header "Content-Type: application/json" \
    --data '{
      "targets": [
        {"model_ref": "openai/gpt-5.6-sol", "weight": 0},
        {"model_ref": "wandb-inference/your-fine-tuned-model", "weight": 1}
      ]
    }'
  ```

  Poll the returned routing state until deployment is `applied` at the current revision. See [Replace version routing](/model-distillation/reference/management).
</Accordion>
