Skip to content

Routing Policies

fallback/weighted/latency/auto とオーケストレーター(cascade/parallel)の作成・一覧・更新・削除。呼び出しは model:"orch/<slug>"(policy/<slug> エイリアス)。

ルーティングポリシー管理エンドポイントは、ダッシュボードのセッショントークン(ログイン済みの JWT)で認証します — Authorization: Bearer <JWT>。これらは SDK 互換のエンドポイントではなく、ダッシュボード管理用 API です。呼び出し時のポリシーの動作はルーティングポリシー機能ドキュメントを参照して ください。

この CRUD API は常に動作しますが、orch/<slug>policy/<slug>)の呼び出しには運用ゲートが有効になっている必要があります — 既存 4 タイプは routing.policies_enabled(デフォルト on)、cascadeparallel routing.orchestrators_enabled(ベータ、デフォルト off)。ゲートが off の状態での呼び出しは 400 を返します。

一覧・作成#

GET/v1/routing-policies
POST/v1/routing-policies
パラメータ必須説明
slugstring必須呼び出し用の識別子。パターン ^[a-z0-9][a-z0-9-]{0,62}$"policy/<slug>" として使われます。ユーザーごとに一意(重複時は 409)。
display_namestring必須表示名。1〜100 文字。
policy_typestring必須fallbackweightedlatencyautocascadeparallel のいずれか。auto はプール内で意図(カテゴリ)ごとにベンチマークスコア最上位のモデルを自動選択します(selected_smart)。cascadeparallel はオーケストレーター(ベータ)— 詳細は機能ドキュメント参照。
entriesarray必須モデルエントリ 1〜10 個。フィールドは下表参照。cascade では低価格→高性能のティア順、parallel では並列ワーカープールです。
configobject任意オーケストレーション・パラメータ(JSON DSL):cascade(hard_categories・judge_model・response_check)、parallel(deep_categories・synthesis)、共通の routing_prefslimits。構造は機能ドキュメント参照。
org_idstring任意組織共有 — 自分が所属する組織の UUID。設定すると組織メンバーが呼び出せ、作成者と組織の owner/admin が編集・削除できます。未設定(または空文字列)なら個人用。
パラメータ必須説明
modelstring必須ルーティング先のモデル ID。実在するアクティブなモデルであること(1〜100 文字)。
weightinteger任意重み 1〜10000。weighted タイプでのみ意味を持ちます。
retriesinteger任意同じエントリの繰り返し回数 0〜3(デフォルト 0)。fallback タイプでのみ意味を持ちます。

エントリには、実在するアクティブな単価課金の leaf モデルだけを指定できます。他のポリシー (policy/…)、現行ルーティング親(benchmark_smartanalytics_smartperfect)、廃止済みの親(pleum-smartpleum-perfect)は 400 で拒否され、存在しない・非アクティブなモデルも 400 になります。

POST は成功時に 201 を、slug がすでに存在する場合は 409 を返します。 GET /v1/routing-policies {items: [...], total: n} を新しい順で返します。

create policy
curl https://apirouter.pleum.ai/v1/routing-policies \
  -H "Authorization: Bearer <JWT>" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "prod-chat",
    "display_name": "Prod Chat",
    "policy_type": "fallback",
    "entries": [
      {"model": "claude-sonnet-4-6", "retries": 1},
      {"model": "gpt-4o", "retries": 0},
      {"model": "gpt-4o-mini", "retries": 0}
    ]
  }'
response
{
  "id": "1f0a4c2e-...",
  "slug": "prod-chat",
  "display_name": "Prod Chat",
  "policy_type": "fallback",
  "entries": [
    {"model": "claude-sonnet-4-6", "retries": 1},
    {"model": "gpt-4o", "retries": 0},
    {"model": "gpt-4o-mini", "retries": 0}
  ],
  "is_active": true,
  "created_at": "2026-07-01T09:00:00Z",
  "updated_at": "2026-07-01T09:00:00Z"
}

更新・削除#

PATCH/v1/routing-policies/{policy_id}
DELETE/v1/routing-policies/{policy_id}

PATCH は送信したフィールドのみ更新します(display_namepolicy_typeentriesis_active)。slug は変更できません。自分の 所有でない(または存在しない)ポリシーは 404。DELETE {"ok": true} を返します。is_active: false にすると、削除せずに呼び出しだけを止められます。

deactivate policy
curl -X PATCH https://apirouter.pleum.ai/v1/routing-policies/1f0a4c2e-... \
  -H "Authorization: Bearer <JWT>" \
  -H "Content-Type: application/json" \
  -d '{"is_active": false}'