Skip to main content

Model Routes Commands

See Model Routes module docs for permissions and data model.

soat list-model-routes

List model routes

  • Method: GET
  • Path: /api/v1/model-routes

Usage

soat list-model-routes

Options

--project-id

Project ID (required if not using project key auth)

  • Source: query
  • Required: no
  • Type: string
  • Example: proj_V1StGXR8Z5jdHi6B
--limit

Maximum number of results to return

  • Source: query
  • Required: no
  • Type: integer
  • Default: 50
--offset

Number of results to skip

  • Source: query
  • Required: no
  • Type: integer
  • Default: 0

soat create-model-route

Create a model route

  • Method: POST
  • Path: /api/v1/model-routes

Usage

soat create-model-route --name <string> --targets <array<object>>

Options

--project-id

Project ID (required if not using project key auth)

  • Source: body
  • Required: no
  • Type: string
  • Example: proj_V1StGXR8Z5jdHi6B
--name

Human-readable name, unique per project

  • Source: body
  • Required: yes
  • Type: string
  • Example: primary-with-fallback
--targets

Ordered failover targets. Position is priority: target 0 is tried first, and a retryable failure falls through to the next target.

  • Source: body
  • Required: yes
  • Type: array<object>
--retry-on

Which failure classes are failover-eligible. A failure whose class is not listed (and every deterministic failure — 400-class, auth, content policy) fails the generation immediately instead of spending another target's budget.

  • Source: body
  • Required: no
  • Type: array<enum("provider_error", "timeout", "rate_limited")>
  • Default: ["provider_error","timeout","rate_limited"]
--failure-threshold

Consecutive retryable failures after which a target is skipped for cooldown_seconds. Breaker state is in-process per node and keyed by (provider, model), so it is shared by every route pointing at the same backend.

  • Source: body
  • Required: no
  • Type: integer
  • Default: 3
  • Example: 3
--cooldown-seconds

How long a tripped target is skipped before being probed again

  • Source: body
  • Required: no
  • Type: integer
  • Default: 60
  • Example: 60

soat get-model-route

Get a model route

  • Method: GET
  • Path: /api/v1/model-routes/{route_id}

Usage

soat get-model-route --route-id <string>

Options

--route-id

Model route ID

  • Source: path
  • Required: yes
  • Type: string
  • Example: route_V1StGXR8Z5jdHi6B

soat update-model-route

Update a model route

  • Method: PUT
  • Path: /api/v1/model-routes/{route_id}

Usage

soat update-model-route --route-id <string>

Options

--route-id

Model route ID

  • Source: path
  • Required: yes
  • Type: string
--name

New name (unique per project)

  • Source: body
  • Required: no
  • Type: string
--targets

Replacement target list (ordered)

  • Source: body
  • Required: no
  • Type: array<object>
--retry-on

  • Source: body
  • Required: no
  • Type: array<enum("provider_error", "timeout", "rate_limited")>
--failure-threshold

  • Source: body
  • Required: no
  • Type: integer
--cooldown-seconds

  • Source: body
  • Required: no
  • Type: integer

soat delete-model-route

Delete a model route

  • Method: DELETE
  • Path: /api/v1/model-routes/{route_id}

Usage

soat delete-model-route --route-id <string>

Options

--route-id

Model route ID

  • Source: path
  • Required: yes
  • Type: string