---
title: "Create, update, or rename one virtual model"
method: PUT
path: "/admin/virtual-models"
tags: ["admin"]
---

# Create, update, or rename one virtual model

`PUT /admin/virtual-models`

## Request body

- AdminUpsertVirtualModelRequest
  - `description` string
  - `enabled` boolean
  - `old_source` string
  - `session_affinity` boolean — SessionAffinity keeps a detected session on the target that served it before. Omitted means enabled; false restores stateless balancing.
  - `source` string, required
  - `strategy` string
  - `target_model` string
  - `targets` AdminVirtualModelTargetRequest[]
    - `model` string
    - `provider` string
    - `weight` number
  - `user_paths` string[]

## Response `200`

OK

- VirtualmodelsView
  - `created_at` string
  - `description` string
  - `enabled` boolean
  - `kind` string
  - `managed` boolean
  - `model` string
  - `provider_name` string
  - `provider_type` string
  - `resolved_model` string
  - `scope_kind` string
  - `session_affinity` boolean
  - `source` string
  - `strategy` string
  - `targets` VirtualmodelsTarget[]
    - `model` string
    - `provider` string
    - `weight` number
  - `updated_at` string
  - `user_paths` string[]
  - `valid` boolean

## Other responses

- `204` — No-op access policy removed
- `400` — Bad Request
- `401` — Unauthorized
- `502` — Bad Gateway
- `503` — Service Unavailable

---

[API](https://skmtc.net/enterpilot/apis/gomodel-api.md) · [All operations](https://skmtc.net/enterpilot/apis/gomodel-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/enterpilot/gomodel-api/versions/4c27ea61fcfe/schema)
