# Set or replace a staged rollout

> Starts serving two archived versions side by side: canary_percent of traffic gets canary_version, the rest gets stable_version.

Starts serving two archived versions side by side: `canary_percent` of traffic gets `canary_version`, the rest gets `stable_version`.

Assignment is deterministic — it hashes the actor behind the request's session (falling back to the session itself), so one end user never flip-flops between configs mid-conversation. Requests with neither are split randomly.

While a release is active the agent's live columns act as a **draft**: further edits archive new versions but do not disturb either side of the running split. End the rollout with `promote` or `abort`.

  Request

<ParamsDetails
  {...require("./set-agent-release.ParamsDetails.json")}
>

<RequestSchema
  {...require("./set-agent-release.RequestSchema.json")}
>

<StatusCodes
  {...require("./set-agent-release.StatusCodes.json")}
>
