---
title: "Update Model Router"
method: PATCH
path: "/v1/routers/{id}"
tags: ["Model Router"]
---

# Update Model Router

`PATCH /v1/routers/{id}`

Update a Model Router configuration. Settings changes append a new version; name and description updates do not. Settings are merged with the current snapshot - omitted fields keep their existing values.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Runway-Version` '2024-11-06', required

## Request body

- object
  - `name` string — Display name. The slug is immutable and cannot be changed after creation.
  - `description` string, nullable
  - `settings` object — Nested merge: omitted settings fields keep their current values. When models is present, omitted models.mode or models.ids are preserved (sending only optimizeFor does not clear the model allowlist or credit ceiling).
    - `schemaVersion` 1 — Settings JSON schema version. Omit on write to use the current version; responses and stored snapshots always include it.
    - `models` object — When mode is allow_new_except, ids are excluded; when allowlist_only, ids are the only allowed values. Each id must be a known public video or image model name (unknown ids are rejected on create/update).
      - `mode` 'allow_new_except' | 'allowlist_only', required
      - `ids` string[], required
    - `maxCreditsPerGeneration` object — Optional per-modality credit caps, applied per generated output. Models whose estimated per-output cost exceeds the cap are excluded.
      - `video` integer
      - `image` integer
      - `audio` integer
    - `optimizeFor` 'cost' | 'latency' | 'quality' — Soft preference among eligible models: cost, latency, or quality.

## Response `200`

A named Model Router configuration.

- object
  - `id` string, uuid, required — The Model Router's primary key ID (UUID). Use it to manage this router via the API; use the slug to reference the router in generation requests.
  - `slug` string, required — Immutable slug used to reference this Model Router in generation requests (for example, production-video). Unique within the API project. The UUID id remains the canonical management identifier.
  - `name` string, required — Human-friendly Model Router display name shown in the dev portal. Mutable, and not used to reference the router in requests.
  - `description` string, nullable, required — An optional Model Router description.
  - `version` integer, required — Current settings version. Increments when settings change; name and description updates do not create a new version.
  - `settings` object, required
    - `schemaVersion` 1, required — Settings JSON schema version used when this snapshot was written.
    - `models` object — When mode is allow_new_except, ids are excluded; when allowlist_only, ids are the only allowed values. Each id must be a known public video or image model name (unknown ids are rejected on create/update).
      - `mode` 'allow_new_except' | 'allowlist_only', required
      - `ids` string[], required
    - `maxCreditsPerGeneration` object — Optional per-modality credit caps, applied per generated output. Models whose estimated per-output cost exceeds the cap are excluded.
      - `video` integer
      - `image` integer
      - `audio` integer
    - `optimizeFor` 'cost' | 'latency' | 'quality' — Soft preference among eligible models: cost, latency, or quality.
  - `createdAt` string, date-time, required — When the Model Router was created.
  - `updatedAt` string, date-time, required — When the Model Router was last updated.

---

[API](https://skmtc.net/runwayml/apis/runwayml-api.md) · [All operations](https://skmtc.net/runwayml/apis/runwayml-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/runwayml/runwayml-api/revisions/e7d9a59ac7b0/schema)
