Skip to main content
PUT
Create or repoint an alias

Authorizations

Authorization
string
header
required

Your workspace API key, e.g. sk_sovereign_..., sent as Authorization: Bearer <key>.

Body

application/json
name
string
required

3–64 chars (letters, numbers, dots, dashes, underscores). Scoped to your workspace — a name that isn't an alias is treated as a normal model id, so aliases never shadow the catalog.

Example:

"support-bot"

target_model
string
required

The model requests route to. Validated against the live catalog.

Example:

"Qwen/Qwen3-32B"

canary_model
string | null

Optional. A share of requests route here instead — for a gradual cutover.

canary_percent
integer
default:0

0 = no split. 100 = full cutover. The split is per REQUEST, not per user.

Required range: 0 <= x <= 100
description
string | null
Maximum string length: 200
Example:

"switched after eval ev_123 (90% win, -88% cost)"

gate_criterion_id
string | null

Turn the canary split into a supervised rollout: the online scorer judges BOTH arms with this criterion and the gate decides on corrected-rate CI bounds. The criterion must have been aligned against your labels.

gate_mode
enum<string>
default:recommend

recommend: verdicts surface on GET /v1/aliases (gate_verdict) and via alert notifications — you click the button. auto: the gate may repoint the alias itself (promote) or zero the canary (roll back), always audited with the numbers. Auto requires an ALIGNED criterion (TPR and TNR ≥ 90%): a judge may recommend with a weaker signal, but it doesn't get the keys.

Available options:
recommend,
auto
gate_min_samples
integer
default:50

No verdict of any kind until BOTH arms have this many scored requests.

Required range: 10 <= x <= 1000
gate_rollback_threshold
number
default:0.7

Roll back only when even the canary's OPTIMISTIC bound (CI upper) sits below this — confidently bad, not unluckily sampled.

Required range: 0 <= x <= 1
gate_window_hours
integer
default:168

Scores older than this don't count toward the verdict.

Required range: 1 <= x <= 720
require_evidence
boolean

Omitted = leave the alias's existing policy alone (a plain repoint can't quietly switch the policy off); false on create. With it on, a PUT that routes traffic to a model it isn't already reaching must be backed by a finished comparison in this workspace, within the last 30 days, whose candidate win-rate CI lower bound clears 50% against the model traffic is leaving. Refusals are 412.

override_reason
string | null

The audited escape hatch for an evidence refusal: a written justification of at least 10 characters lets the repoint through and writes an audit event naming the actor, both models, and the reason. Omitted or blank is not an override.

Response

The alias.

id
string
name
string

The name you put in model.

Example:

"support-bot"

target_model
string

The model this resolves to today.

canary_model
string | null
canary_percent
integer

0–100. Share of requests routed to canaryModel.

description
string | null
created_at
string<date-time>
updated_at
string<date-time>
gate_criterion_id
string | null
gate_mode
enum<string>
Available options:
recommend,
auto
gate_verdict
object | null

The last gate evaluation: {decision: promote|rollback|hold, reason, canary: {model, rate, ci, judged}, incumbent: {...}, acted}.

gate_verdict_at
string<date-time> | null
gate_min_samples
integer

No gate verdict until both canary arms have this many scored samples in the window.

gate_rollback_threshold
number

Roll back only when even the canary's optimistic bound (CI upper) sits below this corrected pass rate.

gate_window_hours
integer

Scores older than this do not count toward the verdict.

model_version_id
string | null

The model version this alias currently serves, when it points at a trained version (null for raw catalog models). Repoint to an older version to roll back.

require_evidence
boolean

Evidence policy: with this on, a repoint that would send traffic to an unproven model is refused with 412 unless a passing, in-window comparison exists (or an audited override_reason is given).

last_evidence_run_id
string | null

The eval run that authorized the current routing. Null when the routing predates the policy or went through as an audited override.